【问题标题】:Ansible copy a file that must be read-only and owned by another userAnsible 复制一个必须为只读且由另一个用户拥有的文件
【发布时间】:2019-10-08 14:12:26
【问题描述】:

我需要将一个文件(在这种情况下为 munge 密钥)从一个控制节点复制到多个从节点,并且我想使用 ansible 复制来执行此操作。问题是该文件必须由 munge 用户拥有,并且具有所有者只读权限“0400”。它所在的目录必须为 munge 所有,并具有权限“0700”。

下面的 ansible 任务结构适用于具有更多“0644”权限的其他文件,甚至可以成功设置所有者/组/权限,但对于该文件失败:

- name: Copy munge key
  copy:
    src: /etc/munge/munge.key
    dest: /etc/munge/munge.key
    owner: munge
    group: munge
    mode: '0400'

有没有办法在本地和远程“成为 root 或 munge”来复制文件?或者这个问题有其他简单的解决方案吗?

编辑:

我已经尝试过become: yesbecome_user: root 和单独的become_user: munge。都没有奏效。它每次都失败并出现错误"Could not find or access '/etc/munge/munge.key'"。该文件在那里,但 /etc/munge 和 /etc/munge/munge.key 都只有 munge 用户的权限。

编辑 2:

我的 hackish 冗长的解决方案包括五个任务: 1. 释放源文件和目录的权限; 2. 释放远程文件和目录的权限; 3.复制文件; 4、锁定远程文件和目录权限; 5. 锁定原始源文件和目录。这可行,但我仍然对“成为”何时生效以及它是否仅在源节点或远程节点上生效以及如何导致我的一步复制失败感到困惑。

【问题讨论】:

    标签: ansible copy file-permissions


    【解决方案1】:

    添加:

    become: true
    

    这应该足以避免任务失败。

    【讨论】:

    • 感谢您的回答,@sorin。我添加了编辑以澄清这不能解决问题。也许它需要在本地和远程“变成”;我不知道。
    • 您可能还需要添加 become_user: root
    • 在启用 selinux 的系统上,您可能还需要 selinux 模块,但 ansible 会告诉您是否需要它。
    猜你喜欢
    • 1970-01-01
    • 2019-06-17
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    • 2013-03-01
    • 1970-01-01
    相关资源
    最近更新 更多