Мне нужно сделать несколько изменений в моей сети за относительно короткий промежуток времени, поэтому, чтобы сэкономить время, я решил использовать Ansible.
У меня есть несколько типов серверов в разных средах, поэтому нужно перебиратьв каждой среде и на каждом типе сервера и установите новый IP-адрес, подсеть и т. д.
Например, в ENV1 у меня может быть Web & DB, например, с ENV1 на 192.168.64, а Web - .10, а DB - .20.
Поэтому, используя Ansible и определяя два списка и используя их во вложенном цикле, я ожидал, что смогу сделать это в зависимости от среды и типа сервера.
Я мог бы использоватьпеременную командной строки и установите подсеть среды для каждой из них, но если я могу избежать этого, я бы хотел.
Playbook.
---
- hosts: web:db
become: yes
vars_files:
- vars/network-vars.yaml
tasks:
- name: Update the ifcfg-eth0 file
template:
src: templates/ifcfg-template.yaml
dest: /etc/sysconfig/network-scripts/ifcfg-eth0.new
owner: root
group: root
mode: 0644
when: item.type in group_names and item.env in group_names
with_items:
- "{{ ips }}"
- "{{ subnets }}"
Файл Vars:
---
- netmask: 255.255.255.0
- network: 192.168.64
- dns1: 192.168.64.254
- search: lab.int
- subnets:
- { env: "env1", net: "192.168.64.2" }
- ips:
- { type: "web", ip: "10" }
- { type: "db", ip: "20" }
СБОЙ!=> {"msg": "Ошибка условной проверки" item.type в group_names и "{{env}}" в group_names ". Ошибка: ошибка при вычислении условия (item.type в group_names и '{{env})} 'in group_names):' env 'не определено
Я пробовал with_nested, но получаю похожую ошибку. Я почти исчерпал чтение страниц руководства и поиск решения, поэтому я и решилЯ здесь.
TIA.