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