diff --git a/files/ansible-playbooks/redirect_and_block.yml b/files/ansible-playbooks/redirect_and_block.yml index eb6b5f0..1021c2a 100644 --- a/files/ansible-playbooks/redirect_and_block.yml +++ b/files/ansible-playbooks/redirect_and_block.yml @@ -460,19 +460,73 @@ # ============================ COPY BLOCK SCRIPTS TO DEV2 ============================ - - name: Copy block scripts to DEV2 via wrapper + - name: Ensure staging dir on DEV2 (via wrapper) delegate_to: localhost ansible.builtin.shell: | - export DEV2_CMD='mkdir -p "{{ block_dst_dir }}" \ - && cat > "{{ block_dst_dir }}/{{ item }}" <<'__PTSD_EOF__' -{{ lookup('file', block_src_dir ~ '/' ~ item) }} -__PTSD_EOF__ - && chmod 0755 "{{ block_dst_dir }}/{{ item }}"' + export DEV2_CMD='mkdir -p "{{ block_dst_dir }}"' {{ dev2_exec_cmd }} args: { executable: /bin/bash } + changed_when: false + + - name: Copy block scripts controller to DEV2 direct (LLDP direct or LLDP4 fallback) + when: dev2_conn_final in ["direct_lldp", "lldp4_fallback"] + delegate_to: localhost + ansible.builtin.shell: | + set -e + if [ "{{ dev2_conn_final }}" = "direct_lldp" ]; then + HOST="{{ lldp_dev2_ip }}" + PASSFILE="{{ dev2_passfile_used_direct }}" + else + HOST="{{ lldp_dev2_ip }}" + PASSFILE="{{ dev2_passfile_used_lldp4 }}" + fi + + sshpass -f "$PASSFILE" scp {{ ssh_opts_common }} -P "{{ dev2_port }}" \ + "{{ block_src_dir }}/{{ item }}" \ + "{{ dev2_ssh_user }}@${HOST}:{{ block_dst_dir }}/{{ item }}" + args: { executable: /bin/bash } loop: "{{ block_files }}" changed_when: true + - name: Copy block scripts controller to DEV1 staging (for tunnel or LLDP6 via DEV1) + when: dev2_conn_final in ["tunnel", "lldp6_via_dev1"] + delegate_to: localhost + ansible.builtin.shell: | + set -e + sshpass -p "{{ dev1_pass }}" scp {{ ssh_opts_common }} \ + "{{ block_src_dir }}/{{ item }}" \ + "{{ dev1_user }}@{{ inventory_hostname }}:/tmp/{{ item }}" + args: { executable: /bin/bash } + loop: "{{ block_files }}" + changed_when: true + + - name: Stage DEV2 passfile on DEV1 (for DEV1 to DEV2 scp) + when: dev2_conn_final in ["tunnel", "lldp6_via_dev1"] + delegate_to: localhost + ansible.builtin.shell: | + set -e + PASSFILE="{{ dev2_passfile_used_tunnel if dev2_conn_final == 'tunnel' else dev2_passfile_used_lldp6 }}" + sshpass -p "{{ dev1_pass }}" scp {{ ssh_opts_common }} \ + "$PASSFILE" \ + "{{ dev1_user }}@{{ inventory_hostname }}:/tmp/ptsd_passfile_dev2" + args: { executable: /bin/bash } + changed_when: true + + - name: Copy block scripts DEV1 to DEV2 (tunnel or LLDP6 via DEV1) + when: dev2_conn_final in ["tunnel", "lldp6_via_dev1"] + ansible.builtin.raw: > + {{ pathprefix }} + (HOST="{{ dev2_host }}"; + PASSFILE="/tmp/ptsd_passfile_dev2"; + for f in {{ block_files | join(' ') }}; do + sshpass -f "$PASSFILE" scp {{ ssh_opts_common }} -P {{ dev2_port }} "/tmp/$f" "{{ dev2_ssh_user }}@${HOST}:{{ block_dst_dir }}/$f" >/dev/null 2>&1 || exit 1; + sshpass -f "$PASSFILE" ssh {{ ssh_opts_common }} -p {{ dev2_port }} "{{ dev2_ssh_user }}@${HOST}" "chmod 0755 {{ block_dst_dir }}/$f" >/dev/null 2>&1 || exit 1; + done; + exit 0) + register: dev1_to_dev2_copy + changed_when: true + failed_when: dev1_to_dev2_copy.rc != 0 + post_tasks: - name: Cleanup note delegate_to: localhost