- Ansible Playbook Essentials
- Gourav Shah
- 431字
- 2021-07-16 20:47:49
Creating a site-wide playbook, nesting, and using include statements
As a best practice, we will create a top-level file, which will contain the blueprint of our complete infrastructure. Technically, we can include everything that we need to configure inside just one file. However, that would have two problems:
- It would quickly get out of control as we start adding tasks, variables, and handlers to this single file. It would be a nightmare to maintain such code.
- It would also be difficult to reuse and share such code. One of the advantages of using a tool such as Ansible is its ability to separate data from code. Data is organization-specific, and code is generic. This generic code can then be shared with others. However, if you write everything in a single file, it would be impossible to do so.
To avoid this problem, we will start organizing our code in a modular fashion, as follows:
- We will create roles for each of the applications that we need to configure. In this case, it is Nginx
- Our web server may need to install more than one application in addition to Nginx, for example, PHP and OpenSSL. To encapsulate all of these, we will create a playbook named
www.yml
. - The preceding playbook that we created will map hosts with the Nginx role. We may add more roles to it later.
- We will add this playbook to the top-level playbook, that is,
site.yml
The following diagram depicts the preceding steps in a very simple manner:

Here is our site.yml
file:
--- # site.yml : This is a sitewide playbook - include: www.yml
The preceding include
directive assists us with modularizing the code. Instead of writing it all in one file, we split the logic and import what is required. In this case, we will include another playbook, which is called a nested playbook.
The following are some guidelines on what can be included and how:
- The
include
directive can be used to include tasks, handlers, and even other playbooks - If you include a playbook inside another like we did in the
site.yml
file, you cannot substitute the variables - The
include
keyword can be used in combination with regular task/handler specifications - It's possible to pass parameters with include statements. This is called as parameterized include
Tip
Roles and auto-includes
Roles have implicit rules to auto include files. So long as you follow the directory layout conventions, you are assured that all your tasks, handlers, and the rest of the files are included automatically. Hence, it's important to create the subdirectories with the exact names as specified by Ansible.
- C語言程序設計實踐教程(第2版)
- 軟件項目估算
- Learning Chef
- OpenCV for Secret Agents
- Java設計模式及實踐
- Java 11 Cookbook
- Go語言精進之路:從新手到高手的編程思想、方法和技巧(1)
- 用戶體驗可視化指南
- Microsoft 365 Certified Fundamentals MS-900 Exam Guide
- Getting Started with Polymer
- 小程序從0到1:微信全棧工程師一本通
- Visual Basic語言程序設計基礎(第3版)
- jQuery Mobile Web Development Essentials(Second Edition)
- Spring Boot從入門到實戰
- Python無監督學習