升级到 1.9 后,使用 sudo 复制 Ansible 文件失败
Posted
技术标签:
【中文标题】升级到 1.9 后,使用 sudo 复制 Ansible 文件失败【英文标题】:Ansible file copy with sudo fails after upgrading to 1.9 【发布时间】:2015-08-04 03:13:48 【问题描述】:在剧本中,我使用 sudo 复制文件。它曾经可以工作...直到我们迁移到 Ansible 1.9...从那时起,它失败并显示以下错误消息:
“ssh连接关闭等待sudo密码提示”
我提供了 ssh 和 sudo 密码(通过 Ansible 提示符),通过 sudo 运行的所有其他命令都成功(只有文件复制和模板失败)。
我的命令是:
ansible-playbook -k --ask-become-pass --limit=testhost -C -D playbooks/debug.yml
并且剧本包含:
- hosts: designsync
gather_facts: yes
tasks:
- name: Make sure the syncmgr home folder exists
action: file path=/home/syncmgr owner=syncmgr group=syncmgr mode=0755 state=directory
sudo: yes
sudo_user: syncmgr
- name: Copy .cshrc file
action: copy src=roles/designsync/files/syncmgr.cshrc dest=/home/syncmgr/.cshrc owner=syncmgr group=syncmgr mode=0755
sudo: yes
sudo_user: syncmgr
这是一个错误还是我错过了什么?
弗朗索瓦。
【问题讨论】:
我看到您正在复制 .cshrc 文件 - 这可能意味着 syncmgr 用户的远程 shell 是 csh。如果是这种情况,那么.. 是的,这至少与 1.9 和 1.8.4 挂起(sudo + csh)。不过,我刚刚检查了 1.9.1,这似乎可以正常工作。 你运行的是什么版本?在 Ansible 1.9.0.x 中确实存在与 sudo 相关的错误,但我认为它只发生在您传递角色时,而不是任务中。但如果您运行的是 1.9.0.x,则应升级到 1.9.1 并重试。 我实际上使用的是 1.9.1... Ansible master 运行 RedHat-6.4 而远程运行在 CentOS-6.5... 以防万一(sudo 1.8.6,OpenSSH 5.3). 【参考方案1】:你的剧本应该是这样的:
- hosts: designsync
gather_facts: yes
tasks:
- name: Make sure the syncmgr home folder exists
sudo: yes
sudo_user: syncmgr
file:
path: "/home/syncmgr"
owner: syncmgr
group: syncmgr
mode: 0755
state: directory
- name: Copy .cshrc file
sudo: yes
sudo_user: syncmgr
copy:
src: "roles/designsync/files/syncmgr.cshrc"
dest: "/home/syncmgr/.cshrc"
owner: syncmgr
group: syncmgr
mode: 0755
【讨论】:
【参考方案2】:根据您使用的 Ansible 的确切版本,sudo_user 可能存在错误(我自己经历过)。
尝试将您的剧本从“sudo_user”更改为“remote_user”。
【讨论】:
以上是关于升级到 1.9 后,使用 sudo 复制 Ansible 文件失败的主要内容,如果未能解决你的问题,请参考以下文章
FLinkFlink 1.9 升级到 1.12.4 无配置页面 无日志
FlinkFlink 1.9 升级 到 flink 1.12.4 报错 flink.client.cli.AbstractCustomCommandLine <init>
FlinkFlink 1.9 升级 1.12.4 本地可以运行 打包后 集群运行就找不到类 ClassNotFoundException
FlinkFlink 1.9 升级 到 flink 1.12.4 报错 shaded netty4 AbstractChannel AnnotatedConnectException