Ansible-无法打印空vaiable
将变量复制到文件时遇到问题 我运行多个命令,并设置_事实。然后我尝试将信息复制到csv文件中 例如:Ansible-无法打印空vaiable,ansible,Ansible,将变量复制到文件时遇到问题 我运行多个命令,并设置_事实。然后我尝试将信息复制到csv文件中 例如: --- - name: Get Tunnel1 ip ios_command: commands: - show run int tunnel 1 | in ip add register: results_tunnel1 - set_fact: tunnel1: "{{ results_tunnel1.stdout[0].split(' ')
---
- name: Get Tunnel1 ip
ios_command:
commands:
- show run int tunnel 1 | in ip add
register: results_tunnel1
- set_fact:
tunnel1: "{{ results_tunnel1.stdout[0].split(' ') }}"
- name: Get Tunnel2 ip
ios_command:
commands:
- show run int tunnel 2 | in ip add
register: results_tunnel2
- set_fact:
tunnel2: "{{ results_tunnel2.stdout[0].split(' ') }}"
- name: Get Tunnel3 ip
ios_command:
commands:
- show run int tunnel 3 | in ip add
register: results_tunnel3
- set_fact:
tunnel3: "{{ results_tunnel3.stdout[0].split(' ') }}"
- name: save output to file per host
copy: content="{{ inventory_hostname }};{{ tunnel1[2] }};{{ tunnel2[2] }};{{ tunnel3[2] }}" dest="//home/output/ip_info.csv"
在测试机上,我使用的其中一个变量没有输出要保存的IP地址,因此变量出现“”
当它试图输出信息时,我得到一个错误:
"msg": "The task includes an option with an undefined variable. The error was: list object has no element
我猜我需要告诉它什么也不打印,或者说如果为空,另存为“空”
只是不确定我将如何实现这一点。您可以使用Jinja的过滤器来处理未定义的变量
根据剧本:
-主机:所有
收集事实:不
任务:
-调试:
msg:{{inventory_hostname};{tunnel1[2]| default('''')};{{tunnel2[2]| default(''')};{{{tunnel3[2]| default(''')}
这将产生以下结果:
PLAY [all] ********************************************************************************************************
TASK [debug] ******************************************************************************************************
ok: [localhost] => {
"msg": "localhost;;;"
}
PLAY RECAP ********************************************************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
如果我们设置一些值:
-主机:所有
收集事实:不
任务:
-调试:
msg:{{inventory_hostname};{tunnel1[2]| default('''')};{{tunnel2[2]| default(''')};{{{tunnel3[2]| default(''')}
变量:
隧道1:
-福
-酒吧
-巴兹
隧道二:
-棕色的
-狐狸
-跳跃
隧道3:
-结束
-懒惰的
-狗
它产生了一个概述:
PLAY [all] ********************************************************************************************************
TASK [debug] ******************************************************************************************************
ok: [localhost] => {
"msg": "localhost;baz;jumps;dog"
}
PLAY RECAP ********************************************************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
您可以使用Jinja的过滤器来处理未定义的变量
根据剧本:
-主机:所有
收集事实:不
任务:
-调试:
msg:{{inventory_hostname};{tunnel1[2]| default('''')};{{tunnel2[2]| default(''')};{{{tunnel3[2]| default(''')}
这将产生以下结果:
PLAY [all] ********************************************************************************************************
TASK [debug] ******************************************************************************************************
ok: [localhost] => {
"msg": "localhost;;;"
}
PLAY RECAP ********************************************************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
如果我们设置一些值:
-主机:所有
收集事实:不
任务:
-调试:
msg:{{inventory_hostname};{tunnel1[2]| default('''')};{{tunnel2[2]| default(''')};{{{tunnel3[2]| default(''')}
变量:
隧道1:
-福
-酒吧
-巴兹
隧道二:
-棕色的
-狐狸
-跳跃
隧道3:
-结束
-懒惰的
-狗
它产生了一个概述:
PLAY [all] ********************************************************************************************************
TASK [debug] ******************************************************************************************************
ok: [localhost] => {
"msg": "localhost;baz;jumps;dog"
}
PLAY RECAP ********************************************************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0