2015-07-16 3 views
0

Я использую Vagrant для обеспечения среды разработки.Автоматизация конфигурации ключа SSH для Jenkins и GIthub Through Vagrant

Vagrant делает что-то похожее на следующее:

  1. Устанавливает Дженкинс (и Java, поскольку его зависимостей)
  2. ... Другая зависимость устанавливает ....
  3. копии закрытого ключа id_rsa SSH к /.ssh в $JENKINS_HOME которая /var/lib/jenkins/

  4. Выполнить через скрипт, который клонирует все операции РЕПО GitHub и стро ds и развертывает проекты.

Вопрос, который мы имеем, состоит из #3 в приведенном выше списке.

Поскольку нам нужно, чтобы это выполнялось в скрипте, мы не можем вручную запустить команду с GitHub, чтобы добавить запись в known_hosts. Таким образом, я попытался с помощью следующих действий:

sudo -u jenkins ssh-keyscan github.com > /var/lib/jenkins/.ssh/known_hosts 

Я также попытался запустить это без использования jenkins пользователя, но безуспешно.

Вот скрипт, который указывает Vagrantfile после установки Jenkins.

#Setup SSH for GitHub 
echo "Configuring GitHub SSH Keys..." 
if [ ! -d /var/lib/jenkins/.ssh ]; 
then 

#copy private key to $JENKINS_HOME/.ssh 
sudo mkdir -p /var/lib/jenkins/.ssh 
sudo cp /vagrant/ssh/id_rsa /var/lib/jenkins/.ssh/ 

#Modify permissions so jenkins user can access 
sudo chown -R jenkins:jenkins /var/lib/jenkins/.ssh/ 
sudo chmod 0600 /var/lib/jenkins/.ssh 
sudo chmod 0600 /var/lib/jenkins/.ssh/id_rsa 

#Add GitHub to known_hosts so it doesn't prompt us 
sudo -u jenkins ssh-keyscan github.com > /var/lib/jenkins/.ssh/known_hosts 

else 
    echo "GitHub SSH Keys already configured..." 
fi 

Я делаю это совершенно неправильно?

ПРОБЛЕМА состоит в том,

я ссылки и видел подобные вопросы, такие, как пост ссылки удара

Authenticate Jenkins CI for Github private repository

ответ

0

Одним из решений является использование опции ssh_config GlobalKnownHostsFile, который находится по умолчанию в /etc/ssh/ssh_known_hosts - если вы храните здесь GitHub открытый ключ (используя под root), вам не нужно делать какие-либо магии с помощью chmod и тому подобное.