Ansible - 强制任务运行两次

时间:2021-04-06 15:15:02

标签: ansible openstack

我想在项目中运行相同的任务两次。在剧本中,我包含了创建网络并在其中创建子网的任务。这些任务是循环执行的,但我希望创建的网络始终具有相同的名称。

我使用 Ansible AWX / Tower 运行剧本

主要剧本:

...
- name: Networks
  include_tasks: Networks.yaml
  when: *condition when to import*
  loop: *the object to iterate over*
  loop_control:
    extended: yes
...

Networks.yaml:

- name: Creating Network
  os_network:
    name: Example_name
    provider_network_type: vlan
    provider_physical_network: default
    provider_segmentation_id: *vlan_id*
    mtu: *mtu*
    shared: false
    state: present
  register: net

- name: Creating subnet
  os_subnet:
    state: present
    network_name: "{{ net.id }}"
    name: Example_name1
    cidr: *cidr*
    allocation_pool_start: '{{ start[ansible_loop.index0]|string }}'
    allocation_pool_end: '{{ end[ansible_loop.index0]|string }}'
    gateway_ip: *gateway*
    ip_version: 4

当我运行上述 playbook 时,在循环的第一次迭代期间,通常会创建网络(在 Create Network 任务上更改状态)和附加到它的子网,而在第二次迭代中,Create Network 任务具有状态正常,并且不会创建与前一个同名的第二个网络。另一方面,第二次迭代中的子网替换了之前创建的网络中的子网,应该将其添加到新创建的网络中。

所以看起来在第二次迭代中,ansible 不会创建第二个网络,因为已经存在一个具有该名称的网络

我希望“创建网络”任务始终运行并创建具有相同名称的新网络(使用 Openstack GUI 可以在存在不同子网的情况下如此)。

是否可以使用相同的网络名称多次运行相同的任务?

0 个答案:

没有答案
相关问题