2016-09-26 24 views
0

我試圖讓Ansible和Vagrant工作。在一個文件夾中(稱爲流浪)我有一個Vagrantfile,hosts文件和ansible.cfg文件,內容如下:Vagrant和Ansible:ad-hoc命令不起作用

Vagrantfile

# -*- mode: ruby -*- 
# vi: set ft=ruby : 

VAGRANTFILE_API_VERSION = "2" 
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 
# General Vagrant VM configuration. 
config.vm.box = "geerlingguy/centos7" 
config.ssh.insert_key = false 
config.vm.synced_folder ".", "/vagrant", disabled: true 

config.vm.provider :virtualbox do |v| 
    v.memory = 256 
    v.linked_clone = true 
end 

    # Server 1. 
config.vm.define "server1" do |app| 
    app.vm.hostname = "server1.dev" 
    app.vm.network :private_network, ip: "192.168.0.10" 
end 
end 

Hosts文件

[server1] 
192.168.0.10 

而且ansible.cfg文件

[defaults] 
inventory = hosts 
remote_user = vagrant 
host_key_checking = False 
ansible_ssh_private_key_file=<absolute_path_to_folder>/.vagrant/machines/server1/virtualbox/private_key 
ansible_ssh_user=vagrant 

當我運行以下荷蘭國際集團的命令,這是行不通的:

macbook-pro:Vagrant user1$ ansible server1 -m command -a uptime 
192.168.0.10 | UNREACHABLE! => { 
    "changed": false, 
    "msg": "Failed to connect to the host via ssh.", 
    "unreachable": true 
} 

似乎是在.vagrant/machines/server1/virtualbox文件夾中沒有私有密鑰文件。

當我改變ansible.cfg文件

[defaults] 
inventory = hosts 
remote_user = vagrant 
host_key_checking = False 
private_key_file = /Users/wauterw/.vagrant.d/insecure_private_key 

它的工作原理。

如何在.vagrant/machines/server1/virtualbox/private_key中使用/創建私鑰而不是一般的insecure_private_key

回答

1

刪除config.ssh.insert_key = false或更改爲true正如其他答案所建議的。這將創建一個新的密鑰,每當你創建實例。

使用hosts文件指定Ansible連接。

ansible-2.1.1.0Vagrant 1.8.1測試此:

ansible -vvvv

ansible.cfg:

[defaults] 
inventory = hosts 
host_key_checking = False 

hosts:

[server1] 
192.168.0.10 ansible_ssh_private_key_file=.vagrant/machines/server1/virtualbox/private_key ansible_user=vagrant 

運行以驗證連接ansible使用。你應該看到類似於:

即,

<192.168.0.10> SSH: EXEC ssh -C -vvv ... -o 'IdentityFile=".vagrant/machines/server1/virtualbox/private_key"' 
-o User=vagrant 
0

我建議使用一個無業遊民供應方插入,當你做vagrant up

# -*- mode: ruby -*- 
# vi: set ft=ruby : 

VAGRANTFILE_API_VERSION = "2" 
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 
# General Vagrant VM configuration. 
config.vm.box = "geerlingguy/centos7" 
config.ssh.insert_key = false 
config.vm.synced_folder ".", "/vagrant", disabled: true 

config.vm.provider :virtualbox do |v| 
    v.memory = 256 
    v.linked_clone = true 
end 

    # Server 1. 
config.vm.define "server1" do |app| 
    app.vm.hostname = "server1.dev" 
    app.vm.network :private_network, ip: "192.168.0.10" 
    app.vm.provision "shell", 
    inline: "echo <myPubKey> >> /home/vagrant/.ssh/authorized_keys" 
end 
end 

注意自己PUBKEY:如果您使用>>如我上面,它會保持在不安全的關鍵,但如果你使用>它會覆蓋不安全的密鑰。

0

註釋掉下面的行放在Vagrantfile

config.ssh.insert_key = false 

您還可以將值更改爲true(這是默認的,這就是爲什麼你不需要行的話)。


此行實際上可以防止創建私鑰並命令Vagrant使用默認的不安全密鑰。請參閱documentation