Ansible version : 2.9
Python version : 3.7.5
I also tried many times with sftp or scp with ios_command module but no
luck. Instead, as shown below, net_put successfully copied the file over to
the Cisco switch. The ansible_ssh_user and ansible_ssh_pass needs to be set
in inventory file.
One issue I'm facing with the net_put module is that next task using
ios_command after the copying fails to be executed. It gave error message
"ConnectionError(to_text(msg, errors='surrogate_then_replace'), code=code)".
- name: Upgrade NM switch Firmware
hosts: nm_switch
connection: network_cli
remote_user: cisco
- name: Copy over ios image
net_put:
src: "{{ nm_sw_image_file }}" # Need ansible_ssh_user and
ansible_ssh_pass set up.
vars:
ansible_command_timeout: 3600 # default time out is 30 sec. Image copy
takes about 30 min
On Sunday, June 16, 2019 at 11:02:24 AM UTC-4, Frankie Soto wrote:
>
> 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