为了账号安全,请及时绑定邮箱和手机立即绑定

Ansible-playbook如何获取ip?

标签:
Python


公司的模块都新加了加密算法,现在就是需要把约100台机器的zk 进行调整,目前在 ansible控制机上已经写好了新的zk ip,然后计划是把这个新zk ip的文件下发到那100台机器里,然后这100台机器的文件中把他们各自的ip和hostname添加到这个文件上。

于是就写了一个ansible-playbook:

---- hosts: all  tasks:        - name: 将原有的hosts文件备份          shell: mv /etc/hosts /etc/hosts_bak        - name: 将ansible端的hosts复制到各自机器上          copy: src=/root/hosts dest=/etc/ owner=root group=root mode=0544        - name: 在新的hosts文件后面追加各自机器内网ip和hostname          lineinfile: dest=/etc/hosts line="`ansible_all_ipv4_addresses`  `ansible_hostname`"

但是写完之后执行出来,却是这样的效果:

222.png

而我想要的是这样的效果:

222.png

遇到这种情况怎么办?

后来调整了一下,变量用 IP: "{{ ansible_eth0['ipv4']['address'] }}",而不是`ansible_all_ipv4_addresses`。

修改了之后的playbook 如下:

---- hosts: all  vars:        IP: "{{ ansible_eth0['ipv4']['address'] }}"  tasks:        - name: 将原有的hosts文件备份          shell: mv /etc/hosts /etc/hosts_bak        - name: 将ansible端的hosts复制到各自机器上          copy: src=/root/hosts dest=/etc/ owner=root group=root mode=0644        - name: 在新的hosts文件后面追加各自机器内网ip和hostname          lineinfile: dest=/etc/hosts line="`IP`  `ansible_hostname`"

这样就达到目的了。

©著作权归作者所有:来自51CTO博客作者苏幕遮618的原创作品,如需转载,请注明出处,否则将追究法律责任


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消