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

时间:2016-02-29 18:10:00

标签: ansible ansible-playbook

在Ansible项目中拥有主游戏手册有什么意义? Ansible best practices描述了这样的项目布局:

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

Web服务器和dbservers看起来像这样:

---
- name: configure webservers
  hosts: webservers

  tasks:
    (tasks go here)

  roles:
    (roles go here)

通常,如果您只有一个库存文件,则可以在ansible.cfg文件中指定它:

# ansible.cfg
[defaults]
hostfile = inventory

然后您可以使用以下命令运行您的剧本:

$ ansible-playbook site.yml

但是如果我们将库存分成两个单独的文件,您在运行游戏手册时总是需要指定库存文件:

$ ansible-playbook -i production site.yml

但是,由于您的Web服务器或dbserver playbooks很可能会指定“hosts:webservers”或“host:dbservers”来指示清单文件中的这些相应组,为什么不运行这些命令呢? / p>

$ ansible-playbook -i production webservers.yml
$ ansible-playbook -i production dbservers.yml

有一个site.yml主剧本给你买什么?

感谢。

1 个答案:

答案 0 :(得分:4)

这个例子非常简单。

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