Ansible

Ansible:在不覆蓋文件的情況下向 .ssh/config 添加一個節

  • April 7, 2021

我正在研究通過Ansible實現的基於 SSH 的靜態備份解決方案。省略詳細資訊,它sftp:backups-{{ restic_backup_name }}:{{ inventory_hostname }}用作儲存庫 URL,這意味著我需要將以下節添加到.ssh/config發送伺服器上的備份使用者:

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

如您所見,從模板生成節沒有問題,但是在(可能很少見,但我試圖考慮邊緣情況).ssh/config已經存在的情況下,我不想覆蓋現有文件,只是將此節添加到其中。

(如果它已經存在,跳過這一步會很好,但現在是可選的)

在處理這個問題時,我意識到blockinfile會做我想做的事:

- 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

引用自:https://unix.stackexchange.com/questions/643933