Skip to main content
deleted 176 characters in body
Source Link

Ansible to check version of custom software on remote hosts before install/upgrade

First post on this forum:

Goal: Skip the host if version of custom software (non-rpm based) installed at remote host is greater than or equal to software version intended for upgrade. For all intents and purposes, this playbook (underneath) works well.

#Runtime# Runtime 1. Expected version is lower than installed version. Skip this host. No upgrade.

14:36:32-ram@thinkred1cartoon:~/Dropbox/Ansible/version_check$ ansible-playbook WebAgent_Install.yml -i Global_hosts_inventoryinventory.txt --extra-vars "gather=yes" 

What is expected version of Software? (If remote server is already at that level, this playbook will skip it): 12.52.105.2111

PLAY [RedHat_7_nodes] ************************************************************************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************************************************************************
ok: [joker7.cartoon.biz]

TASK [Check if the remote Software version is below "12.52.105.2111"] ************************************************************************************************************************
changed: [joker7.cartoon.biz]

TASK [debug] *********************************************************************************************************************************************************************************
ok: [joker7.cartoon.biz] => {
    "msg": {
        "changed": true,
        "cmd": "grep FullVersion /path/to/version_file.txt | awk -F = '{print $2}'",
        "delta": "0:00:00.013802",
        "end": "2019-05-16 14:37:00.635365",
        "failed": false,
        "rc": 0,
        "start": "2019-05-16 14:37:00.621563",
        "stderr": "",
        "stderr_lines": [],
        "stdout": "12.52.105.2112",
        "stdout_lines": [
            "12.52.105.2112"
        ]
    }
}
[DEPRECATION WARNING]: Using tests as filters is deprecated. Instead of using `result|version` use `result is version`. This feature will be removed in version 2.9. Deprecation warnings can
 be disabled by setting deprecation_warnings=False in ansible.cfg.

PLAY RECAP ***********************************************************************************************************************************************************************************
joker7.cartoon.biz         : ok=3    changed=1    unreachable=0    failed=0
#Runtime# Runtime - 2. Expected version is higher than installed version. Upgrade.

14:35:30-ram@thinkred1cartoon:~/Dropbox/Ansible/version_check$ ansible-playbook WebAgent_Install.yml -i Global_hosts_inventoryinventory.txt --extra-vars "gather=yes" 

What is expected version of Software? (If remote server is already at that level, this playbook will skip it) [12.52.105.2112]: 12.52.105.2113

PLAY [RedHat_7_nodes] ************************************************************************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************************************************************************
ok: [joker7.cartoon.biz]

TASK [Check if the remote Software version is below "12.52.105.2113"] ************************************************************************************************************************
changed: [joker7.cartoon.biz]

TASK [debug] *********************************************************************************************************************************************************************************
ok: [joker7.cartoon.biz] => {
    "msg": {
        "changed": true,
        "cmd": "grep FullVersion /path/to/version_file.txt | awk -F = '{print $2}'",
        "delta": "0:00:00.013155",
        "end": "2019-05-16 14:35:49.364318",
        "failed": false,
        "rc": 0,
        "start": "2019-05-16 14:35:49.351163",
        "stderr": "",
        "stderr_lines": [],
        "stdout": "12.52.105.2112",
        "stdout_lines": [
            "12.52.105.2112"
        ]
    }
}
[DEPRECATION WARNING]: Using tests as filters is deprecated. Instead of using `result|version` use `result is version`. This feature will be removed in version 2.9. Deprecation warnings can
 be disabled by setting deprecation_warnings=False in ansible.cfg.

TASK [Run the binary and upgrade since the installed version is lower than intended software version] ****************************************************************************************
changed: [joker7.cartoon.biz]

PLAY RECAP ***********************************************************************************************************************************************************************************
joker7.cartoon.biz         : ok=4    changed=2    unreachable=0    failed=0

Ansible to check version of custom software on remote hosts before install/upgrade

First post on this forum:

Goal: Skip the host if version of custom software (non-rpm based) installed at remote host is greater than or equal to software version intended for upgrade. For all intents and purposes, this playbook (underneath) works well.

#Runtime 1. Expected version is lower than installed version. Skip this host. No upgrade.

14:36:32-ram@thinkred1cartoon:~/Dropbox/Ansible/version_check$ ansible-playbook WebAgent_Install.yml -i Global_hosts_inventory.txt --extra-vars "gather=yes"
What is expected version of Software? (If remote server is already at that level, this playbook will skip it): 12.52.105.2111

PLAY [RedHat_7_nodes] ************************************************************************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************************************************************************
ok: [joker7.cartoon.biz]

TASK [Check if the remote Software version is below "12.52.105.2111"] ************************************************************************************************************************
changed: [joker7.cartoon.biz]

TASK [debug] *********************************************************************************************************************************************************************************
ok: [joker7.cartoon.biz] => {
    "msg": {
        "changed": true,
        "cmd": "grep FullVersion /path/to/version_file.txt | awk -F = '{print $2}'",
        "delta": "0:00:00.013802",
        "end": "2019-05-16 14:37:00.635365",
        "failed": false,
        "rc": 0,
        "start": "2019-05-16 14:37:00.621563",
        "stderr": "",
        "stderr_lines": [],
        "stdout": "12.52.105.2112",
        "stdout_lines": [
            "12.52.105.2112"
        ]
    }
}
[DEPRECATION WARNING]: Using tests as filters is deprecated. Instead of using `result|version` use `result is version`. This feature will be removed in version 2.9. Deprecation warnings can
 be disabled by setting deprecation_warnings=False in ansible.cfg.

PLAY RECAP ***********************************************************************************************************************************************************************************
joker7.cartoon.biz         : ok=3    changed=1    unreachable=0    failed=0
#Runtime - 2. Expected version is higher than installed version. Upgrade.

14:35:30-ram@thinkred1cartoon:~/Dropbox/Ansible/version_check$ ansible-playbook WebAgent_Install.yml -i Global_hosts_inventory.txt --extra-vars "gather=yes"
What is expected version of Software? (If remote server is already at that level, this playbook will skip it) [12.52.105.2112]: 12.52.105.2113

PLAY [RedHat_7_nodes] ************************************************************************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************************************************************************
ok: [joker7.cartoon.biz]

TASK [Check if the remote Software version is below "12.52.105.2113"] ************************************************************************************************************************
changed: [joker7.cartoon.biz]

TASK [debug] *********************************************************************************************************************************************************************************
ok: [joker7.cartoon.biz] => {
    "msg": {
        "changed": true,
        "cmd": "grep FullVersion /path/to/version_file.txt | awk -F = '{print $2}'",
        "delta": "0:00:00.013155",
        "end": "2019-05-16 14:35:49.364318",
        "failed": false,
        "rc": 0,
        "start": "2019-05-16 14:35:49.351163",
        "stderr": "",
        "stderr_lines": [],
        "stdout": "12.52.105.2112",
        "stdout_lines": [
            "12.52.105.2112"
        ]
    }
}
[DEPRECATION WARNING]: Using tests as filters is deprecated. Instead of using `result|version` use `result is version`. This feature will be removed in version 2.9. Deprecation warnings can
 be disabled by setting deprecation_warnings=False in ansible.cfg.

TASK [Run the binary and upgrade since the installed version is lower than intended software version] ****************************************************************************************
changed: [joker7.cartoon.biz]

PLAY RECAP ***********************************************************************************************************************************************************************************
joker7.cartoon.biz         : ok=4    changed=2    unreachable=0    failed=0

Ansible to check version of software on remote hosts before install/upgrade

Goal: Skip the host if version of custom software (non-rpm based) installed at remote host is greater than or equal to software version intended for upgrade. For all intents and purposes, this playbook (underneath) works well.

# Runtime 1. Expected version is lower than installed version. Skip this host. No upgrade.

ansible-playbook WebAgent_Install.yml -i inventory.txt --extra-vars "gather=yes" 

What is expected version of Software? (If remote server is already at that level, this playbook will skip it): 12.52.105.2111

PLAY [RedHat_7_nodes] ************************************************************************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************************************************************************
ok: [joker7.cartoon.biz]

TASK [Check if the remote Software version is below "12.52.105.2111"] ************************************************************************************************************************
changed: [joker7.cartoon.biz]

TASK [debug] *********************************************************************************************************************************************************************************
ok: [joker7.cartoon.biz] => {
    "msg": {
        "changed": true,
        "cmd": "grep FullVersion /path/to/version_file.txt | awk -F = '{print $2}'",
        "delta": "0:00:00.013802",
        "end": "2019-05-16 14:37:00.635365",
        "failed": false,
        "rc": 0,
        "start": "2019-05-16 14:37:00.621563",
        "stderr": "",
        "stderr_lines": [],
        "stdout": "12.52.105.2112",
        "stdout_lines": [
            "12.52.105.2112"
        ]
    }
}
[DEPRECATION WARNING]: Using tests as filters is deprecated. Instead of using `result|version` use `result is version`. This feature will be removed in version 2.9. Deprecation warnings can
 be disabled by setting deprecation_warnings=False in ansible.cfg.

PLAY RECAP ***********************************************************************************************************************************************************************************
joker7.cartoon.biz         : ok=3    changed=1    unreachable=0    failed=0
# Runtime - 2. Expected version is higher than installed version. Upgrade.

ansible-playbook WebAgent_Install.yml -i inventory.txt --extra-vars "gather=yes" 

What is expected version of Software? (If remote server is already at that level, this playbook will skip it) [12.52.105.2112]: 12.52.105.2113

PLAY [RedHat_7_nodes] ************************************************************************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************************************************************************
ok: [joker7.cartoon.biz]

TASK [Check if the remote Software version is below "12.52.105.2113"] ************************************************************************************************************************
changed: [joker7.cartoon.biz]

TASK [debug] *********************************************************************************************************************************************************************************
ok: [joker7.cartoon.biz] => {
    "msg": {
        "changed": true,
        "cmd": "grep FullVersion /path/to/version_file.txt | awk -F = '{print $2}'",
        "delta": "0:00:00.013155",
        "end": "2019-05-16 14:35:49.364318",
        "failed": false,
        "rc": 0,
        "start": "2019-05-16 14:35:49.351163",
        "stderr": "",
        "stderr_lines": [],
        "stdout": "12.52.105.2112",
        "stdout_lines": [
            "12.52.105.2112"
        ]
    }
}
[DEPRECATION WARNING]: Using tests as filters is deprecated. Instead of using `result|version` use `result is version`. This feature will be removed in version 2.9. Deprecation warnings can
 be disabled by setting deprecation_warnings=False in ansible.cfg.

TASK [Run the binary and upgrade since the installed version is lower than intended software version] ****************************************************************************************
changed: [joker7.cartoon.biz]

PLAY RECAP ***********************************************************************************************************************************************************************************
joker7.cartoon.biz         : ok=4    changed=2    unreachable=0    failed=0

Source Link

Ansible to check version of custom software on remote hosts before install/upgrade

First post on this forum:

Goal: Skip the host if version of custom software (non-rpm based) installed at remote host is greater than or equal to software version intended for upgrade. For all intents and purposes, this playbook (underneath) works well.

Questions :

  1. How to formulate the code to get rid of [DEPRECATION WARNING] during runtime?

  2. Is there are better way to apply the same logic?

   ansible --version
    ansible 2.7.10
    python version = 2.7.5 
#Remote software version
cat /path/to/version_file.txt
FullVersion=12.52.105.2112
#Playbook Install/upgrades firmare on remote nodes
#
---

- hosts: "RedHat_7_nodes"
  remote_user: test_user
  connection: ssh
  gather_facts: '{{ gather }}'

# Next Section - Variables

  vars_prompt:

    - name: EXPECTED_REMOTE_SOFTWARE_VERSION
      prompt: What is expected version of Software? (If remote server is already at that level, this playbook will skip it)
      private: no

  tasks:

   - name: Check if the remote Software version is below "{{ EXPECTED_REMOTE_SOFTWARE_VERSION }}"
     shell: grep FullVersion /path/to/version_file.txt  | awk -F = '{print $2}'
     check_mode: no
     register: CURRENT_INSTALLED_VERSION

   - debug:
       msg: "{{ CURRENT_INSTALLED_VERSION }}"
   - meta: end_play
     when: CURRENT_INSTALLED_VERSION.stdout | version(EXPECTED_REMOTE_SOFTWARE_VERSION,'>=')

   - name: Run the binary and upgrade since the installed version is lower than intended software version
     shell: echo "Run the binary and upgrade since the installed version is lower than intended software version "
     check_mode: no
#Runtime 1. Expected version is lower than installed version. Skip this host. No upgrade.

14:36:32-ram@thinkred1cartoon:~/Dropbox/Ansible/version_check$ ansible-playbook WebAgent_Install.yml -i Global_hosts_inventory.txt --extra-vars "gather=yes"
What is expected version of Software? (If remote server is already at that level, this playbook will skip it): 12.52.105.2111

PLAY [RedHat_7_nodes] ************************************************************************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************************************************************************
ok: [joker7.cartoon.biz]

TASK [Check if the remote Software version is below "12.52.105.2111"] ************************************************************************************************************************
changed: [joker7.cartoon.biz]

TASK [debug] *********************************************************************************************************************************************************************************
ok: [joker7.cartoon.biz] => {
    "msg": {
        "changed": true,
        "cmd": "grep FullVersion /path/to/version_file.txt | awk -F = '{print $2}'",
        "delta": "0:00:00.013802",
        "end": "2019-05-16 14:37:00.635365",
        "failed": false,
        "rc": 0,
        "start": "2019-05-16 14:37:00.621563",
        "stderr": "",
        "stderr_lines": [],
        "stdout": "12.52.105.2112",
        "stdout_lines": [
            "12.52.105.2112"
        ]
    }
}
[DEPRECATION WARNING]: Using tests as filters is deprecated. Instead of using `result|version` use `result is version`. This feature will be removed in version 2.9. Deprecation warnings can
 be disabled by setting deprecation_warnings=False in ansible.cfg.

PLAY RECAP ***********************************************************************************************************************************************************************************
joker7.cartoon.biz         : ok=3    changed=1    unreachable=0    failed=0
#Runtime - 2. Expected version is higher than installed version. Upgrade.

14:35:30-ram@thinkred1cartoon:~/Dropbox/Ansible/version_check$ ansible-playbook WebAgent_Install.yml -i Global_hosts_inventory.txt --extra-vars "gather=yes"
What is expected version of Software? (If remote server is already at that level, this playbook will skip it) [12.52.105.2112]: 12.52.105.2113

PLAY [RedHat_7_nodes] ************************************************************************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************************************************************************
ok: [joker7.cartoon.biz]

TASK [Check if the remote Software version is below "12.52.105.2113"] ************************************************************************************************************************
changed: [joker7.cartoon.biz]

TASK [debug] *********************************************************************************************************************************************************************************
ok: [joker7.cartoon.biz] => {
    "msg": {
        "changed": true,
        "cmd": "grep FullVersion /path/to/version_file.txt | awk -F = '{print $2}'",
        "delta": "0:00:00.013155",
        "end": "2019-05-16 14:35:49.364318",
        "failed": false,
        "rc": 0,
        "start": "2019-05-16 14:35:49.351163",
        "stderr": "",
        "stderr_lines": [],
        "stdout": "12.52.105.2112",
        "stdout_lines": [
            "12.52.105.2112"
        ]
    }
}
[DEPRECATION WARNING]: Using tests as filters is deprecated. Instead of using `result|version` use `result is version`. This feature will be removed in version 2.9. Deprecation warnings can
 be disabled by setting deprecation_warnings=False in ansible.cfg.

TASK [Run the binary and upgrade since the installed version is lower than intended software version] ****************************************************************************************
changed: [joker7.cartoon.biz]

PLAY RECAP ***********************************************************************************************************************************************************************************
joker7.cartoon.biz         : ok=4    changed=2    unreachable=0    failed=0