2017-06-21 214 views
0

我有一个最后的版本Jenkis(运行在Tomcat下)以及Vagrant和LXC容器。 运行在jenkins用户下的Tomcat。我旁边VagrantfileJenkins和Vagrant有非常奇怪的情况

Vagrant.configure(2) do |config| 
    config.vm.box = "arjenvrielink/xenial64-lxc" 
    config.vm.provider :lxc do |lxc| 
    lxc.backingstore = 'dir' 
    end 
end 

所以,当我通过vagrant up一切跑到离庆典LXC容器的罚款。并且vagrant ssh工作。但是,如果我通过詹金斯作业中运行它,我得到这个

Started by user admin 
[EnvInject] - Loading node environment variables. 
Building in workspace /home/jenkins/workspaces/server 
[server] $ /bin/bash /opt/tomcat/temp/jenkins204809790857124992.sh 
Bringing machine 'default' up with 'lxc' provider... 
==> default: Importing base box 'arjenvrielink/xenial64-lxc'... 
==> default: Checking if box 'arjenvrielink/xenial64-lxc' is up to date... 
==> default: Setting up mount entries for shared folders... 
    default: /vagrant => /home/jenkins/workspaces/server/vagrant 
==> default: Starting container... 
==> default: Waiting for machine to boot. This may take a few minutes... 
    default: SSH address: 10.0.3.29:22 
    default: SSH username: vagrant 
    default: SSH auth method: private key 
    default: Warning: Authentication failure. Retrying... 
    default: Warning: Authentication failure. Retrying... 
Build was aborted 
Aborted by admin 
Finished: ABORTED 

詹金斯作业只包含这些命令

!#/bin/bash 
cd vagrant 
vagrant up 

在调查过程,我发现下一个不同。然后,我从猛砸vagrant ssh-config出这个跑:

Host default 
    HostName 10.0.3.212 
    User vagrant 
    Port 22 
    UserKnownHostsFile /dev/null 
    StrictHostKeyChecking no 
    PasswordAuthentication no 
    IdentityFile /home/jenkins/workspaces/server/vagrant/.vagrant/machines/default/lxc/private_key 
    IdentitiesOnly yes 
    LogLevel FATAL 

但后来我从詹金斯的工作跑我这

Host default 
    HostName 10.0.3.217 
    User vagrant 
    Port 22 
    UserKnownHostsFile /dev/null 
    StrictHostKeyChecking no 
    PasswordAuthentication no 
    IdentityFile /home/jenkins/.vagrant.d/insecure_private_key 
    IdentitiesOnly yes 
    LogLevel FATAL 

我做了什么错?

回答

0

编辑:

arjenvrielink/xenial64-lxcan official box 所以我还是很肯定你的问题是与无业游民insecure key replacement mecanism但我的解决方案不会帮你。


arjenvrielink/xenial64-lxc自定义框?

如果是这样,请确保或者让不安全的钥匙在里面,这样任何新用户(包括詹金斯)都可以访问这个包装盒,因为在第一次使用不安全钥匙时,流浪者连接到包装盒上,然后创建一个新包装盒。

如果您要包括在框中输入您自己的密钥,确保下面的行添加到您的Vagrantfile:

Vagrant.configure("2") do |config| 
    config.ssh.private_key_path = File.expand_path("<path of the key relative to Vagrantfile>", __FILE__) 
end 

需要注意的是,你将不得不作出关键随处可见,你游民environement会跑。

+0

对不起,但不是。我为詹金斯的DEP版本设置了临时解决方案。没有像一个问题。但是我发现了一件事。然后我使用了Tomcat版本,tmp文件夹在Tomcat主文件夹内。然后我用DEP包的tmp文件夹在root里面。也许这是解决问题的关键。我会在稍后检查。 –

+0

对不起,但我不明白。 “我将Jenkins的DEP版本设置为临时解决方案”是什么意思?句子“没有任何问题,但我发现了一件事。”不明白你想说什么?无论如何,你有错误“默认:警告:认证失败。重试...”来自一个流浪SSH密钥的问题,与tomcat或甚至真正jenkins恕我直言无关。 –

+0

你的脚本也做一个“CD流浪汉”,但相对于在哪里呢? –