官术网_书友最值得收藏!

Creating the www playbook

We created a site-wide playbook and used an include statement to call another playbook by the name www.yml. We will now create this file with one play, which maps our web server hosts to the Nginx role:

---
#www.yml : playbook for web servers
- hosts: www
  remote_user: vagrant
  sudo: yes
  roles:
     - nginx

The above code works as follows:

  • Run this code on any host that maps to the [www] group specified in the hosts file.
  • For each directory inside the roles/nginx/* file, include roles/nginx/*/main.yml to the play. This includes tasks, handlers, vars, meta, default, and so on. This is where the auto include rules apply.

The default and custom role paths

By default, Ansible looks inside the roles/ subdirectory of the project that we create playbooks for. Being top-class devops engineers, we will follow the best practice to have a centralized, version-controlled repository to store all your roles. We may also end up reusing the roles created by community. Once we do this, we can reuse these roles across multiple projects. In such cases, we will check out the code at one or more locations, for example:

  • /deploy/ansible/roles
  • /deploy/ansible/community/roles

For nondefault paths, we will need to add the roles_path parameter to ansible.cfg as shown in the following command:

roles_path = /deploy/ansible/roles:/deploy/ansible/community/roles

Parameterizing the roles

At times, we may need to override default parameters specified inside vars or the default directory of a role, for example, running web servers on port 8080 instead of 80. In such cases, we can also pass parameters to roles in the preceding playbook, as follows:

---
#www.yml : playbook for web servers
- hosts: www
  roles:
- { role: nginx, port: 8080 }
主站蜘蛛池模板: 静海县| 上栗县| 华坪县| 万年县| 古浪县| 德格县| 云浮市| 乌兰县| 左贡县| 成都市| 琼海市| 永兴县| 牡丹江市| 梁山县| 铁力市| 综艺| 崇左市| 普兰店市| 绥德县| 清镇市| 灵川县| 太仆寺旗| 巴塘县| 青浦区| 宜章县| 阜城县| 峨眉山市| 盖州市| 武鸣县| 曲松县| 古田县| 家居| 西藏| 怀来县| 海盐县| 连城县| 米易县| 城口县| 洪雅县| 浦县| 邵武市|