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
广告
将在 10 秒后关闭
bannerAds