gpt4 book ai didi

ansible - 使用来自变量的 Ansible 模板创建本地文件

转载 作者:行者123 更新时间:2023-12-05 02:27:25 24 4
gpt4 key购买 nike

我正在针对多个 ec2 实例运行一个 ansible 剧本来检查目录是否存在。

---
- hosts: all
become: true
tasks:
- name: Check if foo is installed
stat:
path:
/etc/foo
register: path
- debug: msg="{{path.stat.exists}}"

我想生成一个本地文件,列出 ec2 实例的私有(private) IP 地址并说明目录 foo 是否存在。

我可以通过此任务获取实例的私有(private)IP地址

  - name: Get info from remote
shell: curl http://169.254.169.254/latest/meta-data/local-ipv4
register: bar
- debug: msg="{{bar.stdout}}"

如何创建包含内容的本地文件

IP address: 10.100.0.151 directory foo - false
IP address: 10.100.0.152 directory foo - true

我试过为此添加一个 block

- hosts: localhost
become: false
vars:
installed: "{{bar.stdout}}"
status: "{{path.stat.exists}}"
local_file: "./Report.txt"
tasks:

- name: Create local file with info
copy:
dest: "{{ local_file }}"
content: |
"IP address {{ installed }} foo - {{ status }}"

但看起来我无法从前面的步骤中读取变量值。

请问我做错了什么?

最佳答案

已经回答了类似的问题here .

基本上您想要的是通过主机 var 变量引用它。

这应该有效。

- hosts: localhost
become: false
vars:
local_file: "./Report.txt"
tasks:

- name: Create local file with info
lineinfile:
path: "{{ local_file }}"
line:
"IP Address: {{ hostvars[item]['bar'].stdout }} - Installed: {{ hostvars[item]['path'].stat.exists }}"
with_items: "{{ query('inventory_hostnames', 'all') }}"

这应该会使用您需要的信息填充您的本地 ./Report.txt 文件。

关于ansible - 使用来自变量的 Ansible 模板创建本地文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73241177/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com