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: FalseExecute 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: 200Testing 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: FalseExecute 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.contentExecute 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.jsonExecute 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 |
No comments:
Post a Comment