0

Ansibleを使用してOpenNebulaにいくつかの仮想マシンをデプロイしたいと考えています。たとえば、コマンド/シェルモジュールで vms を作成します ( Ansible にopennebulaモジュールがなく、それを記述する十分な資格がないため)。

- name: Create VMs
  become_user: oneadmin
  command: onevm create --name "{{ item.1.name }}"
  with_items: "{{ vms }}"

しかし、もちろん、同じ名前の vm が既に作成されているかどうかを確認する必要があり、私のソリューションは次のようになります。

- name: Check what VMs already created
  become_user: oneadmin
  ignore_errors: yes
  shell: onevm list --csv | grep -q "{{ item.name }}"
  register: created_vms
  with_items: "{{ vms }}"
  loop_control:
    label: "Check if VM {{ item.name }} created"

- name: Create VMs
  become_user: oneadmin
  command: onevm create --name "{{ item.1.name }}"
  when: item.0|failed
  with_together:
    - "{{ created_vms.results }}"
    - "{{ vms }}"
  loop_control:
    label: "Create VM {{ item.1.name }}"

それ自体が面倒ですが、さらに失敗すると、Ansible で面倒な出力が表示されます。

TASK [create-vms : Check what VMs already created] 
************************************************
failed: [10.1.48.190] (item=Check if VM audit created) => {"changed": true, "cmd": "onevm list --csv | grep -q \"audit\"", "delta": "0:00:00.806504", "end": "2017-06-28 12:49:00.808454", "failed": true, "item": lalalalala etc.

この問題を解決するためのより効率的な方法はありますか?

4

3 に答える 3