Execution
Date 05 Nov 2024 19:09:36 +0000
Duration 00:00:03.18
Controller ssh-gw-4.layershift.com
User root
Versions
Ansible 2.16.11
ara 1.7.2 / 1.7.2
Python 3.10.10
Summary
2 Hosts
8 Tasks
8 Results
1 Plays
1 Files
0 Records

File: /home/ssh-gateway/ansible/kuly/agent360_check_and_upgrade.yaml

---
- name: Playbook to check agent360 version and upgrade it
  hosts: all
  vars:
    desired_agent360_version: "1.3.0"
    output_file: /home/ssh-gateway/ansible/kuly/outputs/agent_versions.txt
  tasks:
    - name: Get installed agent360 version using pip
      ansible.builtin.shell: |
        set -o pipefail
        pip$(head -1 $(which agent360) | awk -F 'python' '{print $2}') show agent360 | grep Version | awk '{print $2}'
      args:
        executable: /bin/bash
      register: agent360_version_result
      changed_when: false
      failed_when: agent360_version_result.rc != 0

    - name: Check if desired version matches installed version
      ansible.builtin.debug:
        msg: "The installed agent360 version matches the desired version: {{ desired_agent360_version }}."
      when: agent360_version_result.stdout == desired_agent360_version

    - name: Notify that the installed version does not match the desired version
      ansible.builtin.debug:
        msg: "The installed agent360 version ({{ agent360_version_result.stdout }}) does NOT match the desired version ({{ desired_agent360_version }})."
      when: agent360_version_result.stdout < desired_agent360_version

    - name: Save hostname and version if agent360 version is outdated and save_to_file is true and run_upgrade is false
      ansible.builtin.lineinfile:
        dest: "{{ output_file }}"
        create: true
        mode: '0644'
        line: "{{ inventory_hostname }} - Agent360 version {{ agent360_version_result.stdout }} (outdated)"
      delegate_to: 127.0.0.1
      when:
        - agent360_version_result.stdout is version(desired_agent360_version, '<')
        - save_to_file | default(false) | bool
        - not (run_upgrade | default(false) | bool)

    - name: Upgrade agent360 if version is outdated and run_upgrade is true
      when:
        - agent360_version_result.stdout is version(desired_agent360_version, '<')
        - run_upgrade | default(false) | bool
      block:
        - name: Upgrade agent360 package via pip
          ansible.builtin.shell: |
            set -o pipefail
            pip$(head -1  $(which agent360)| awk -F "python" '{print $2}') install --upgrade agent360
          args:
            executable: /bin/bash
          changed_when: false
        - name: Restart agent360 service
          ansible.builtin.systemd:
            name: agent360.service
            state: restarted
            enabled: true
        - name: Verify agent360 service is running
          ansible.builtin.systemd:
            name: agent360.service
          register: agent360_status
        - name: Check if agent360 service is active
          ansible.builtin.debug:
            msg: "The agent360 service is not running as expected!"
          when: agent360_status.status.ActiveState != "active"