是否可以在本地打开文件并使用ansible将其推送到远程主机?

时间:2017-07-03 12:05:02

标签: ansible

我想知道是否可以这样做,因为我需要在交换机内运行ios命令来测试我的主/备份环境。

命令的副本就像下面这样:

tasks:

- name: capturing the command "show ip int br" on {{ inventory_hostname }}
  ios_command: 
    commands: 
      - sh ip int br | i up
    provider: "{{ cli }}"
  register: result
  tags: inft
- debug: var=result
  tags: result_debug


- name: copy interface status up to a temp file
  copy:
    content: "{{ result.stdout[0] }}"
    dest: "~/ANSIBLE/{{ inventory_hostname }}.cfg"
  tags: copy

这是文件的输出。

FastEthernet0/0            169.255.0.1     YES NVRAM  up                    up      
FastEthernet1/1            unassigned      YES unset  up                    up      
FastEthernet1/6            unassigned      YES unset  up                    up      
FastEthernet1/10           unassigned      YES unset  up                    up      
Vlan1                      unassigned      YES NVRAM  up                    up      

捕获命令后,我需要打开文件,逐行读取并运行ios命令" shutdown"像这样:

interface FastEthernet0/0
shutdown

interface FastEthernet0/1
shutdown

我正在寻找"脚本"和"期待"命令,但我的尝试都没有奏效。

2 个答案:

答案 0 :(得分:0)

with_lines正是您要找的。它遍历程序执行输出的每一行。

- shell: interface {{ item }} && shutdown
  with_lines: awk '{print $1}' ~/ANSIBLE/{{ inventory_hostname }}.cfg

上面的示例使用awk打印文件内容的第一列。

答案 1 :(得分:0)

我使用“with_file”解决了这个问题,注册了item.results [0] .item的内容并将其推送到设备,如下所示:

 - name: Looping file
   debug:
     msg: "{{ item }}"
   register: items
   with_file:
     - ~/ANSIBLE/{{ inventory_hostname }}.cfg
 - debug: var=items.results[0].item


 - name: Applying The Shutdown Template
   ios_config:
     lines:
       - "{{ items.results[0].item }}"
     provider: "{{cli}}"
   register: shut

运行剧本:

TASK [Looping file] *******************************************************************************************************************************
ok: [169.255.0.1] => (item=interface FastEthernet1/0 
shutdown
interface FastEthernet1/1 
shutdown
interface FastEthernet1/3 
shutdown
interface FastEthernet1/4 
shutdown
interface FastEthernet1/5 
shutdown
interface FastEthernet1/6 
shutdown) => {
"item": "interface FastEthernet1/0 \nshutdown\ninterface FastEthernet1/1       \nshutdown\ninterface FastEthernet1/3 \nshutdown\ninterface FastEthernet1/4 \nshutdown\ninterface FastEthernet1/5 \nshutdown\ninterface FastEthernet1/6 \nshutdown", 
"msg": "interface FastEthernet1/0 \nshutdown\ninterface FastEthernet1/1 \nshutdown\ninterface FastEthernet1/3 \nshutdown\ninterface FastEthernet1/4 \nshutdown\ninterface FastEthernet1/5 \nshutdown\ninterface FastEthernet1/6 \nshutdown"
}

TASK [debug] **************************************************************************************************************************************
ok: [169.255.0.1] => {
"items.results[0].item": "interface FastEthernet1/0 \nshutdown\ninterface FastEthernet1/1 \nshutdown\ninterface FastEthernet1/3 \nshutdown\ninterface FastEthernet1/4 \nshutdown\ninterface FastEthernet1/5 \nshutdown\ninterface FastEthernet1/6 \nshutdown"
}

TASK [Applying The Shutdown Template] *************************************************************************************************************
changed: [169.255.0.1]

TASK [debug] **************************************************************************************************************************************
ok: [169.255.0.1] => {
"shut1": {
    "banners": {}, 
    "changed": true, 
    "commands": [
        "interface FastEthernet1/0 ", 
        "shutdown", 
        "interface FastEthernet1/1 ", 
        "shutdown", 
        "interface FastEthernet1/3 ", 
        "shutdown", 
        "interface FastEthernet1/4 ", 
        "shutdown", 
        "interface FastEthernet1/5 ", 
        "shutdown", 
        "interface FastEthernet1/6 ", 
        "shutdown"
    ], 
    "updates": [
        "interface FastEthernet1/0 ", 
        "shutdown", 
        "interface FastEthernet1/1 ", 
        "shutdown", 
        "interface FastEthernet1/3 ", 
        "shutdown", 
        "interface FastEthernet1/4 ", 
        "shutdown", 
        "interface FastEthernet1/5 ", 
        "shutdown", 
        "interface FastEthernet1/6 ", 
        "shutdown"
    ]
}
}


 PLAY RECAP ****************************************************************************************************************************************
169.255.0.1                : ok=4    changed=1    unreachable=0    failed=0