0
我希望使用在主机 H 上运行的 ansible 任务将 letsencrypt 凭据从主机 S 同步到主机 D。
我当前的任务是这样的:
- name: Synchronize local letsencrypt directory
ansible.posix.synchronize:
src: /etc/letsencrypt
dest: /etc/letsencrypt
archive: true
checksum: true
delete: true
recursive: true
become_user: myuserid
rsync_path: "sudo rsync"
become: true
delegate_to: S
在主机 S 上:
drwxr-xr-x. 9 root root 4096 Jul 10 01:15 /etc/letsencrypt
在主机 D 上:
drwxr-xr-x. 2 root root 6 Apr 8 07:58 /etc/letsencrypt
我收到的错误信息是:
TASK [sync_certs - rsync from certificate master host to certificate slave host] ******************************************
fatal: [D]: UNREACHABLE! => {"changed": false, "msg": "Invalid/incorrect password: Permission denied, please try again.", "unreachable": true}
由于所有主机上都禁止root登录,因此任务以具有sudo权限的普通用户身份运行,可以执行“bash”。所有主机上都是这种情况。
任何帮助将不胜感激。
PS:以下 bash 脚本成功运行。不幸的是,它要求输入 myuserid 的密码。
sudo /usr/bin/rsync --rsync-path="sudo rsync" --acls --archive --checksum --delete --links --numeric-ids --recursive --stats --times --verbose /etc/letsencrypt [email protected]::letsencrypt
答案1
您可以使用用户“myuserid”通过 ssh 登录吗?我认为问题的关键在于主机 S 和 D 之间的密钥共享。检查如何运行剧本并添加标志 -umyuserid -k
答案2
您尝试以未设置供 ansible 使用或不存在的用户身份连接到远程主机“S”,因此 ansible 无法通过 ssh 连接到主机并进行身份验证。您需要指定正确的用户名remote_user
才能连接到该主机。
此外,您的任务正在做一些奇怪的事情:您要求它以 sudomyuserid
而不是 root 身份运行,然后sudo rsync
再次运行以实际运行 rsync 进程。这些都没有必要;只需像平常一样让它以 sudo 身份运行即可。