首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ansible & Vagrant开发环境

Ansible & Vagrant开发环境
EN

Stack Overflow用户
提问于 2016-01-07 13:01:30
回答 2查看 559关注 0票数 2

我刚刚发现了Ansible,这太棒了!我写了一些很酷的剧本来管理我服务器上的0关机部署,但是我浪费了相当多的时间来等待事情的发生,因为我有时不得不与糟糕的互联网连接一起工作。所以我想,我也许可以在boot2docker上运行Ansible,但是没有成功。在做了一些简单的研究之后,我意识到它太笨拙了,它永远不会像我真正的Ubuntu服务器那样运行。所以在这里,我试图让它与瓦格兰特一起工作。

我想要实现像笔记本电脑> Ansible > Vagrant 这样的东西;不想从Vagrant运行游戏手册!

VagrantFile

代码语言:javascript
复制
Vagrant.configure(2) do |config|
  config.vm.box = "ubuntu/trusty64"
  config.ssh.forward_agent = true
end

流浪汉ssh-config

代码语言:javascript
复制
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

多亏了一些这样的问题,我才能做到这一点:

代码语言:javascript
复制
$ 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).

不确定库存

代码语言:javascript
复制
[staging]
vagrant@localhost

不可调配置

代码语言:javascript
复制
[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文件转换为不可选配置?它在命令行上也不工作!

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-07 20:38:36

要使用带有和经典的ssh连接的迷航器,首先要向vagrant文件中添加另一个私有IP。

代码语言:javascript
复制
config.vm.network "private_network", ip: "192.168.1.2"

重新加载实例

代码语言:javascript
复制
vagrant reload

然后您可以使用私钥通过ssh进行连接。

代码语言:javascript
复制
ssh -vvv vagrant@192.168.1.2 -p 2222 -i /Users/cesco/.vagrant.d/insecure_private_key 

这是最好的办法。

票数 2
EN

Stack Overflow用户

发布于 2016-01-08 10:45:03

你误会了。迷航插件不从流浪者运行,而是从本地框将SSHs放入迷航器中。这是要走的路,因为这意味着只要进行一些小的更改,就可以将目标对准远程主机。

要使它正常工作,需要将类似的内容添加到Vagrantfile中:

代码语言:javascript
复制
  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文件:

代码语言:javascript
复制
hostfile = ../.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory

创建一个包含以下内容的hosts库存文件:

代码语言:javascript
复制
localhost=127.0.0.1  ansible_connection=local

现在,vagrant up将弹出并提供实例,或者运行vagrant provision来提供一个正在运行的流浪者。

要直接针对你的流浪汉运行游戏手册,请使用:

代码语言:javascript
复制
ansible-playbook -u vagrant --private-key=~/.vagrant.d/insecure_private_key yourplaybook.yml
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34655854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档