gpt4 book ai didi

ansible - 同步模块失败并变为

转载 作者:行者123 更新时间:2023-12-04 13:40:28 24 4
gpt4 key购买 nike

我正在尝试使用同步模块将文件从 Ansible 节点复制到远程节点。

我希望这些文件以 UserB 的形式存在在远程节点上,但我无权访问 UserB直接地。而是 UserA有 sudo 权限可以切换到 UserB .所以我登录为 UserA .

我的环境文件说:

ansible_ssh_user=UserA
ansible_ssh_pass=<PassUserA>
ansible_become_method=sudo
ansible_become_user=UserB
ansible_become_pass=<PassUserA>

我的任务是:
- name: Copy and unarchive webapps node.
synchronize: src=/home/ansible/templates/app/Sprint6/webapps dest=/opt/msdp/ca/app checksum=yes
become: yes

但是当我运行剧本时,我收到一个错误:
fatal: [5.232.57.247]: FAILED! => {"changed": false, "cmd": "/usr/bin/rsync --delay-updates -F --compress --checksum --archive --rsh 'ssh  -S none -o StrictHostKeyChecking=no -o ControlMaster=auto -o ControlPersist=60s' --rsync-path=\"sudo rsync\" --out-format='<<CHANGED>>%i %n%L' \"/home/ansible/templates/app/Sprint6/webapps\" \"UserA@5.232.57.247:/opt/msdp/ca/app\"", "failed": true, "msg": "sudo: sorry, you must have a tty to run sudo\nrsync: connection unexpectedly closed (0 bytes received so far) [sender]\nrsync error: error in rsync protocol data stream (code 12) at io.c(600) [sender=3.0.6]\n", "rc": 12}

在远程节点上,只有 UserB可以写在: /opt/msdp/ca/app
是否有我缺少的配置?

最佳答案

synchronize 模块在控制机器上本地执行(而不是在目标节点上),默认情况下,它连接到使用那里使用的帐户(SSH 凭据)的节点(当前已登录,或在 ~/.ssh/config 中定义)。

首先,您需要通过添加 use_ssh_args 来覆盖默认行为。 ansible_ssh_* 的参数连接时要考虑的值:

use_ssh_args Use the ssh_args specified in ansible.cfg



其次,因为任务在本地运行, become指令也只对控制机器有效。 ansible_become_*变量不适用于这种情况。

相反,您可以告诉模块运行 sudo rsync通过 rsync_path提升目标节点的权限范围:
- name: Copy and unarchive webapps node.
synchronize:
src: /home/ansible/templates/app/Sprint6/webapps
dest: /opt/msdp/ca/app checksum=yes
use_ssh_args: yes
rsync_path: "sudo -u UserB rsync"

最后,以上假设 sudoers 设置允许无密码 sudo。如果您确实需要以纯文本形式提供密码,则需要另一种解决方法,例如:
rsync_path: "echo {{ UserA_password }} | sudo -S -u UserB rsync"

关于ansible - 同步模块失败并变为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40331425/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com