Я новичок в Ansible (ansible 2.9.6) и недавно начал работать над дизайном / структурой каталогов для проекта. Моя задача - настроить оборудование (в частности, разные устройства Cisco) в тестовой лаборатории для поддержки тестовых случаев.
Я хотел бы иметь один файл site.yml, содержащий ВСЕ 20+ тестов. Идея заключалась бы в том, что пользователь на основе параметров мог бы выполнить все, несколько или один тестовый пример для определенного типа устройства c поставщика (Cisco 4507, Cisco 3850 и т. Д.) Через site.yml.
Изначально я структурировал site.yml как одну игру с 20 задачами, которые включали роль для каждого тестового примера (ntp, lldp, vlans и т. Д.) И помечены соответствующим образом. Однако мне не удалось использовать разные хосты для каждой задачи (тестового примера), которая необходима. Каждый тестовый пример должен использовать собственное подмножество устройств. Вот пример:
ansible -playbook -i inventory / network_staging site.yml --tags = ntp -e type = C4507
~ /site.yml
---
- name: Test Cases
hosts: all
gather_facts: false
connection: local
tasks:
- name: ntp role
hosts: "{{type}}_ntpTC"
include_role:
name: ntp
tags:
- ntp
- name: vlan role
hosts: "{{type}}_vlanTC"
include_role:
name: vlan
tags:
- vlan
Мой текущий site.yaml имеет несколько воспроизведений, каждая из которых представляет собой тестовый пример и использует соответствующие хосты. Однако мне нужно будет использовать разные устройства для выполнения задач из группы хоста, в зависимости от роли / тестового примера. Вот пример:
ansible -playbook -i inventory / network_staging site.yml --tags = ntp, vlan -e type = C4507
~ / site.yml
---
- name: NTP Test Case
hosts: "{{type}}_ntpTC"
gather_facts: false
connection: local
tasks:
- name: ntp role
include_role:
name: ntp
tags:
- ntp
- name: VLAN Test Case
hosts: "{{type}}_vlanTC"
gather_facts: false
connection: local
tasks:
- name: vlan role
include_role:
name: vlan
tags:
- vlan
~ / inventory / network_staging / hosts / cisco
###main.yml inventory list
## IPs defined in ~/inventories/network_staging/host_vars/SW6.yml SW7.yml and SW8.yml
##Cisco 4507 Test Cases
#NTP Test Case
[C4507_ntpTC]
SW8
#VLAN Test Case
[C4507_vlanTC]
SW7
SW6
~ / roles / ntp /tasks/main.yml
---
# Tasking for NTP Test Case
- name: import ntp.yml
tags:
- ntp
~ / roles / ntp / tasks / ntp.yml
---
- name: show NTP
ios_command:
commands:
- <insert ntp show status commands on SW8 here….>
~ / роли /vlan/tasks/main.yml
---
# Tasking for VLAN Test Case
- name: import vlan.yml
tags:
- vlan
~ / roles / vlan / tasks / vlan.yml
---
- name: configure VLAN SW7
ios_command:
commands:
- <insert vlan access switchport configuration here for SW7….>
- name: configure VLAN SW6
ios_command:
commands:
- <insert vlan access switchport configuration here for SW6….>
- <insert ping SW7 here>
ВОПРОС 1: Могу ли я использовать разные хосты для задач в одной игре в моем первоначальном дизайне?
ВОПРОС 2: Является ли мой текущий дизайн лучшим дизайном для того, что я пытаюсь выполнить sh?
ВОПРОС 3: В моем файле ролей / <> / tasks / <>. Yml для моего текущего проекта мне нужно выполнить другую задачу на разных устройствах, чтобы выполнить sh роль тестового примера. Я определил свою группу инвентаризации хоста, которая включает все устройства, которые потребуются, но как мне указать конкретный хост c для определенной задачи?