Я пытаюсь создать задачу с Ansible (=> 2.5), которая будет настраивать сетевые интерфейсы, такие как:
- name: Set up network interfaces addr
interfaces_file:
dest: "/etc/network/interfaces.d/{{ item.device }}"
iface: "{{ item.device }}"
state: present
option: address
value: "{{ item.addr }}"
with_items:
- "{{ network }}"
when: item.addr is defined
notify: Restart interface
- name: Set up network interfaces netmask
interfaces_file:
dest: "/etc/network/interfaces.d/{{ item.device }}"
iface: "{{ item.device }}"
state: present
option: netmask
value: "{{ item.netmask }}"
with_items:
- "{{ network }}"
when: item.netmask is defined
notify: Restart interface
- name: Set up network interfaces dns
interfaces_file:
dest: "/etc/network/interfaces.d/{{ item.device }}"
iface: "{{ item.device }}"
state: present
option: dns-nameservers
value: "{{ item.dns }}"
with_items:
- "{{ network }}"
when: item.dns is defined
notify: Restart interface
- name: Set up network interfaces dns-search
interfaces_file:
dest: "/etc/network/interfaces.d/{{ item.device }}"
iface: "{{ item.device }}"
state: present
option: dns-search
value: "{{ item.dns_search }}"
with_items:
- "{{ network }}"
when: item.dns_search is defined
notify: Restart interface
Это работает.Но, с моей точки зрения, это не так чисто ... Так что я пытаюсь использовать 2 цикла ... Что явно не работает.
- name: Set up network interfaces
interfaces_file:
dest: "/etc/network/interfaces.d/{{ item.iDunnoWhatToPutHere }}"
iface: "{{ item.iDunnoWhatToPutHere }}"
state: present
option: {{ item.option }}
value: "{{ item.value }}"
with_together:
- "{{ network }}"
- { option: address, value: item.0.addr }
- { option: netmask, value: item.0.netmask }
- { option: dns-nameservers, value: item.0.dns }
when: item.dns_search is defined
notify: Restart interface
[...]
Редактировать: Это хорошо, но строго.Я должен зацикливаться на vars, который должен зацикливаться на каждой опции и ее значении для любых опций.Потому что у меня также есть параметры для моста, такие как "vlan_raw_device, bridge_ports, bridge_stp ...".Так что он должен просто слепо зацикливаться на диктовке опций и значений.
Edit2: с переменной сетью
network:
- name: admin
device: admin
method: static
address: X.X.X.X/X
netmask: X.X.X.X
up:
net: X.X.X.X/X
gateway: X.X.X.X/X
down:
net: X.X.X.X/X
gateway: X.X.X.X/X
Почему я все это пытаюсь?
- Потому что мне нужно изменить все значения, если оно должно быть изменено.
- Потому что я хочу перезапустить (ifup, ifdown) только интерфейс, который
- Потому что я удивлен, что у меня естьиспользовать несколько раз один и тот же модуль.
Можете ли вы, ребята, помочь мне узнать, как это использовать?Может быть, это невозможно?
Спасибо, ребята!