Ansible 只能在多机Vagrantfile中配置第一台机器



我有一个简单的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

相关内容

最新更新