Ansible 11 The uri module with examples
Hey DevSecOps Automation specialist, Welcome back to the DevOps Hunter blog. In this post, I made it for learning more about all possible parameters that we can use when an application validation is done with the Ansible 'uri' module.
Why uri module?
Web Application returns status HTTPCode 200 for success, 404 for failures, and also for 503 for Server internal issues. When you work on the restart of a web application we need to know the status of the application to proceed with the next move. So this uri module is most important for reboot and restart of web applications using ansible.
The uri module parameters
Supported parameters include: attributes, backup, body, body_format, client_cert, client_key, content, creates, delimiter, dest, directory_mode, follow, follow_redirects, force, force_basic_auth, group, headers, http_agent, method, mode, owner, regexp, remote_src, removes, return_content, selevel, serole, setype, seuser, src, status_code, timeout, unix_socket, unsafe_writes, url, url_password, url_username, use_proxy, validate_certs
The Ansible uri module return the following parameters while working with given URL
headers add headers to your requests
body - insert a body in your request
body_format - format of the body in JSON or raw
creates - doesnot run the task if a file exists
dest: where to create the new file
follow_redirects - when https redirects to http returns 301
force_basic_auth - you need to provide username, password to chedk url
method - REST api possible methods it will supports GET POST DELETE PUT HEAD PATCH TRACE
Prerequisites
Ansible installed and managed nodes with application up and running
Alternatively, application test URL we can take this blog URL as well.
Usecase 1: Let's check out blog URL does the Ansible uri module can test?
- name: Check public domain URL
hosts: localhost
gather_facts: no
tasks:
- name: uri
uri:
url: https://devopshunter.blogspot.com
method: GET
validate_certs: False
Execute the playbook as
ansible-playbook urlcheck.yml
Usecase 2: Now we can test our project related application urls with the following playbook
- name: test apache url
hosts: web
gather_facts: no
tasks:
- name: uri
uri:
url: http://{{ansible_host}}
method: GET
validate_certs: False
status_code: 200
Testing the above web application testing test run as follows:
Image
| Ansible uri module with GET method and status_code checking |
- name: Check status code public domain URL
hosts: localhost
gather_facts: no
tasks:
- name: Check uri in 200,201,301
uri:
url: https://httpbin.org/status/500
method: POST
status_code: [200,201,301]
validate_certs: False
Execute the play and check what does ansible-playbook uri_multi_status_code.yml
Image:
| Ansible uri module multiple status code |
- name: Check content
hosts: db
gather_facts: no
tasks:
- name: Show content of a given uri
uri:
url: http://httpbin.org/get
return_content: yes
method: GET
register: __content
- name: debug
debug:
var: __content.content
Execute play as follows:
ansible-playbook check_content.ymlImage
| Content of given url usibng ansible uri module |
# Filename uri_body.yml
- name: Get the body of the url
hosts: db
gather_facts: false
tasks:
- name: Get the status, url from body from uri
uri:
url: http://httpbin.org/get
method: GET
return_content: yes
validate_certs: False
body_format: json
register: __body
- name: debug status, url
debug:
var: __body.status, __body.json.url
- name: debug json block
debug:
var: __body.json
Execute play as follows:
ansible-playbook uri_body.ymlNote that URL passed here is the test URL, whereas in projects we need to pass this value of web applications that provide the REST service that can be used with the HTTP Get request object.
| Ansible uri module example to get body parameter |
# File: uri_basic_auth.yml
- name: Get the body of the url
hosts: localhost
gather_facts: false
tasks:
- name: uri module using user password
uri:
url: https://httpbin.org/basic-auth/vybhava/technologies
user: "vybhava"
password: "technologies"
method: GET
validate_certs: False
ansible-playbook uri_basic_auth.yml
| Ansible uri module basic auth parameters user, password |
| Basic auth testing on browser |
Comments