Ansible can be used to upgrade Nodegrid device to newer version from server ( Redhat in this case ).
Make sure ISO file has been copied to /etc/ansible/Firmware/ folder.
First, one needs to create template to be copied on remote Nodegrid device.
nodegrid_upgrade.j2
- software_upgrade
- set image_location=local_system
- set filename={{ ng_filename }}
- upgrade
Next, one needs to create playbook : nodegrid_upgrade.yml
- ---
- - name: Upgrade the Nodegrid
- hosts: "{{ ipaddress }}"
- gather_facts: no
- vars_prompt:
- - name: ipaddress
- prompt: Enter the ip address or group name
- private: no
- vars:
- ng_filename: Nodegrid_Platform_v4.2.1_20200626.iso
- ng_full: /etc/ansible/Firmware/{{ ng_filename }}
- ng_dest: /var/sw/{{ ng_filename }}
- file_name_upgrade: upgrade.cli
- file_name_backup: backup.cli
- become: true
- tasks:
- - name: Copy ISO to Nodegrid
- copy:
- src: "{{ ng_full }}"
- dest: "{{ ng_dest }}"
- - name: Copy firmware update script
- template:
- src: templates/nodegrid_upgrade.j2
- dest: /tmp/{{ file_name_upgrade }}
- - name: Run Firmware update
- command : cli -f /tmp/{{ file_name_upgrade }}
- - name: Wait 300 seconds for target connection to become reachable/usable
- wait_for_connection:
- delay: 60
- timeout: 300
- - name: Current Version
- command : grep ^VERSION= /software
- register: ng_version_after
- - name: Upgrade Successful
- debug:
- msg: "Upgrade successful new version: {{ ng_version_after['stdout'] }}"
- - name: Deleting Cache
- wait_for_connection:
- delay: 5
- timeout: 10
- - name: Find and Delete
- shell: sudo rm -rf /var/sw/*
- - name: ACK
- debug:
- msg: " Nodegrid is up and running "
Now, run the playbook with the command: ansible-playbook nodegrid_upgrade.yml
Note: One can change the timeout value in playbook based on the network connection.