2014-09-04 43 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