Ansible之ansible-playbook roles

刚开始学习运用 playbook 时,可能会把 playbook 写成一个很大的文件,到后来可能你会希望这些文件是可以方便去重用的,所以需要重新去组织这些文件。

  基本上,使用 include 语句引用 task 文件的方法,可允许你将一个配置策略分解到更小的文件中。使用 include 语句引用 tasks 是将 tasks 从其他文件拉取过来。因为 handlers 也是 tasks,所以你也可以使用 include 语句去引用 handlers 文件。handlers 文件来自 ‘handlers:’ section。

  Playbook 同样可以使用 include 引用其他 playbook 文件中的 play。这时被引用的 play 会被插入到当前的 playbook 中,当前的 playbook 中就有了一个更长的的 play 列表。

  假如你希望在多个 play 或者多个 playbook 中重用同一个 task 列表,你可以使用 include files 做到这一点。 当我们希望为系统定义一个角色时,使用 include 去包含 task 列表是一种很好用的方法。需要记住的是,一个 play 所要达成 的目标是将一组系统映射为多个角色。

将一整个playbook文件改写成采用roles完成

  先看目录层级关系:

tree ./nginx
./nginx
├── hosts						# 主机清单inventory文件
├── roles						# roles角色目录
│   └── nginx
│       └── tasks				# nginx角色的tasks
│           └── main.yml		# nginx角色要执行的tasks的yaml文件
└── site.yml					# 这个playbook的主入口

  分别查看每一个文件的内容:

nginx/hosts文件:

[nginx]
172.16.1.10

nginx/site.yml文件:

---
- hosts: all
  gather_facts: no

  roles:
    - nginx

nginx/roles/nginx/tasks/main.yml文件:

---
- name: Install Nginx
  yum: name=nginx state=present
- name: Start Nginx Service
  service: name=nginx state=started

检测语法

ansible-playbook -i hosts site.yml --syntax-check

playbook: site.yml

执行playbook

ansible-playbook -i hosts site.yml

PLAY [all] ***************************************************************************************************************************************

TASK [nginx : Install Nginx] *********************************************************************************************************************
ok: [172.16.1.10]

TASK [nginx : Start Nginx Service] ***************************************************************************************************************
ok: [172.16.1.10]

PLAY RECAP ***************************************************************************************************************************************
172.16.1.10                : ok=2    changed=0    unreachable=0    failed=0
posted @ 2019-01-19 20:47  StaryJie  阅读(660)  评论(0编辑  收藏  举报