加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 获取当前主机名并使用ansible将其推送到conf文件中

发布时间:2020-12-14 02:50:07 所属栏目:Linux 来源:网络整理
导读:我正在研究一个ansible playbook来获取服务器的当前主机名,然后将其设置为配置文件.我无法弄明白如何使用lineinfile模块推送 shell输出. - name: Get hostname shell: echo $HOSTNAME register: result - name: Set hostname on conf file lineinfile: dest=
我正在研究一个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=????

解决方法

通常,要查看变量内部的内容,可以使用调试模块.
- debug:
    var: result

这应该显示一个对象及其属性,其中包括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 }}

理论如此之多,但真正的答案就来了.不要那样做.当然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 }}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读