ansible-playbook内部也可以使用YAML的合并语法!可以在Cisco ios_command模块等地方使用
首先
由于Ansible的playbook是用YAML格式编写的,因此可以使用以下的YAML合并表示法(<< : &, << : *)来表示重复的行等。这样可以消除重复,使写作更简洁。
以下是通过ios_command模块在Cisco设备上使用的例子。
另外,请参考同事的文章来了解有关Ansible中Cisco相关模块的使用方法。
环境
-
- Ansible version:2.1.0 (gitでインストール)
- CentOS6.7 / OSX Yosemite
[root@ansible cisco]# ansible --version
ansible 2.1.0 (devel 81788e627d) last updated 2016/03/14 06:41:49 (GMT +000)
lib/ansible/modules/core: (detached HEAD c86a0ef84a) last updated 2016/03/14 02:09:35 (GMT +000)
lib/ansible/modules/extras: (detached HEAD 33a557cc59) last updated 2016/03/14 02:09:54 (GMT +000)
config file = /opt/cisco/ansible.cfg
configured module search path = Default w/o overrides
Cisco
IOS version 12.2
Catalyst3560-E
インベントリファイル
hosts
[cisco]
192.168.1.1
192.168.1.2
[cisco:vars]
cisco_enable_secret=cisco
ansible_user=ansible
ansible_password=ansible
---
- hosts: cisco
gather_facts: no
tasks:
- name: sh run by cisco ios_command module
local_action:
module: ios_command
commands: sh run
<< : &IOS_INFO
host: "{{ inventory_hostname }}"
username: "{{ ansible_user }}"
password: "{{ ansible_password }}"
authorize: true
auth_pass: "{{ cisco_enable_secret }}"
register: result
- debug: var=result.stdout_lines
- name: sh int by cisco ios_command module
local_action:
module: ios_command
commands: sh int
<< : *IOS_INFO
register: result
- debug: var=result.stdout_lines