Ansible无法复制文件。可能是权限

时间:2017-02-26 11:28:56

标签: ansible proxmox

我想使用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复制文件?

2 个答案:

答案 0 :(得分:1)

  • 如果问题是"问题是什么?"然后答案是:

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

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

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

答案 1 :(得分:-1)

您也可以先触摸该文件然后复制它:

- 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