我有一个简单的Vagrantfile,有3台机器和Ansible作为服务器配置器。流浪者文件看起来像这样:
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
# Jira machine
config.vm.define 'jira' do |jira|
jira.vm.box = 'puppetlabs/ubuntu-14.04-64-nocm'
jira.vm.network "private_network", ip:"192.168.77.11"
jira.vm.hostname = 'jira'
jira.vm.provider :virtualbox do |vb|
vb.name = 'jira'
end
end
# Master machine with proxy beetwen mattermost and jira
config.vm.define 'master' do |master|
master.vm.box = 'puppetlabs/ubuntu-14.04-64-nocm'
master.vm.network "private_network", ip:"192.168.77.10"
master.vm.hostname = 'master'
master.vm.provider :virtualbox do |vb|
vb.name = 'master'
end
end
# Mattermost machine
config.vm.define 'mattermost' do |mattermost|
mattermost.vm.box = 'puppetlabs/ubuntu-14.04-64-nocm'
mattermost.vm.network "private_network", ip:"192.168.77.12"
mattermost.vm.hostname = 'mattermost'
mattermost.vm.provider :virtualbox do |vb|
vb.name = 'mattermost'
end
end
# Provision part
config.vm.provision :ansible do |ansible|
ansible.limit = 'all'
ansible.playbook = 'provisioning/main.yml'
ansible.inventory_path = 'developer'
ansible.sudo = true
ansible.verbose = '-vvvv'
end
结束
流浪后,列表中的第一台计算机已正确配置,但稍后 Ansible 无法 ssh 到下一台计算机。正如我在调试中看到的那样,它仍然使用相同的私钥对其余机器进行身份验证。以下是提供输出的要点:https://gist.github.com/Cosaquee/224a84f171aa8cd458d9ce56e8c8e111。
我刚开始使用 Ansible,所以我不知道如何强制 ansible 在每台机器上都使用私钥,而不仅仅是一台。也许问题出在别的东西上。
任何帮助都会很好。谢谢。
这就是您的配置应该是什么样子。注意预配程序是如何嵌套的
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# Webserver, jobserver and message queue VM
config.vm.define "app", primary: true do |app|
app.vm.box = "ubuntu/trusty64"
app.vm.hostname = "app.restream.vm"
app.vm.synced_folder ".", "/vagrant", disabled: true
app.vm.synced_folder ".", "/var/www/app"
app.vm.synced_folder "../infra", "/var/www/infra"
app.vm.synced_folder "../widgetcodebucket", "/var/www/widgetcodebucket"
app.vm.network "private_network", ip: "10.10.10.90"
app.vm.provider "virtualbox" do |vb|
vb.gui = false
vb.customize ["modifyvm", :id, "--nictype1", "virtio"]
vb.customize ["modifyvm", :id, "--memory", "4096"]
vb.customize ["modifyvm", :id, "--cpus", "4"]
end
app.vm.provision "ansible" do |ansible|
ansible.host_key_checking = false
ansible.limit = 'all'
#ansible.verbose = 'vvvv'
ansible.inventory_path = '../infra/hosts-dev'
ansible.playbook = "../infra/vm.yml"
ansible.extra_vars = {
symfony_env: 'dev',
ansible_ssh_user: 'vagrant',
nginx_user: 'vagrant',
redis_ip: '127.0.0.1',
redis_port: 6379,
git_branch: "develop"
}
end
end
# Statistics and monitoring VM
config.vm.define "stats" do |stats|
stats.vm.box = "ubuntu/trusty64"
stats.vm.hostname = "stats.restream.vm"
stats.vm.synced_folder ".", "/vagrant", disabled: true
stats.vm.synced_folder "../infra", "/var/www/infra"
stats.vm.network "private_network", ip: "10.10.11.11"
stats.vm.provider "virtualbox" do |vb|
vb.gui = false
vb.customize ["modifyvm", :id, "--nictype1", "virtio"]
vb.customize ["modifyvm", :id, "--memory", "4096"]
vb.customize ["modifyvm", :id, "--cpus", "4"]
end
stats.vm.provision "ansible" do |ansible|
ansible.limit = 'all'
ansible.host_key_checking = false
#ansible.verbose = 'vvvv'
ansible.inventory_path = '../infra/hosts-dev'
ansible.playbook = "../infra/stats.yml"
ansible.extra_vars = {
symfony_env: 'dev',
ansible_ssh_user: 'vagrant',
graphite_db_name: 'graphite',
graphite_db_engine: 'django.db.backends.mysql',
graphite_db_user: 'root',
graphite_db_pass: 'root',
graphite_db_host: '127.0.0.1',
graphite_db_port: 3306
}
end
end
end