Ansible:在playbook中使用hosts.ini的主机地址

时间:2017-03-29 15:47:13

标签: ansible ansible-inventory

我必须用ansible做一个POST请求。

我的hosts.ini文件是:

[workers]
worker1 ansible_host=111.111.111.111 
worker2 ansible_host=222.222.222.222 

我必须连接的url需要worker1的ip地址,所以我把我的剧本写成:

- hosts: worker1

  tasks:
  - name: inizialize worker                                          
    uri:
      url: "http://{{ worker1 }}:8080/xxx/yyy"
      method: POST
      user: admin
      password: password
      force_basic_auth: yes
      return_content: yes
      body: "field=myfield"

但是运行它,我得到:

  

字段'args'具有无效值,该值似乎包含未定义的变量。错误是:'worker1'未定义

问题出在哪里?

1 个答案:

答案 0 :(得分:0)

您没有定义名为worker1的变量。

如果您想将值替换为111.111.111.111,则应使用magic variables

url: "http://{{ hostvars['worker1']['ansible_host'] }}:8080/xxx/yyy"

但考虑到你的整个游戏,你可能也想要:

url: "http://{{ ansible_host }}:8080/xxx/yyy"

请注意,您的库存文件定义了一个名为workers的主机组,而您的游戏指的是一个名为worker1的主机组 - 这完全没有意义。