Ansible 和 Jinja2 模板 - vars .yml 添加
Ansible & Jinja 2 templates - vars .yml additions
首先使用 Ansible,我正在尝试做一件相对基础的事情。我创建了一个 Jinja2 模板来输出 Nexus 交换机的配置。它似乎工作正常。我遵循的文件夹结构是,顶级目录是 'role',该目录中是 'tasks'、'templates' 和 'vars' 的子目录。在 'vars' 目录下,我有一个名为 main.yml 的文件,据我所知应该如此。我想要的是包含各种不同元素的多个 vars 文件,这样我就可以使整个事情更加模块化。
以下是我目前的一些配置:
剧本我运行在顶层目录:
---
- name: Apply tor role
gather_facts: no
hosts: localhost
roles:
- tor
tor/tasks/main.yml文件
- name: Generate Configs
template: src={{ item.profile }}.j2 dest=staging/drc/{{ item.hostname }}/{{ item.hostname }}.cfg
with_items: "{{ switches }}"
以及 vars 目录中 main.yml 文件的片段:
---
switches:
- hostname: 5K01
profile: nxos_template
mgmt_ip: 10.20.90.9/24
vlans:
- {vlan_name: LegacyData, vlan_number: '5'}
- {vlan_name: Voice, vlan_number: '20'}
- {vlan_name: Data_Center, vlan_number: '50'}
- {vlan_name: Vmotion, vlan_number: '51'}
- {vlan_name: Citrix, vlan_number: '52'}
- {vlan_name: Citrix_XEN, vlan_number: '56'}
- {vlan_name: Citrix_Green_Infrastructure, vlan_number: '61'}
- {vlan_name: Citrix_Red_Ingrastructure, vlan_number: '62'}
- {vlan_name: Citrix_Green_XenApp, vlan_number: '63'}
- {vlan_name: Citrix_Yellow, vlan_number: '64'}
- {vlan_name: Citrix_Red_Desktops, vlan_number: '68'}
- {vlan_name: Zerto-VRA-Network, vlan_number: '90'}
- {vlan_name: Management, vlan_number: '92'}
- {vlan_name: PCI_FW_Intermediate_Network, vlan_number: '121'}
features:
- nxapi
- interface-vlan
- hsrp
- lacp
- vpc
- eigrp
- npiv
- fcoe
- fport-channel-trunk
- dhcp
- fex
- lldp
我想删除 vlans: dict 到另一个名为 vlans.yml 的 vars 文件。我想我会把它放在与当前 main.yml vars 文件相同的目录中,然后在某处调用 vlans.yml 文件。我试过使用 'include_vars:' 选项,但它不会,特别是当它与 'template:' 操作在同一块中使用时给我一个错误。
回答你的问题,是的。您可以毫无问题地将这些信息移动到新文件中。
假设您有一个 main.yml 和 vlans.yml vars 文件,这是您发布的剧本:
---
- name: Apply tor role
gather_facts: no
hosts: localhost
roles:
- tor
这应该是您的文件结构:
$ tree roles/
roles/
└── tor
├── tasks
│ └── main.yml
└── vars
├── main.yml
└── vlans.yml
对于您的角色 tor
,您需要导入 vlans.yml
变量:
- name: include vlans variable file
include_vars: vars/vlans.yml
- name: Generate Configs
template: src={{ item.profile }}.j2 dest=staging/drc/{{ item.hostname }}/{{ item.hostname }}.cfg
with_items: "{{ switches }}"
首先使用 Ansible,我正在尝试做一件相对基础的事情。我创建了一个 Jinja2 模板来输出 Nexus 交换机的配置。它似乎工作正常。我遵循的文件夹结构是,顶级目录是 'role',该目录中是 'tasks'、'templates' 和 'vars' 的子目录。在 'vars' 目录下,我有一个名为 main.yml 的文件,据我所知应该如此。我想要的是包含各种不同元素的多个 vars 文件,这样我就可以使整个事情更加模块化。
以下是我目前的一些配置:
剧本我运行在顶层目录:
---
- name: Apply tor role
gather_facts: no
hosts: localhost
roles:
- tor
tor/tasks/main.yml文件
- name: Generate Configs
template: src={{ item.profile }}.j2 dest=staging/drc/{{ item.hostname }}/{{ item.hostname }}.cfg
with_items: "{{ switches }}"
以及 vars 目录中 main.yml 文件的片段:
---
switches:
- hostname: 5K01
profile: nxos_template
mgmt_ip: 10.20.90.9/24
vlans:
- {vlan_name: LegacyData, vlan_number: '5'}
- {vlan_name: Voice, vlan_number: '20'}
- {vlan_name: Data_Center, vlan_number: '50'}
- {vlan_name: Vmotion, vlan_number: '51'}
- {vlan_name: Citrix, vlan_number: '52'}
- {vlan_name: Citrix_XEN, vlan_number: '56'}
- {vlan_name: Citrix_Green_Infrastructure, vlan_number: '61'}
- {vlan_name: Citrix_Red_Ingrastructure, vlan_number: '62'}
- {vlan_name: Citrix_Green_XenApp, vlan_number: '63'}
- {vlan_name: Citrix_Yellow, vlan_number: '64'}
- {vlan_name: Citrix_Red_Desktops, vlan_number: '68'}
- {vlan_name: Zerto-VRA-Network, vlan_number: '90'}
- {vlan_name: Management, vlan_number: '92'}
- {vlan_name: PCI_FW_Intermediate_Network, vlan_number: '121'}
features:
- nxapi
- interface-vlan
- hsrp
- lacp
- vpc
- eigrp
- npiv
- fcoe
- fport-channel-trunk
- dhcp
- fex
- lldp
我想删除 vlans: dict 到另一个名为 vlans.yml 的 vars 文件。我想我会把它放在与当前 main.yml vars 文件相同的目录中,然后在某处调用 vlans.yml 文件。我试过使用 'include_vars:' 选项,但它不会,特别是当它与 'template:' 操作在同一块中使用时给我一个错误。
回答你的问题,是的。您可以毫无问题地将这些信息移动到新文件中。
假设您有一个 main.yml 和 vlans.yml vars 文件,这是您发布的剧本:
---
- name: Apply tor role
gather_facts: no
hosts: localhost
roles:
- tor
这应该是您的文件结构:
$ tree roles/
roles/
└── tor
├── tasks
│ └── main.yml
└── vars
├── main.yml
└── vlans.yml
对于您的角色 tor
,您需要导入 vlans.yml
变量:
- name: include vlans variable file
include_vars: vars/vlans.yml
- name: Generate Configs
template: src={{ item.profile }}.j2 dest=staging/drc/{{ item.hostname }}/{{ item.hostname }}.cfg
with_items: "{{ switches }}"