Ansible: 파일을 덮어쓰지 않고 .ssh/config에 스탠자를 추가합니다.

Ansible: 파일을 덮어쓰지 않고 .ssh/config에 스탠자를 추가합니다.

나 하나 작업 중이야레스틱Ansible을 통한 SSH 기반 백업 솔루션. 세부 정보를 생략하면 저장소 URL로 사용됩니다 . 즉 , 보내는 서버의 백업 사용자에게 sftp:backups-{{ restic_backup_name }}:{{ inventory_hostname }}다음 스탠자를 추가해야 함을 의미합니다 ..ssh/config

Host backup-{{ restic_backup_name }}
    HostName {{ restic_backup_host }}
    User restic-backup
    IdentityFile /etc/restic/{{ restic_backup_name }}.key

보시다시피 템플릿에서 섹션을 생성하는 데에는 문제가 없지만 섹션이 .ssh/config이미 존재하는 경우(아마도 드물지만 극단적인 경우를 설명하려고 함)에는 기존 파일을 덮어쓰고 싶지 않습니다. , 이 섹션을 추가하면 됩니다.

(이미 존재하는 경우 이 단계를 건너뛰는 것이 좋지만 현재로서는 선택사항입니다.)

답변1

이 문제를 조사하면서 깨달았습니다.블록 파일내가 원하는 것을 할 것이다:

- name: Create SSH config block
  blockinfile:
    path: /root/.ssh/config
    block: |
        Host backup-{{ restic_backup_name }}
            HostName {{ restic_backup_host }}
            User restic-backup
            IdentityFile /etc/restic/{{ restic_backup_name }}.key        
    backup: yes
    validate: /usr/sbin/sshd -T -f %s

관련 정보