ansible渲染template时出错unicode object' has no attribute 'ansible_
最近在看《奔跑吧,ansible》,在第四章fact与变量遇到一个问题。
直接使用debug能获取到变量ansible_ens33.ipv4.address,但是按照书中的用法,在template中调用时,有如下报错,意思是,没有这个属性,还是说书中的用法有问题?{{ host_dr.ansible_ens33.ipv4.address }}
hosts
[nat_director]
192.168.101.221
[nat_realserver]
rs1 ansible_ssh_host=192.168.101.222
rs2 ansible_ssh_host=192.168.101.223
playbook.yml
- name: Configure Nat Direcorty
hosts: nat_director nat_realserver
vars:
tasks:
- name: template ipvsadm conf
template:
src: templates/ipvsadm.j2
dest: /root/haha
when: group_names[0] == "nat_director"
- debug: var=groups.nat_director
# - debug: var=ansible_ens33.ipv4.address
templates/ipvsadm.j2
{% for host_dr in groups.nat_director %}
-A -t {{ host_dr.ansible_ens33.ipv4.address }}:80 -s rr
{% for host_rs in groups.nat_realserver %}
-a -t {{ host_dr.ansible_ens33.ipv4.address }}:80 -r {{ host_rs.ansible_ens33.ipv4.address }}:80 -m -w 1
{% endfor %}
{% endfor %}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
经过验证,书上的例子确实有点问题,应该使用hostvars进行加工