Detecting software version with Ansible

With Ansible, detecting the version of, for example, Redis or Racket can be done like this: ```yaml - name: Detect Redis version # Input: Redis server v=3.2.1 sha=00000000:0 malloc=libc bits=64 build=62a67eec83b28403 # Output: 3.2.1 shell: redis-server -v | awk '{print $3}' | sed -e 's/v=//' changed_when: False register: redis_installed_version - name: Detect racket versions # Input: Welcome to Racket v6.6. # Output: 6.6 shell: "racket -v | rev | cut -d ' ' -f1 | rev | sed 's/.$//' | sed 's/^v//'" register: racket_installed_version ``` Example: Download src only if version does not match: ```yaml - get_url: url: http://download.redis.io/releases/redis-{{redis_version}}.tar.gz dest: /usr/local/src/ sha256sum: "{{redis_sha256}}" register: get_redis_result when: redis_installed_version.stdout | version_compare(redis_version, '!=') ```