【问题标题】:Looped checks in AnsibleAnsible 中的循环检查
【发布时间】:2017-11-07 01:25:42
【问题描述】:

例如,我有一个这样的列表:

vms:
  - name: "vm1"
    desc: "first"
    network:
      ip: "10.0.0.10"
      prefix: "16"
  - name: "vm2"
    desc: "second"
    network:
      ip: "10.0.0.11"
      prefix: "16"

我想在循环中使用 OpenNebula 创建虚拟机,并检查是否已经创建了虚拟机。我做了一个检查任务:

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

但我不知道如何使用循环 + 'when' 语句正确执行“创建 VM”任务。

【问题讨论】:

标签: loops automation ansible conditional


【解决方案1】:

感谢@Konstantin Suvorov 的评论! 这是我的案例的答案:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 2022-06-10
    • 1970-01-01
    • 2022-12-01
    • 2019-04-06
    • 1970-01-01
    相关资源
    最近更新 更多