升级到 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

从 1.8 升级到 1.9 Django Admin get_urls 不起作用

用java的流复制文件,并改变编码格式,由ansi改为utf-8格式