Ansible循环创建docker网络



假设我的docker网络定义在一个变量中,例如:

docker_networks:
- name: default
driver: bridge
- name: proxy
driver: bridge
ipam_options:
subnet: '192.168.100.0/24'
- name: socket_proxy
driver: bridge
ipam_options:
subnet: '192.168.101.0/24'

我该如何通过循环来创建这些docker网络?

我尝试了以下操作,但是如果没有定义子网,ipam_config参数会导致它失败:

- name: Create networks
docker_network:
name: '{{ item.name }}'
driver: '{{ item.driver | default(omit) }}'
ipam_config:
- subnet: '{{ item.ipam_options.subnet | default(omit) }}'
loop: '{{ docker_networks }}'

如果修改docker_networks变量,使ipam_options键的值为字典列表:

docker_networks:
- name: proxy
driver: bridge
ipam_options:
- subnet: '192.168.100.0/24'
- name: socket_proxy
driver: bridge
ipam_options:
- subnet: '192.168.101.0/24'
- name: no_subnet
driver: bridge

然后你可以这样重写你的任务:

- name: Create networks
community.docker.docker_network:
name: '{{ item.name }}'
driver: '{{ item.driver | default(omit) }}'
ipam_config: "{{ item.ipam_options | default(omit) }}"
loop: '{{ docker_networks }}'

(我也只是将ipam_options密钥重命名为ipam_config,所以它与参数名称匹配。(

最新更新