Vagrant:ansible provisioner 的多个playbooks

8

以下形式是否可以/有效地为vagrant ansible provisioner运行多个playbooks:

 config.vm.define "repo", primary: true do |d|
    d.vm.hostname = "some.hostname"
    # Create a private network, which allows host-only access to the machine
    # using a specific IP.
    d.vm.network :private_network, ip: "10.10.2.90"
    d.vm.provision 'ansible' do |ansible|
      ansible.config_file = 'ansible/ansible.cfg'
      ansible.playbook = 'ansible/playbook1.yml'
      ansible.playbook = 'ansible/playbook2.yml'
      ansible.sudo = true
      ansible.inventory_path = 'ansible/inventory/site'
      ansible.host_key_checking = false
    end
  end
2个回答

16

不,它将无效。

如果您想运行2个playbook,则需要两次运行ansible provisioner,可以按如下方式完成:

 config.vm.define "repo", primary: true do |d|
    d.vm.hostname = "some.hostname"
    # Create a private network, which allows host-only access to the machine
    # using a specific IP.
    d.vm.network :private_network, ip: "10.10.2.90"

    # First playbook
    d.vm.provision  "playbook1", type:'ansible' do |ansible|
      ansible.config_file = 'ansible/ansible.cfg'
      ansible.playbook = 'ansible/playbook1.yml'
      ansible.sudo = true
      ansible.inventory_path = 'ansible/inventory/site'
      ansible.host_key_checking = false
    end

    # Second playbook
    d.vm.provision  "playbook2", type:'ansible' do |ansible|
      ansible.config_file = 'ansible/ansible.cfg'
      ansible.playbook = 'ansible/playbook2.yml'
      ansible.sudo = true
      ansible.inventory_path = 'ansible/inventory/site'
      ansible.host_key_checking = false
    end
  end

1
你可以使用角色来代替playbook,而角色包含指向roles子目录中定义的多个playbook的指针。例如,playbook.yml包含:
---
- name: BaseOS configuration
  hosts: all
  become: yes
  roles:
    - baseos
    - users

当调用playbook.yml时,BaseOS和用户都存在于roles子目录中,并将按顺序执行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接