使ansible基于变量在剧本中多次运行任务

使ansible基于变量在剧本中多次运行任务,ansible,ansible-playbook,selenium-ide,Ansible,Ansible Playbook,Selenium Ide,我正在尝试使用Ansible URI模块登录多个网页,并检查环境是否正常工作 目前,我希望它只登录到2个网页(Peoplesoft envs),但我希望有一个vars文件,我可以在每次查看新页面时添加该文件 这是我到目前为止所拥有的,但它似乎没有登录到这两个页面,只有其中一个…任何帮助都将不胜感激 剧本- --- - name: Run Selenium Test Scripts hosts: local vars_files: - /etc/ansible/uri_module/vars_

我正在尝试使用Ansible URI模块登录多个网页,并检查环境是否正常工作

目前,我希望它只登录到2个网页(Peoplesoft envs),但我希望有一个vars文件,我可以在每次查看新页面时添加该文件

这是我到目前为止所拥有的,但它似乎没有登录到这两个页面,只有其中一个…任何帮助都将不胜感激

剧本-

---
- name: Run Selenium Test Scripts
hosts: local
vars_files:
  - /etc/ansible/uri_module/vars_uri.yml

tasks:

  - name: Installing URI dependancy
    yum: name=python-httplib2.noarch state=present

  - name: Log into Webpage
    uri:
      url: http://{{appserver}}:{{port}}/{{dbname}}/signon.html
      method: POST
      body: "name={{userid}}&password={{password}}&enter=Sign%20in"
      with_file: /etc/ansible/uri_module/vars_uri.yml
Vars文件

---
  - { name: 'dog', appserver: 'st1920', port: '8100', dbname: 'dbdog', userid: 'user', password: 'pass' }
  - { name: 'cat', appserver: 'st1921', port: '8300', dbname: 'dbcat', userid: 'user', password: 'pass' }
带-vv的输出

ok: [local] => {"changed": false, "content_language": "en-US", "content_length": "1831", "content_type": "text/html", "date": "Thu, 13 Oct 2016 11:45:23 GMT", "invocation": {"module_args": {"backup": null, "body": "name=user&password=pass&enter=Sign%20in", "body_format": "raw", "content": null, "creates": null, "delimiter": null, "dest": null, "directory_mode": null, "follow": false, "follow_redirects": "safe", "force": null, "force_basic_auth": false, "group": null, "method": "POST", "mode": null, "owner": null, "password": null, "regexp": null, "remote_src": null, "removes": null, "return_content": false, "selevel": null, "serole": null, "setype": null, "seuser": null, "src": null, "status_code": [200], "timeout": 30, "url": "http://st1921:8300/dbcat/signon.html", "user": null, "validate_certs": true, "with_file": "/etc/ansible/uri_module/vars_uri.yml"}, "module_name": "uri"}, "last_modified": "Wed, 13 Aug 2014 11:42:42 GMT", "redirected": false, "server": "WebSphere Application Server/7.0", "status": 200}    
使用vars文件,我希望它登录到dog环境,告诉我它在那里,登录到cat环境,告诉我它在那里。然后,如果我有一匹马、青蛙或其他任何环境,我可以继续添加到vars文件,而无需添加或更改剧本。目前,它只登录到猫,我不知道为什么。 我带着这个走对路线了吗?有更好的方法吗?由于它没有给出一个错误,我正在努力解决这个问题!
谢谢

我认为不可能像那样将
与_文件一起使用

vars\u uri
dictonaries存储在如下列表中会更干净:

---

vars_uri:
   - { name: 'dog', appserver: 'st1920', port: '8100', dbname: 'dbdog', userid: 'user', password: 'pass' }
   - { name: 'cat', appserver: 'st1921', port: '8300', dbname: 'dbcat', userid: 'user', password: 'pass' }
---
# Run Selenium Test Scripts
hosts: local
vars_files:
  - /etc/ansible/uri_module/vars_uri.yml

tasks:

  - name: Installing URI dependancy
    yum: name=python-httplib2.noarch state=present

  - name: Log into Webpage
    uri:
      url: http://{{ item.appserver }}:{{ item.port }}/{{ item.dbname }}/signon.html
      method: POST
      body: "name={{ item.userid }}&password={{ item.password }}&enter=Sign%20in"
    with_items: vars_uri
然后用
和\u项循环如下:

---

vars_uri:
   - { name: 'dog', appserver: 'st1920', port: '8100', dbname: 'dbdog', userid: 'user', password: 'pass' }
   - { name: 'cat', appserver: 'st1921', port: '8300', dbname: 'dbcat', userid: 'user', password: 'pass' }
---
# Run Selenium Test Scripts
hosts: local
vars_files:
  - /etc/ansible/uri_module/vars_uri.yml

tasks:

  - name: Installing URI dependancy
    yum: name=python-httplib2.noarch state=present

  - name: Log into Webpage
    uri:
      url: http://{{ item.appserver }}:{{ item.port }}/{{ item.dbname }}/signon.html
      method: POST
      body: "name={{ item.userid }}&password={{ item.password }}&enter=Sign%20in"
    with_items: vars_uri