我必须用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'未定义
问题出在哪里?
答案 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
的主机组 - 这完全没有意义。