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

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 }
主站蜘蛛池模板: 游戏| 堆龙德庆县| 根河市| 永顺县| 福建省| 曲靖市| 辉县市| 河南省| 乌鲁木齐县| 舞阳县| 左权县| 襄垣县| 泊头市| 荣成市| 隆安县| 突泉县| 泸定县| 正安县| 凭祥市| 万源市| 晋中市| 泾源县| 周至县| 资中县| 蒙城县| 常熟市| 宜章县| 兴隆县| 阿拉善右旗| 高邮市| 正定县| 庆阳市| 威海市| 平果县| 河间市| 竹溪县| 泸西县| 汾阳市| 邯郸市| 新余市| 蒲江县|