如何在 ansible 中迭代回圈中的模塊輸出并捕獲要重定向到檔案的特定值。示例:'amazon-ssm-agent.service']['state']": "running" 應該被推送到本地檔案。
[ansibleadm@node1 ~]$ cat myloops3.yaml
---
- name: collect service status remotely
hosts: remote
become: yes
roles:
- role: myServices
myServiceName:
- amazon-ssm-agent.service
- cloud-init-local.service
[ansibleadm@node1 ~]$ cat roles/myServices/tasks/main.yml
---
# tasks file for myServices
- name: collect systemd info
service_facts:
- name: cross verify service is runnng or not
debug:
var: ansible_facts.services['{{ item }}']['state']
loop: "{{ myServiceName }}"
[ansibleadm@node1 ~]$
## Outputs ##
TASK [myServices : cross verify service is runnng or not]
*****************************************************************
ok: [3.109.201.79] => (item=amazon-ssm-agent.service) => {
"ansible_facts.services['amazon-ssm-agent.service']['state']": "running",
"ansible_loop_var": "item",
"item": "amazon-ssm-agent.service"
}
ok: [3.109.201.79] => (item=cloud-init-local.service) => {
"ansible_facts.services['cloud-init-local.service']['state']": "stopped",
"ansible_loop_var": "item",
"item": "cloud-init-local.service"
}
uj5u.com熱心網友回復:
假設您要將這些服務狀態輸出到檔案中,您可以使用如下內容:
- name: collect systemd info
service_facts:
- name: cross verify service is runnng or not
copy:
content: |
{% for s in myServiceName %}{{ s }}={{ ansible_facts.services[s]['state'] }}
{% endfor %}
dest: /tmp/test.txt
會給你:
$> cat /tmp/test.txt
amazon-ssm-agent.service=running
cloud-init-local.service=running
或者,如果您希望每個服務一個檔案:
- name: cross verify service is runnng or not
loop: "{{ myServiceName }}"
copy:
content: |
{{ ansible_facts.services[item]['state'] }}
dest: "/tmp/{{ item }}.txt"
這使:
$> cat /tmp/amazon-ssm-agent.service.txt
running
uj5u.com熱心網友回復:
如果您需要示例中的引號和括號(我平衡了開頭)
Example: "['amazon-ssm-agent.service']['state']": "running"
下面的 Jinja 應該創建它。例如,給定myServiceName: [ssh, xen]
- service_facts:
- copy:
content: |
{% for s in myServiceName %}
"['{{ s }}']['state']": "{{ ansible_facts.services[s]['state'] }}"
{% endfor %}
dest: /tmp/test.txt
創建檔案
shell> cat /tmp/test.txt
"['ssh']['state']": "running"
"['xen']['state']": "running"
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/438427.html
