ped*_*xto 5 linux ansible yaml
我正在编写 ansible playbook 以获取服务器的当前主机名,然后将其设置为配置文件。我无法弄清楚如何使用 lineinfile 模块推送 shell 输出。
- name: Get hostname
shell: echo $HOSTNAME
register: result
- name: Set hostname on conf file
lineinfile: dest=/etc/teste/linux/zabbix_agentd.conf regexp="^Hostname=.*" insertafter="^# Hostname=" line=Hostname=????
Run Code Online (Sandbox Code Playgroud)
udo*_*dan 21
通常,要查看变量内部的内容,您可以使用debug模块。
- debug:
var: result
Run Code Online (Sandbox Code Playgroud)
这应该向您显示一个对象及其属性,其中包括stdout. 这是上一条命令的完整结果。因此,要使用第一个任务的输出,您将使用result.stdout.
要使用任何变量,您可以使用 Jinja2 表达式:{{ whatever }}. 所以你的任务可能是这样的:
- name: Set hostname on conf file
lineinfile:
dest: /etc/teste/linux/zabbix_agentd.conf
regexp: ^Hostname=.*
insertafter: ^# Hostname=
line: Hostname={{ result.stdout }}
Run Code Online (Sandbox Code Playgroud)
理论到此为止,但真正的答案来了。不要那样做。当然 Ansible 已经知道主机名。
您的清单中定义的主机名将是{{ inventory_hostname }}. 服务器报告的主机名是{{ ansible_hostname }}. 此外还有{{ ansible_fqdn }}. 所以只需使用其中任何一个,而不是运行额外的任务:
- name: Set hostname on conf file
lineinfile:
dest: /etc/teste/linux/zabbix_agentd.conf
regexp: ^Hostname=.*
insertafter: ^# Hostname=
line: Hostname={{ ansible_hostname }}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47239 次 |
| 最近记录: |