我正在使用Ansible建立一个Ubuntu Vagrant环境(使用VirtualBox提供程序)。我正在将主机/本地计算机上的目录与guest / Vagrant计算机同步。
are issues有同步文件夹的权限,所以我在我的Vagrantfile中指定同步文件夹,如下所示:
config.vm.synced_folder "./path/to/local/dir",
"/home/deploy/webapps/myapp",
owner: 5000, group: 5000, mount_options: ['dmode=775', 'fmode=664']
然后在Ansible任务中,当我创建deploy
用户和组时,我将其uid
和gid
指定为5000
。这似乎是公认的做事方式之一。
但是,这会导致deploy
用户的主目录归root
所有,并且没有完整的文件补充:
deploy@vagrant-ubuntu-trusty-64:~$ ls -al /home
total 20
drwxr-xr-x 5 root root 4096 Mar 1 17:20 .
drwxr-xr-x 23 root root 4096 Mar 1 17:20 ..
drwxr-xr-x 5 root root 4096 Mar 1 17:23 deploy
drwxr-xr-x 3 ubuntu ubuntu 4096 Mar 1 17:19 ubuntu
drwxr-xr-x 5 vagrant vagrant 4096 Mar 1 17:20 vagrant
deploy@vagrant-ubuntu-trusty-64:~$ ls -al /home/deploy
total 24
drwxr-xr-x 5 root root 4096 Mar 1 17:23 .
drwxr-xr-x 5 root root 4096 Mar 1 17:20 ..
-rw-r--r-- 1 root root 213 Mar 1 17:23 .bashrc
drwxr-xr-x 12 deploy deploy 4096 Mar 1 17:26 .pyenv
drwx------ 2 deploy deploy 4096 Mar 1 17:20 .ssh
drwxr-xr-x 3 root root 4096 Mar 1 17:20 webapps
deploy@vagrant-ubuntu-trusty-64:~$ ls -al /home/deploy/webapps
total 8
drwxr-xr-x 3 root root 4096 Mar 1 17:20 .
drwxr-xr-x 5 root root 4096 Mar 1 17:23 ..
drwxrwxr-x 1 deploy deploy 850 Mar 1 14:53 myapp
相比之下,如果我没有在Vagrantfile中同步该文件夹,则存在显着差异:
deploy@vagrant-ubuntu-trusty-64:~$ ls -al /home
total 20
drwxr-xr-x 5 root root 4096 Mar 1 17:30 .
drwxr-xr-x 23 root root 4096 Mar 1 17:30 ..
drwxr-xr-x 5 deploy deploy 4096 Mar 1 17:37 deploy
drwxr-xr-x 3 ubuntu ubuntu 4096 Mar 1 17:30 ubuntu
drwxr-xr-x 5 vagrant vagrant 4096 Mar 1 17:30 vagrant
deploy@vagrant-ubuntu-trusty-64:~$ ls -al /home/deploy/
total 32
drwxr-xr-x 5 deploy deploy 4096 Mar 1 17:37 .
drwxr-xr-x 5 root root 4096 Mar 1 17:30 ..
-rw-r--r-- 1 deploy deploy 220 Apr 9 2014 .bash_logout
-rw-r--r-- 1 deploy deploy 3850 Mar 1 17:33 .bashrc
drwx------ 2 deploy deploy 4096 Mar 1 17:37 .cache
-rw-r--r-- 1 deploy deploy 675 Apr 9 2014 .profile
drwxr-xr-x 12 deploy deploy 4096 Mar 1 17:37 .pyenv
drwx------ 2 deploy deploy 4096 Mar 1 17:30 .ssh
那么,在同步该目录时,为什么/home/deploy
拥有root
?为什么deploy
用户不会获得.profile
,.bash_logout
等文件?而且,最重要的是,我该如何纠正这个问题?
答案 0 :(得分:2)
我不太了解Ubuntu等100%确定这是正在发生的事情,但这似乎是合理的......
我认为在/home/deploy/webapps/myapp
创建同步文件夹时,Vagrant可以理解地创建/home/deploy
目录及其内容。它的所有者:组是root:root
。
所以,稍后,当我的Ansible playbook创建deploy
用户时,它会看到它已经有一个主目录,并且不打算创建其.bashrc
等,或者重新设置其用户:组权限。
所以,为了避免这种情况,我已经在/webapps/myapp
处同步了该文件夹,并将我的Ansible剧本改为期望该位置。似乎工作。