나는 iptables를 관리하기 위한 플레이북을 작성 중입니다. (예, 알고 있습니다.이 문제를 해결하는 모듈이 있습니다, 그러나 나는 사용자 정의 스크립트를 사용하는 것을 선호합니다). 새로운 규칙을 로드한 후 USR1
신호를 기다립니다 . 그렇지 않다면 롤백하겠습니다.
따라서 관련 Ansible 작업은 다음과 같습니다.
- name: Restore iptables
shell: /root/load_iptables_rules.sh
async: 45
poll: 0
- name: Test SSH connection
shell: /root/send_usr1.sh
register: exit_code
until: exit_code.rc == 0
retries: 10
async: 45
poll: 3
두 번째 작업("SSH 연결 테스트")을 새롭고 다른 SSH 연결에서 실행하고 싶습니다. 이렇게 하면 내 호스트가진짜새로운 SSH 연결을 수락합니다. 그렇지 않으면 Ansible이 내 요구 사항에 맞지 않는 이미 설정된 연결을 사용할 수 있습니다.
파이프와 비동기에 관한 내용을 읽었지만 작동시킬 수 없습니다.
답변1
당신이 찾고있는meta
모듈 reset_connection
작업;이렇게 하면 연결이 중단되어 후속 작업에서 새 연결을 설정해야 합니다. 이는 다음과 같을 수 있습니다:
- name: Restore iptables
shell: /root/load_iptables_rules.sh
async: 45
poll: 0
- name: Reset connection
meta: reset_connection
- name: Test SSH connection
shell: /root/send_usr1.sh
register: exit_code
until: exit_code.rc == 0
retries: 10
async: 45
poll: 3