-3

这是一个超级简单的任务。它将本地机器上的文件从一个目录复制到另一个目录。我不断获得许可被拒绝。我从下面的代码片段中删除了变量块。我已经使用命令行进行了测试,并且能够 cp 和 mv 这两个目录之间的文件。任何建议,将不胜感激。

- name: Packing up $HOME and moving to FileExpress
  hosts: localhost
  connection: local
  become: False
  tasks:
    - name: Copy package
      ansible.builtin.copy:
        src: "/tmp/{{ package }}"
        dest: "{{ fedir }}/{{ package }}"
        mode: 0644
        remote_src: True

我收到的错误如下。来自变量的任何内容都被 {{}} 包围

fatal: [localhost]: FAILED! => {"changed": false, "msg": "failed to copy: /tmp/{{package}} to /{{fedir}}", "traceback": "Traceback (most recent call last):\n  File \"/tmp/ansible_ansible.legacy.copy_payload_8zc9gcnj/ansible_ansible.legacy.copy_payload.zip/ansible/modules/copy.py\", line 670, in main\n  File \"/home/{{user}}/.pyenv/versions/3.9.5/lib/python3.9/tempfile.py\", line 332, in mkstemp\n    return _mkstemp_inner(dir, prefix, suffix, flags, output_type)\n  File \"/home/{{user}}/.pyenv/versions/3.9.5/lib/python3.9/tempfile.py\", line 251, in _mkstemp_inner\n    fd = _os.open(file, flags, 0o600)\nPermissionError: [Errno 13] Permission denied: b'/{{fedir}}/tmp8b2t3qrz'\n"}
4

2 回答 2

0

经过测试,还是不知道为什么不行,但是copy模块不行。也没有使用命令模块来运行执行复制的脚本。我尝试使用shell模块来运行脚本,并且成功了。

于 2021-09-08T23:41:53.313 回答
0

尝试become: True赋予sudo命令权限。当您从命令行进行测试时,Ansible 不会使用您正在使用的同一用户。自从我接触 Ansible 已经有一段时间了,他可能不是最好的方法,但我确实记得become: True在过去的生活中解决了很多问题。

于 2021-09-10T14:34:34.790 回答