Ansible:将节添加到 .ssh/config 而不覆盖文件

Ansible:将节添加到 .ssh/config 而不覆盖文件

我正在研究一个雷斯蒂奇以及通过 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存在的情况下,我不想覆盖现有文件,只是将此节添加到其中。

(如果此步骤已经存在,则跳过此步骤会很好,但目前这是可选的)

答案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

相关内容