I would like to have an assert or fail task in my Ansible play that validates that the right code build was deployed. The deployment comes with a version.properties file which has the build info I care about.
The 'correct' code version comes from a vars file and is called desired_build_id.
How can I validate that my version.properties mentions this build ID? Some sort of substring search?
I've tried the following:
---
- name: Validate deployment success
hosts: app-nodes
tasks:
- name: Read version.properties file
shell: cat /path/to/version.properties
register: version_prop_content
- fail: Wrong build ID found in version.properties
when: desired_build_id not in version_prop_content.stdout
However, that gives a error: error while evaluating conditional: esired_build_id not in version_prop_content.stdout
What's the right syntax for this? Or, is there a better way?
A much simpler python expression would also do:
- name: Read version.properties file
shell: cat /path/to/version.properties
register: version_prop_content
- debug: msg="desired build installed"
when: "'{{desired_build_id}}' in '{{version_prop_content.stdout}}'"
Or as I always recommend, avoid using ansible as far as possible:
- name: verify version
shell: grep '{{desired_build_id}}' /path/to/version.properties
Figured it out!
The way to do the substring comparison is with version_prop_content.stdout.find(desired_build_id) > 0 which is true if the substring is present
The find command returns index of the substring and -1 if it is not present.
I also changed it to an assert tasks to make it look a bit prettier (fail is such an ugly word ;) ).
- name: Check that desired version was deployed
assert:
that:
- version_prop_content.stdout.find(desired_build_id) > 0
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With