Vagrant 使用Ansible更改主机文件夹权限
我使用Vagrant运行一个playbook-local.yml文件来创建一个本地开发环境,该环境运行与主playbook.yml相同角色的95%,最终将成为创建stage/prod服务器的工具。创建本地环境时,我有4个目录和2个文件,需要更改主机(在本例中是我的MacBook)上的权限。更改来宾计算机上的目录权限似乎不起作用。当我SSH到guest中并尝试chmod一些东西时,它不会改变,但是当我从主机执行时,它会改变 我的问题是,如何让Ansible更改主机上的文件夹和文件权限,以便在项目设置时无需手动执行此操作?以下是我尝试过的一些事情:Vagrant 使用Ansible更改主机文件夹权限,vagrant,ansible,Vagrant,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。由于您使用的是流浪汉,您可能需要后者。这是最有用的答案,谢谢。它最终为我工作。