如何组织用户进行vagrant shell配置?

时间:2014-09-04 05:00:12

标签: shell ssh vagrant provisioning

所以我为4个开发人员的小团队建立了一个流浪汉的环境。我正在使用Ubuntu / Precise32盒子,我创建了一个shell脚本,用于配置大量的apt-get和cp调用。像这样:

#!/bin/bash
#filename: provision.sh
sudo apt-get update
apt-get install debconf-utils -y > /dev/null
debconf-set-selections <<< "mysql-server mysql-server/root_password password myPassword"
debconf-set-selections <<< "mysql-server mysql-server/root_password_again password   myPassword"
sudo apt-get install -y vim apache2 mysql-server-5.5 mysql-client git sqlite python-pip phpmyadmin
sudo pip install virtualenv
sudo pip install Django==1.4
sudo a2enmod rewrite
sudo service apache2 restart


echo "Copying hosts ..."
sudo cp /vagrant/hosts /etc/

echo "Copying .gitconfig ..."
sudo cp /vagrant/.gitconfig /home/vagrant/

echo "Copying .bashrc ..."
sudo cp /vagrant/.bashrc /home/vagrant/

echo "Copying .bash_aliases ..."
sudo cp /vagrant/.bash_aliases /home/vagrant/

sudo ln -fs /usr/share/phpmyadmin /var/www

if [ ! -d "/vagrant/projects" ]; then
    echo "Creating folder /vagrant/projects"
    mkdir /vagrant/projects
fi

cd /vagrant/projects
#git clone myServer:/git/project.git
#can't clone because the user is vagrant. tries ssh vagrant@myServer asking for a password 

现在我想克隆一些git存储库(来自我们自己的服务器),如果它们还不存在的话。但是在该规定中,活动用户是流浪汉,我不想在我们的git服务器或我们可以使用的任何其他服务器上创建流浪者用户。

团队中的每个开发人员都已在其他服务器上拥有自己的ssh帐户。那么我应该在所有流浪盒中创建所有用户吗?如果是这样,他们怎么能没有密码ssh到其他服务器?

我不希望开发人员(包括我自己)在他们自己的流浪盒上进行用户管理(像adduser,ssh-copy-id等...)。我想提供克隆git存储库和rsync的所有内容,但我希望能够为不同的流浪盒设置合适的用户。

我希望能够从shell提供这样做:

如果Vagrant box 1 =&gt;创建已经对我们的服务器进行无密码ssh访问的用户developer1

如果Vagrant box 2 =&gt;创建已经对我们的服务器进行无密码ssh访问的用户developer2

如果Vagrant box 3 =&gt;创建已经对我们的服务器进行无密码ssh访问的用户developer3

如果Vagrant box 4 =&gt;创建已经对我们的服务器进行无密码ssh访问的用户developer4

谢谢!

1 个答案:

答案 0 :(得分:0)

我不知道答案,但希望我能够指出你可能的解决方案。

我猜测/ vagrant共享将指向您设置中的主机,在这种情况下,您可以将该信息存储在各个开发人员的计算机上的项目文件夹中,然后调用/使用它配置设置。

或者,尝试使用&#39; Socket.gethostname&#39;在vagrant文​​件中 - 在Ruby中它返回主机的名称,因此您可以使用它来嗅探哪个开发人员的机器正在运行的流氓文件。

即。

if Socket.gethostname === 'Developer1PC'
end

if Socket.gethostname === 'Developer2PC'
end

if Socket.gethostname === 'Developer3PC'
end

if Socket.gethostname === 'Developer4PC'
end

你必须原谅任何红宝石错误,我不是红宝石开发者,但我只是必须在Vagrant中做类似的事情。