2014-09-04 44 views
0

因此,我为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 [email protected] asking for a password 

现在我想克隆一些git存储库(从我们自己的服务器),如果他们不存在。但在规定内,活跃用户是流浪的,我不想在我们的git服务器或任何其他可以使用的服务器上创建流浪用户。

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

我不希望开发人员(包括我自己)在自己的流浪盒(如adduser,ssh-copy-id等等)上进行用户管理。我想提供一切,如克隆git存储库,也许rsync'ing,但我希望能够为不同的流浪者箱子设置正确的用户。

我希望能够从外壳规定做到这一点:

如果流浪箱1 =>创建已经有我们的服务器密码的ssh访问用户developer1

如果流浪箱2 =>创建用户developer2已经有我们的服务器密码的ssh访问

如果流浪箱3 =>创建已经有我们的服务器密码的ssh访问用户developer3

如果流浪箱4 =>创建用户developer4已经有无密码的SSH访问我们的服务器

谢谢!

回答

0

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

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

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

if Socket.gethostname === 'Developer1PC' 
end 

if Socket.gethostname === 'Developer2PC' 
end 

if Socket.gethostname === 'Developer3PC' 
end 

if Socket.gethostname === 'Developer4PC' 
end 

你必须原谅任何错误红宝石,我不是一个Ruby开发,但我必须这么做沿流浪类似路线的东西。

+1

非常感谢。由于我没有很快得到答案,这就是我所做的: 我在我们的所有服务器中创建了一个名为vagrant的用户。此用户没有启用passoword登录以确保安全。我把ssh密钥放在我的流浪盒里,这样流浪的用户就可以访问我们的服务器。这不是我最初想要的,但我认为它更有意义。现在每个开发者都使用流浪用户。当他们提交信息来自他们的.gitconfig文件。所以在设置vagrant之后,他们必须编辑它们的.gitconfig.example文件并将其复制为.gitconfig和这样的东西。 – 2014-11-13 09:38:55