我目前有一台家用服务器(旧笔记本电脑),我正在使用 Ansible 以经典的推送方式进行配置,即从我的个人电脑向它推送。这可行,但要求我在每次重启后都进行推送。
我想将其更改为拉取配置,其中服务器有一个 systemd 计时器/服务对,每 5 分钟从 git 运行一次 Ansible pull,并应用更改(如果有),并且在启动时无条件拉取。
我尝试从中提取的 repo 是私有的,需要 git 凭据或 SSH 密钥。 如果我在非用户模式下从 systemd 运行 Ansible,那么如何为 Ansible 设置 ssh 密钥(或 https 身份验证的用户/密码)以供从 Git 提取时使用?
答案1
事实证明,ansible-pull
它有一个我在文档中没有看到的参数:
--private-key <PRIVATE_KEY_FILE>, --key-file <PRIVATE_KEY_FILE>
使用此文件来验证连接
感谢 irc.libera.chat 上 #ansible 上的 Xaroth!
答案2
参数似乎在此处描述:https://gist.github.com/turboBasic/d6c6ffcb5d184b0c255b1054833b3c0f
我不知道为什么文档中没有用示例来描述这种常见的请求。浪费了多少用户时间……
#!/bin/sh
sudo ansible-pull --url ssh://[email protected]/you/your-ansible-repo.git \
--key-file ~/.ssh/id_rsa --accept-host-key \
--checkout develop \
packages.yml