问题描述
我正在编写Ansible剧本来检查主机文件中多个IP的URL状态,但是,当我将输入作为组名输入时它不起作用,但是对于单个IP则起作用
这是我的剧本,
- hosts: "{{ hosts }}"
vars_prompt:
- name: "hosts"
prompt: "Please enter the hosts details"
private: no
- name: "port"
prompt: "Please enter the port"
private: no
serial: 1
tasks:
- name: check the url http://{{ hosts }}:{{ port }}/test
uri:
url: "http://{{ hosts }}:{{ port }}/test"
follow_redirects: none
method: GET
register: _result
until: _result.status == 200
我的应用程序在Ips以下运行,我想检查所有URL的状态。
[webservers]
10.10.10.10
10.10.10.20
10.10.10.30
10.10.10.40
但是由于出现以下错误而失败。
ansible-playbook test.yml -u test --ask-pass
SSH password:
[WARNING]: Invalid characters were found in group names but not replaced,use -vvvv to see details
Please enter the hosts details: webservers
Please enter the port: 8080
[WARNING]: Found variable using reserved name: port
PLAY [webservers] ****************************************************************************> ********************************
TASK [Gathering Facts] **********************************************************************************************************
ok: [10.10.10.10]
TASK [http://webservers:8080/test] **********************************************************************
[WARNING]: The value True (type bool) in a string field was converted to u'True' (type string). If this does not look like what
you expect,quote the entire value to ensure it does not change.
fatal: [10.10.10.10]: Failed! => {"changed": false,"content": "","elapsed": 0,"Failed_when_result": true,"msg": "Status code was -1 and not [200]: Request Failed: <urlopen error [Errno -2] Name or service not kNown>","redirected": false,"status": -1,"url": "http://webservers:8080/test"}
PLAY RECAP **********************************************************************************************************************
10.10.10.10 : ok=1 changed=0 unreachable=0 Failed=1 skipped=0 rescued=0 ignored=0
有人可以建议吗?
谢谢!
解决方法
在另一个问题中,我想我已经解决了您要尝试做的事情。
您可以编辑提供的剧本以匹配您的用例。
,我已经写了这个,但是对于网络服务器来说,它只是将主机作为网络服务器,而不是获取IP。
- 主机:“ {{主机}}”
vars_prompt: - 名称:“主机”提示:“请输入主机详细信息”
私人:否 - 名称:“端口”
提示:“请输入端口详细信息”
不公开:
vars:
网站:-http:// {{主机}}:{{端口}} /测试
任务:
- 名称:验证所有网址是否正常工作
uri:
网址:“ {{item}}”
超时:10
with_items:“ {{网站}}”
注册:health_check
ignore_errors:是
但是再次失败,出现以下错误。
任务[验证所有网址是否正常工作] ********************************************* ***************************************************失败:[ 10.10.10.30](item = webservers:8080 / test)=> {“ ansible_loop_var”:“ item”,“ changed”:false,“ content”:“”,“ elapsed”:0,“ item”:“ webservers: 8080 / test“,” msg“:”状态代码为-1而不是[200]:请求失败:
我不确定我在做什么错。