我刚刚发现了Ansible,它很棒!我已经编写了一些很酷的剧本来管理我的服务器上的0downtime docker部署,但由于我有时不得不使用糟糕的互联网连接,我浪费了相当多的时间等待事情发生。所以我想,我可能能够针对boot2docker运行Ansible,但没有成功,经过一些研究后,我意识到它太过于hacky而且它永远不会像我的实际Ubuntu服务器那样。所以在这里我试图让它与Vagrant一起工作。
我想要像笔记本电脑>这样的东西。 Ansible> Vagrant Box ;不想从Vagrant Box中运行剧本!
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/trusty64"
config.ssh.forward_agent = true
end
Host default
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile "/Users/cesco/Code/vagrant/.vagrant/machines/default/virtualbox/private_key"
IdentitiesOnly yes
LogLevel FATAL
ForwardAgent yes
感谢一些问题,我能够做到这一点:
$ vagrant ssh-config > vagrant-ssh
$ ssh -F vagrant-ssh default
$ vagrant@vagrant-ubuntu-trusty-64:~$
但每次我尝试在流浪盒上运行Ansible ping时,我都会继续localhost | FAILED => SSH Error: Permission denied (publickey,password).
。
[staging]
vagrant@localhost
[ssh_connection]
ssh_args = -o UserKnownHostsFile=/dev/null \
-o StrictHostKeyChecking=no \
-o PasswordAuthentication=no \
-o IdentityFile=/Users/cesco/.vagrant.d/insecure_private_key \
-o IdentitiesOnly=yes \
-o LogLevel=FATAL \
-p 2222
如何将ssh文件翻译为ansible Configurantion? 它也不能在命令行上运行!
ssh -vvv vagrant@localhost -p 2222 -i /Users/cesco/.vagrant.d/insecure_private_key -o IdentitiesOnly=yes -o LogLevel=FATAL -o PasswordAuthentication=no -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
答案 0 :(得分:2)
要使用vagrant和经典的ssh连接,首先将另一个私有IP添加到您的Vagrant文件中。
config.vm.network "private_network", ip: "192.168.1.2"
重新加载您的实例
vagrant reload
然后您可以使用私钥通过ssh进行连接。
ssh -vvv vagrant@192.168.1.2 -p 2222 -i /Users/cesco/.vagrant.d/insecure_private_key
这是最好的方法。
答案 1 :(得分:0)
你误解了。流浪的ansible插件不会从流浪者那里运行ansible,而是从你的本地方框SSH进入流浪者。这是要走的路,因为这意味着只需进行一些小改动就可以定位远程主机。
要使其正常工作,您需要在Vagrantfile中添加以下内容:
config.vm.provision "ansible" do |ansible|
ansible.playbook = "ansible/vagrant.yml"
ansible.sudo = true
ansible.ask_vault_pass = true # comment out if you don't need
ansible.verbose = 'vv' # comment out if you don't want
ansible.groups = {
"tag_Role_myrole" => ["myrole"]
}
ansible.extra_vars = {
role: "myrole"
}
end
# Set the name of the VM.
config.vm.define "myrole" do |myrole|
luigi.vm.hostname = "myrole"
end
使用以下代码创建/更新您的ansible.cfg
文件
hostfile = ../.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory
创建一个hosts
广告资源文件,其中包含:
localhost=127.0.0.1 ansible_connection=local
现在vagrant up
将调出并配置实例,或运行vagrant provision
来(重新)设置正在运行的流浪者。
直接针对你的流浪汉使用剧本:
ansible-playbook -u vagrant --private-key=~/.vagrant.d/insecure_private_key yourplaybook.yml