为什么要有一个“Ansible”;大师剧本;?

为什么要有一个“Ansible”;大师剧本;?,ansible,ansible-playbook,Ansible,Ansible Playbook,在Ansible项目中拥有一个主剧本有什么意义?Ansible描述的项目布局如下: production # inventory file for production servers staging # inventory file for staging servers site.yml # master playbook webservers.yml # playbook for webserver tier dbservers.yml # p

在Ansible项目中拥有一个主剧本有什么意义?Ansible描述的项目布局如下:

production      # inventory file for production servers
staging         # inventory file for staging servers
site.yml        # master playbook
webservers.yml  # playbook for webserver tier
dbservers.yml   # playbook for dbserver tier
# site.yml
---
- include: webservers.yml
- include: dbservers.yml
---
- name: configure webservers
  hosts: webservers

  tasks:
    (tasks go here)

  roles:
    (roles go here)
主剧本将如下所示:

production      # inventory file for production servers
staging         # inventory file for staging servers
site.yml        # master playbook
webservers.yml  # playbook for webserver tier
dbservers.yml   # playbook for dbserver tier
# site.yml
---
- include: webservers.yml
- include: dbservers.yml
---
- name: configure webservers
  hosts: webservers

  tasks:
    (tasks go here)

  roles:
    (roles go here)
Web服务器和数据库服务器的外观如下所示:

production      # inventory file for production servers
staging         # inventory file for staging servers
site.yml        # master playbook
webservers.yml  # playbook for webserver tier
dbservers.yml   # playbook for dbserver tier
# site.yml
---
- include: webservers.yml
- include: dbservers.yml
---
- name: configure webservers
  hosts: webservers

  tasks:
    (tasks go here)

  roles:
    (roles go here)
通常,如果只有一个库存文件,可以在ansible.cfg文件中指定它:

# ansible.cfg
[defaults]
hostfile = inventory
然后,您只需使用以下命令运行playbook:

$ ansible-playbook site.yml
但是,如果我们将库存拆分为两个单独的文件,则在运行playbook时,您始终需要指定一个库存文件:

$ ansible-playbook -i production site.yml
但是,既然您的Web服务器或dbserver剧本很可能会指定“hosts:webserver”或“host:dbserver”来指示清单文件中的这些组,为什么不运行这些命令呢

$ ansible-playbook -i production webservers.yml
$ ansible-playbook -i production dbservers.yml
拥有一个site.yml主剧本能给你带来什么


谢谢。

这个例子非常简单

想象一下,您有一个相当复杂的基础设施,其各个组件有15-20个不同的剧本。这样的主剧本将确保不仅所有底层剧本都会执行,而且它们也会以正确的顺序执行。(即应该首先运行什么,dbserver.yml或webserver.yml?)