Ansible, использование переменных для изменения хостов и портов - PullRequest
0 голосов
/ 31 марта 2020

Мне нужно сделать много изменений в наших портах коммутаторов HP. Мне нравится ansible, потому что это быстро, когда меняются одни и те же вещи в куче переключателей. На этот раз мне нужно сделать одно и то же изменение, но в разных портах в каждом коммутаторе.

в основном, мне нужно сделать это:

int F14,F15,F16
no power
wr mem

Порты будут отличаться в зависимости от коммутатора. Так что, если у меня есть список, подобный этому:

SW-IT-CH-1  F1,F2,F3
SW-IT-CH-2 A3,A6,A9,A2
SW-IT-CH-5 C1,D4,E8,F19

Есть ли способ создать файл переменных и использовать книгу воспроизведения и выполнить все изменения за один снимок?

У меня есть эта книга воспроизведения:

---
- name: Aruba Config Change
  hosts: '{{ hosts }}'
  gather_facts: no
  vars:
     ansible_network_os: aruba
     ansible_user: "{{ lookup('env', 'USER') }}"
     ansible_ssh_pass: "{{ lookup('file', '~/.sshpass') }}"
  connection: local
  tasks:
    - name: Add to NETWORK group
      ignore_errors: yes
      aruba_config:
          lines:
          - no power 
          parents: interface '{{ ports }}'

Я думал о том, чтобы иметь файл json, содержащий переменные (переменные. json), подобные этому

'{"hosts":"SW-IT-CH-1","ports":"F14,F15,F16,F17,F18,F19"}'
'{"hosts":"SW-IT-CH-2","ports":"F14,F15,F16,F17,F18,F19"}'

и выполнить ansible следующим образом:

ansible-playbook playbook.yml -e "@variables.json"

но безуспешно ...

есть идеи?

Спасибо!

1 Ответ

0 голосов
/ 01 апреля 2020

Хорошо, я нашел решение:

Типичный файл инвентаризации может содержать переменные.

[SW]
 SW-IT-CH-3 hosts=SW-IT-CH-3 ports=F14,F15,F16,F17,F18
 SW-IT-CH-2 hosts=SW-IT-CH-2 ports=F14,F15,F16,F17,F18

Нет необходимости иметь файл переменных. Затем просто запустите playbook, включая файл инвентаря:

 ansible-playbook playbook.yml -e hosts=SW -i /tmp/inventory.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...