Ansible - 读取远程服务器中的文件并使用输出替换配置文件中的一行
Ansible - Read file in remote server and use the output to replace a line in configuration file
在 /etc/osci 下,我们为监控名称存储单行字符串。
我创建了一个 ansible playbook,将默认的 zabbix 配置复制到远程服务器,现在我想使用 ansible replace 模块将新复制的配置文件中的字符串替换为 /etc/osci[=11= 的输出]
在 salt 中,我可以执行在远程服务器中运行的 cmd.shell,并将文件输出读取到变量(使用 cat),但我在 Ansible 中使用相同的方法时遇到了问题。
正确的做法是什么?
- shell: cat /etc/osci
register: data
这个不行,调出系统returns0输出的数据变量。还有另一种方法吗?我真的不想使用 fetch 将文件下载到本地主机并使用 lookup 读取。
您可能使用了错误的 return value 注册命令。添加 .stdout
应该 return 文件的内容。像这样使用它:
- name: Get osci content.
shell: cat /etc/osci
register: data
- debug:
msg: "{{ data.stdout }}"
在 /etc/osci 下,我们为监控名称存储单行字符串。 我创建了一个 ansible playbook,将默认的 zabbix 配置复制到远程服务器,现在我想使用 ansible replace 模块将新复制的配置文件中的字符串替换为 /etc/osci[=11= 的输出]
在 salt 中,我可以执行在远程服务器中运行的 cmd.shell,并将文件输出读取到变量(使用 cat),但我在 Ansible 中使用相同的方法时遇到了问题。
正确的做法是什么?
- shell: cat /etc/osci
register: data
这个不行,调出系统returns0输出的数据变量。还有另一种方法吗?我真的不想使用 fetch 将文件下载到本地主机并使用 lookup 读取。
您可能使用了错误的 return value 注册命令。添加 .stdout
应该 return 文件的内容。像这样使用它:
- name: Get osci content.
shell: cat /etc/osci
register: data
- debug:
msg: "{{ data.stdout }}"