ansible渲染template时出错unicode object' has no attribute 'ansible_

发布于 2022-09-05 05:55:16 字数 1179 浏览 26 评论 0

最近在看《奔跑吧,ansible》,在第四章fact与变量遇到一个问题。
直接使用debug能获取到变量ansible_ens33.ipv4.address,但是按照书中的用法,在template中调用时,有如下报错,意思是,没有这个属性,还是说书中的用法有问题?{{ host_dr.ansible_ens33.ipv4.address }}

clipboard.png

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦里人 2022-09-12 05:55:16

经过验证,书上的例子确实有点问题,应该使用hostvars进行加工

{% for host_dr in groups.nat_director %}
-A -t {{ hostvars[host_dr].ansible_ens33.ipv4.address }}:80 -s rr
    {% for host_rs in groups.nat_realserver %}
-a -t {{ hostvars[host_dr].ansible_ens33.ipv4.address }}:80 -r {{ hostvars[host_rs].ansible_ens33.ipv4.address }}:80 -m -w 1
    {% endfor %}
{% endfor %}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文