如何获取主机名并将其放在cfg上

时间:2019-08-07 08:12:50

标签: ansible

我该如何编辑远程cfg文件

我必须通过远程计算机的名称来修改“主机名”,

知道它是自动的,因为我会在+300服务器上部署它

我必须能够获取远程主机名,并通过ansible将其放入cfg文件中

谢谢

############# file for config host ############
---
- hosts: computer_user
  remote_user: toto
  tasks:
  - name: "config zabbix agent"
    lineinfile:
      path: /etc/zabbix.cfg
      regexp: '(.*)hostname_local(.*)'
      line: '%hostname%'


########### file_cfg_on_computer_user #########

hostname_local: here_i_want_put_the_hostname_of_my_computer_user_with_a_like_%hostname%

2 个答案:

答案 0 :(得分:0)

Ansible在运行时定义了许多special variables

您可以使用{{ inventory_hostname }}返回播放中正在迭代的“当前”主机的清单名称。

或者您可以执行远程命令并在下一个任务中使用结果:

---
- hosts: computer_user
  remote_user: toto
  tasks:
  - name: "get hostname from remote host"
    shell: hostname
    register: result_hostname
  - name: "config zabbix agent"
    lineinfile:
      path: /etc/zabbix.cfg
      regexp: '(.*)hostname_local(.*)'
      line: '{{ result_hostname.stdout }}'

答案 1 :(得分:0)

我不确定您真正想要的是什么,但是如果您想获取运行剧本的系统的主机名,则有两种可能:

  1. 您可以获得inventory_hostname的值:它是Ansible的广告资源托管文件中配置的主机名的名称
  2. 或者您也可以获取明显事实ansible_hostname的值:这个事实是在聚集事实阶段
  3. 发现的

您可以找到有关主机变量和事实here

的更多信息