Ansible-多个主机的URL检查

问题描述

我正在编写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

有人可以建议吗?

谢谢!

解决方法

在另一个问题中,我想我已经解决了您要尝试做的事情。

请查看this question and answer

您可以编辑提供的剧本以匹配您的用例。

,

我已经写了这个,但是对于网络服务器来说,它只是将主机作为网络服务器,而不是获取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]:请求失败:“,”重定向“:false,”状态“: -1,“ url”:“ webservers:8080 / test”}

我不确定我在做什么错。