Vagrant 使用Ansible更改主机文件夹权限

Vagrant 使用Ansible更改主机文件夹权限,vagrant,ansible,Vagrant,Ansible,我使用Vagrant运行一个playbook-local.yml文件来创建一个本地开发环境,该环境运行与主playbook.yml相同角色的95%,最终将成为创建stage/prod服务器的工具。创建本地环境时,我有4个目录和2个文件,需要更改主机(在本例中是我的MacBook)上的权限。更改来宾计算机上的目录权限似乎不起作用。当我SSH到guest中并尝试chmod一些东西时,它不会改变,但是当我从主机执行时,它会改变 我的问题是,如何让Ansible更改主机上的文件夹和文件权限,以便在项目设

我使用Vagrant运行一个playbook-local.yml文件来创建一个本地开发环境,该环境运行与主playbook.yml相同角色的95%,最终将成为创建stage/prod服务器的工具。创建本地环境时,我有4个目录和2个文件,需要更改主机(在本例中是我的MacBook)上的权限。更改来宾计算机上的目录权限似乎不起作用。当我SSH到guest中并尝试chmod一些东西时,它不会改变,但是当我从主机执行时,它会改变

我的问题是,如何让Ansible更改主机上的文件夹和文件权限,以便在项目设置时无需手动执行此操作?以下是我尝试过的一些事情:

- name: Set folder permissions to 0775
  shell: scripts/set-perms.sh // This runs the chmod commands
  connection: local
这是:

- name: Set folder permissions to 0775
  become: true
  connection: local
  command: sudo find "{{ item }}" -type d -exec chmod 0775 {} \;
  file: path={{ item }} mode=0775 state=directory recurse=yes
  with_items:
    - ../../../../www/system/cache
    - ../../../../www/_images
    - ../../../../www/app/templates
    - ../../../../www/html-assets
我已经在谷歌上搜索出了这些废话,但我发现所有的建议都不管用。我遇到的最常见错误是询问sudo密码(如下)。如果我需要在Ansible运行时提供密码,这很好,但是我该如何做呢

FAILED! => {"changed": false, "failed": true, "module_stderr": "sudo: a password is required\n", "module_stdout": "", "msg": "MODULE FAILURE", "rc": 1}

如果主机上的文件/目录属于运行playbook的同一用户,则您不需要在
命令
模块中使用
been:True
sudo

- name: Set folder permissions to 0775
  become: False
  connection: local
  file: path={{ item }} mode=0775 state=directory recurse=yes
  with_items:
    - ../../../../www/system/cache
    - ../../../../www/_images
    - ../../../../www/app/templates
    - ../../../../www/html-assets

或者,如果文件/目录归另一个用户所有,则需要恢复到
been:True
,并为ansible playbook命令提供been密码或在主机上设置无密码sudo。由于您使用的是流浪汉,您可能需要后者。

这是最有用的答案,谢谢。它最终为我工作。