我试图用.stdout显示几个命令--给出了混合输出和"item“。
它给我的物品是:
只是琴弦:
不名-a
正常运行时间
但不是这些命令的输出
这是一本有评论的不起作用的剧本:
- name: To Display === UPTIME and KERNEL Version ===
# - name: "To Display === {{ item }}"
command: "{{ item }}"
loop:
- uname -n
- uptime -p
- uname -r
# command: uname -n
# shell: uptime -p; uname -r; rpm -qa --last kernel
# register: OUTPUT
# - debug: msg="{{ OUTPUT.stdout('\n') }}"
# - debug: msg="{{OUTPUT.stdout}}"
# - debug: var="{{OUTPUT.stdout}}"
# shell: "{{item}}"
# with_items: ['hostname', 'whoami']
# - uptime -p
#
# - uname -r
# - rpm -qa --last kernel
...
发布于 2021-02-06 03:57:51
如果您只想在终端上打印命令结果的子集,而不使用一个或多个-v
标志,则可以重构您的剧本,以便使用JSON查询显示来自每个命令的标准输出。例如:
---
- name: display info
hosts: localhost
tasks:
- name: Display uptime and kernel info
shell: "{{ item }}"
with_items:
- uptime
- uname -n
- uname -r
register: output
- debug: msg="{{ output.results | json_query('[].stdout[]') }}"
这将产生类似于以下内容的输出:
PLAY [display info] **********************************************************************************
TASK [Gathering Facts] *******************************************************************************
ok: [localhost]
TASK [Display uptime and kernel info] ****************************************************************
changed: [localhost] => (item=uptime)
changed: [localhost] => (item=uname -n)
changed: [localhost] => (item=uname -r)
TASK [debug] *****************************************************************************************
ok: [localhost] => {
"msg": [
"22:48 up 4 days, 3:41, 2 users, load averages: 1.26 1.39 1.42",
"localhost.local",
"20.3.0"
]
}
PLAY RECAP *******************************************************************************************
localhost : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
https://devops.stackexchange.com/questions/13301
复制相似问题