为什么要有 Ansible "master playbook"?
Why have an Ansible "master 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
网络服务器和数据库服务器看起来像这样:
---
- 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
但是,由于您的网络服务器或数据库服务器剧本很可能会指定 "hosts: webservers" 或 "host: dbservers" 以在您的清单文件中指示这些各自的组,为什么不直接 运行 这些命令?
$ ansible-playbook -i production webservers.yml
$ ansible-playbook -i production dbservers.yml
拥有一本 site.yml 大师剧本能给你带来什么?
谢谢。
这个例子非常简单。
假设您有一个相当复杂的基础架构,其中包含 15-20 个不同的剧本用于其各种组件。这样的主剧本将确保不仅所有底层剧本都将执行,而且它们将以正确的顺序执行。 (即应该先运行,dbservers.yml还是webservers.yml?)
在 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
网络服务器和数据库服务器看起来像这样:
---
- 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
但是,由于您的网络服务器或数据库服务器剧本很可能会指定 "hosts: webservers" 或 "host: dbservers" 以在您的清单文件中指示这些各自的组,为什么不直接 运行 这些命令?
$ ansible-playbook -i production webservers.yml
$ ansible-playbook -i production dbservers.yml
拥有一本 site.yml 大师剧本能给你带来什么?
谢谢。
这个例子非常简单。
假设您有一个相当复杂的基础架构,其中包含 15-20 个不同的剧本用于其各种组件。这样的主剧本将确保不仅所有底层剧本都将执行,而且它们将以正确的顺序执行。 (即应该先运行,dbservers.yml还是webservers.yml?)