【问题标题】:Ansible Debug msg redirection as a fileAnsible Debug msg 重定向作为文件
【发布时间】:2019-04-22 14:51:17
【问题描述】:

我正在寻找一些指导来解决我无法将 Ansible 调试输出保存或重定向到 JSON 或 md 文件的问题。

    - debug:
        msg: 
         - "{{ item.results['show ip route'].splitlines() }}"  
         - "{{ item.results['show ip route summary'].splitlines() }}"
         - "{{ item.results['show ip route 0.0.0.0'].splitlines() }}"

      loop:
        - "{{ out2 }}"

上面提到的调试模块在我剧本的最后运行。该剧本主要使用“napalm_cli”网络模块从设备收集少量输出。 “napalm_cli”模块输出的格式不是很好,所以,我必须使用分割线。

现在我正在尝试将以下输出另存为文件

ok: [lab1-r1] => (item={'failed': False, u'changed': False, u'results': {u'show ip route': u'Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP\n       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area \n       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2\n       E1 - OSPF external type 1, E2 - OSPF external type 2\n       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2\n       ia - IS-IS inter area, * - candidate default, U - per-user static route\n       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP\n       a - application route\n       + - replicated route, % - next hop override, p - overrides from PfR\n\nGateway of last resort is not set\n\n      172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks\nC        172.16.10.0/24 is directly connected, GigabitEthernet0/1\nL        172.16.10.1/32 is directly connected, GigabitEthernet0/1', u'show ip route summary': u'IP routing table name is default (0x0)\nIP routing table maximum-paths is 32\nRoute Source    Networks    Subnets     Replicates  Overhead    Memory (bytes)\nconnected       0           2           0           136         360\nstatic          0           0           0           0           0\napplication     0           0           0           0           0\ninternal        1                                               440\nTotal           1           2           0           136         800', u'show ip route 0.0.0.0': u'% Network not in table'}}) => {
"msg": [
    [
        "Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP", 
        "       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area ", 
        "       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2", 
        "       E1 - OSPF external type 1, E2 - OSPF external type 2", 
        "       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2", 
        "       ia - IS-IS inter area, * - candidate default, U - per-user static route", 
        "       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP", 
        "       a - application route", 
        "       + - replicated route, % - next hop override, p - overrides from PfR", 
        "", 
        "Gateway of last resort is not set", 
        "", 
        "      172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks", 
        "C        172.16.10.0/24 is directly connected, GigabitEthernet0/1", 
        "L        172.16.10.1/32 is directly connected, GigabitEthernet0/1"
    ], 
    [
        "IP routing table name is default (0x0)", 
        "IP routing table maximum-paths is 32", 
        "Route Source    Networks    Subnets     Replicates  Overhead    Memory (bytes)", 
        "connected       0           2           0           136         360", 
        "static          0           0           0           0           0", 
        "application     0           0           0           0           0", 
        "internal        1                                               440", 
        "Total           1           2           0           136         800"
    ], 
    [
        "% Network not in table"
    ]
]
}

另外,我想去掉

之间的内容
ok: [lab1-r1] =>   napalm_cli non formatted output
"msg": [

任何想法或想法。

谢谢

NN

【问题讨论】:

    标签: ansible


    【解决方案1】:

    我相信你可能想要JSON callback(还有一个yaml,还有XMPP,还有a whole list of them)。启用它们的说明在the fine manual 中,但非常简短的版本是在调用ansible-playbook 时只定义一个环境变量:

    env ANSIBLE_STDOUT_CALLBACK=json ansible-playbook ...
    

    (如果您只想运行单个任务,它也适用于 ansible

    【讨论】:

    • 而且,虽然我回答了您的字面问题,但您也可以考虑将该内容写入文件,因为它似乎已经是 JSON,并完全绕过 debug: 的使用
    猜你喜欢
    • 2021-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多