Ansible 同步模块权限失败

Ansible 同步模块权限失败

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 身份运行即可。

相关内容