Hi!
I am trying to automate the process of upgrading IOS on Cisco devices.
Everything seems to be working fine until the process of copying the file
begins.
The issue I am encountering is that ansible keeps sending data (I assume it
keeps sending the same file a couple of times in a stream) to the IOS
device.
I noticed this issue when I logged in to one of the switches to which I am
trying to upgrade and saw how the file keeps growing and growing, to up to
four times its size (i.e. filesize is ~ 21k but it was growing already on
th 80k+).
Process ends when the "timeout" time is reached. Subsequently, the file
gets deleted from the switch, as the switches interprets that the file
transfer was interrupted.
Here is y core. Any help will be much appreciated:
---
- hosts: [HOSTS]
gather_facts: yes
connection: local
vars:
compliant_ios_version: 15.2(4)E8
new_ios_bin: c3560cx-universalk9-mz.152-4.E8.bin
new_ios_md5: bf2f1960b1fe0a05bdc69e17d82fcfed
should_reboot: YES
vars_prompt:
- name: username
prompt: "Enter username: "
private: no
- name: password
prompt: "Enter password: "
private: yes
- name: auth_pass
prompt: "Enter enable secret: "
private: yes
tasks:
- name: gathering HOSTS facts
ios_facts:
username: "{{ username }}"
password: "{{ password }}"
authorize: yes
auth_pass: "{{ auth_pass }}"
timeout: 30
register: all_facts
- name: Verifying if file exists in flash
ios_command:
commands:
- command: dir | include "{{ new_ios_bin }}"
username: "{{ username }}"
password: "{{ password }}"
authorize: yes
auth_pass: "{{ auth_pass }}"
timeout: 30
register: new_ios_on_flash
- name: Debugging new_ios_on_flash
debug:
msg: new ios is flash is "{{ new_ios_on_flash }}"
- name: Starting IOS upgrade process
block:
- name: Upgrade IOS images if not compliant
block:
- name: Download new IOS image if it is not already on flash
ios_command:
commands:
- command: 'copy
tftp://55.44.246.96/c3560cx-universalk9-mz.152-4.E8.bin flash:'
prompt: 'c3560cx-universalk9-mz.152-4.E8.bin'
answer: "\r"
username: "{{ username }}"
password: "{{ password }}"
authorize: yes
auth_pass: "{{ auth_pass }}"
timeout: 600
when: new_ios_on_flash.stdout[0] == ""
- name: Checking MD5 hash
ios_command:
commands:
- command: "verify /md5 flash:/{{ new_ios_bin }}"
username: "{{ username }}"
password: "{{ password }}"
authorize: yes
auth_pass: "{{ auth_pass }}"
timeout: 3000
register: md5_result
- name: Set boot var if MD5 matches
block:
- name: Changing boot var
ios_config:
lines:
- default boot system
- boot system flash:/"{{ new_ios_bin }}"
username: "{{ username }}"
password: "{{ password }}"
authorize: yes
auth_pass: "{{ auth_pass }}"
save_when: always
timeout: 150
register: new_ios_on_flash
- name: Setting boot var
ios_command:
commands:
- command: "reload at 23:00\ny"
username: "{{ username }}"
password: "{{ password }}"
authorize: yes
auth_pass: "{{ auth_pass }}"
timeout: 30
when: md5_result.stdout[0][-32:] == new_ios_md5
when: ansible_net_version != compliant_ios_version
--
You received this message because you are subscribed to the Google Groups
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/56ab6d1a-dc0f-4c48-b7a0-06595bb12dd9%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.