我想在项目中运行相同的任务两次。在剧本中,我包含了创建网络并在其中创建子网的任务。这些任务是循环执行的,但我希望创建的网络始终具有相同的名称。
我使用 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 可以在存在不同子网的情况下如此)。
是否可以使用相同的网络名称多次运行相同的任务?