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.
この問題を解決するためのより効率的な方法はありますか?