Below is the playbook to enable scp on switches/routers:

 tasks:
    - name: IOS CONFIG 1a
      ios_config:
        lines:
          - ip scp server enable


On Tuesday, January 14, 2020 at 11:14:59 AM UTC-5, Gerry Maddock wrote:
>
> I had the same issue, I ended up using scp:
> - name: COPY OVER IOS IMAGE
>         command: "firmwarename.bin 
> {{inventory_hostname}}:flash:/firmwarename.bin"
>
> I ran a separate playbook 1st to enable scp on the switches.
>
>
> 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 ansible-project+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/ee7b349f-a194-4ede-9709-60a20737b0df%40googlegroups.com.

Reply via email to