用Ansible进行Vagrant的配置步骤

首先

以下是一个关于如何从Vagrant执行Ansible的设置方法的备忘录
参考:Vagrant官方文档

如果要分别启动的话

    1. $ 开启Vagrant

 

    $ 通过hosts文件执行ansible-playbook site.yml –sudo -k

※ -i: 指定 Inventory 文件
※ hosts: Inventory 文件
※ site.yml: play-book 文件
※ -k 选项: 提问 SSH 密码(会弹出提示框)

如果直接从Vagrant进行配置,则可以这样做。

将Ansible的配置管理设置添加到Vagrantfile中。


Vagrant.configure(2) do |config|

  config.vm.define "web" do |node|
    node.vm.box = "centos/7"
    node.vm.hostname = "web"
    node.vm.network :private_network, ip: "192.168.33.40"
  end
  config.vm.define "dbserver" do |node|
    node.vm.box = "centos/7"
    node.vm.hostname = "dbserver"
    node.vm.network :private_network, ip: "192.168.33.41"
  end

  #
  # Run Ansible from the Vagrant Host
  #
  config.vm.provision "ansible" do |ansible|
    ansible.ask_sudo_pass = true
    ansible.playbook = "site.yml"
    ansible.groups = {
      "group1" => ["web"]
      "group2" => ["dbserver"]
    }
  end

end

ansible.ask_sudo_pass = trueにより-kオプションと同等

ansible.playbook = “site.yml”によりplay-bookファイルを指定

currentディレクトリのからパスで指定する

ansible.groupによりInventoryファイルにおけるグループを作成

上記の例では実行により.vagrant/provisioners/ansible/inventory/ディレクトリ上にvagrant_ansible_inventoryというInventoryファイルが以下のように作成される

# Generated by Vagrant

web ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222
dbserver ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222

[group1]
web
[group2]
dbserver

在Vagrant中,将组名和主机名与Ansible组件的名称匹配。

执行

$ vagrant up/reload --provision
$ vagrant provision
bannerAds