Ansible 无法复制文件。大概权限

Ansible cannot copy a file. Probably permissions

我想使用 Ansible 将新证书复制到 Proxmox。

我的设置

.ssh/config 修改为 ssh machine 将使用 root 登录。

scp /Users/dir/key.pem /etc/pve/nodes/machine/pve-ssl.key 工作正常。

问题

Ansible 失败。我在最新的 macbook 上 运行。 ansible --version 是 ansible 2.2.1.0.

machine.yml

- hosts: machines
  vars:
    ca_dir: /Users/dir/

  - name: copy a pve-ssl.key
    copy:
      src="{{ ca_dir }}/key.pem"
      dest=/etc/pve/nodes/machine/pve-ssl.key

权限?

这很好用:

- hosts: machines
  vars:
    ca_dir: /Users/dir/

  - name: copy a pve-ssl.key
    copy:
      src="{{ ca_dir }}/key.pem"
      dest=/root/pve-ssl.key

所以这是一个权限问题,但为什么。 Ansible 正在使用 root 进入我的机器 - ansible machine -m shell -a 'who'.

可能与组权限有关,因为

$ ls -la /etc/pve/nodes/machine/
drwxr-xr-x 2 root www-data    0 Feb 26 01:35 .
[...]
$ ls -la /root
drwx------  5 root root  4096 Feb 26 12:09 .
[...]

如何用ansible复制文件?

  • 如果问题是“有什么问题?”那么答案是:

    这是因为 /dev/fuse 文件系统安装在 /etc/pve 上(Ansible 无法将文件从 /tmp 移动到 /etc/pve 的分支,就像一个简单的 mv /tmp/file /etc/pve命令失败)。

  • 如果问题是“如何处理问题?”然后:

    使用 Ansible 将文件复制到其他地方 (/home/user),然后使用 Proxmox 上的命令模块复制文件并删除原件。

您也可以先触摸文件再复制:

- name: touch empty file
  file:
    path: /etc/pve/nodes/machine/pve-ssl.key
    state: touch

- name: copy a pve-ssl.key
        copy:
          src: "{{ ca_dir }}/key.pem"
          dest: /etc/pve/nodes/machine/pve-ssl.key