ansible-playbook-roles目录结构
1. ansible-角色-roles目录结构
角色是基于已知文件结构自动加载某些vars_files,任务和处理程序的方法。按角色对内容进行分组还可以轻松与其他用户共享角色。
以下是角色目录结构示例图:

1) 目录结构解释
角色期望文件位于某些目录名称中。角色必须至少包含其中一个目录,但是排除任何未使用的目录是完全正确的。在使用时,每个目录必须包含一个main.yml文件,其中包含相关内容:
- site:是ansible的统一入口,就行调用的安装服务总配置
- webservers.yaml:主要是对ansible里一些能做功能,yum等
- roles:角色目录
- common:公共的roles目录
- nginx:角色的软件目录
- tasks:包含角色要执行的主要任务列表
- handlers:包含处理程序,可以由此角色使用,甚至可以在此角色之外的任何位置使用
- defaults:角色默认的变量
- vars:角色其他的变量
- files:包含可以通过此角色部署的文件
- templates:包含可以通过此角色部署的模板
- meta:角色定义的一些元数据
其他YAML文件可能包含在某些目录中。例如,通常的做法是从 tasks/main.yml 文件中包含特定于平台的任务:
1 # roles/example/tasks/main.yml
2 - name: added in 2.4, previously you used 'include'
3 import_tasks: redhat.yml
4 when: ansible_facts['os_family']|lower == 'redhat'
5 - import_tasks: debian.yml
6 when: ansible_facts['os_family']|lower == 'debian'
7
8 # roles/example/tasks/redhat.yml
9 - yum:
10 name: "httpd"
11 state: present
12
13 # roles/example/tasks/debian.yml
14 - apt:
15 name: "apache2"
16 state: present
角色还可以包括模块和其他插件类型
2) 使用角色
使用角色的经典(原始)方式通过给定游戏的选项:roles
1 ---
2 - hosts: webservers
3 roles:
4 - common
5 - webservers
这为每个角色“xxx”指定了以下行为:
- 如果角色 /xxx/tasks/main.yaml存在,则其中列出的任务将添加到任务中,否则将不会添加任务中。
- 如果角色 /xxx/handlers/main.yaml存在,则其中列出的处理程序将添加到任务中,否则将不会添加任务中。
- 如果角色 /xxx/vars/main.yml存在,则其中列出的处理程序将添加到任务中,否则将不会添加任务中。
- 如果角色 /xxx/defaults/main.yml存在,则其中列出的处理程序将添加到任务中,否则将不会添加任务中。
- 如果角色 /xxx/meta/main.yml存在,则其中列出的任何角色依赖项将添加到角色列表(1.3及更高版本)。
- 任何副本,脚本,模板或包含任务(在角色中)都可以引用roles / x / {files,templates,tasks} /(dir取决于任务)中的文件,而无需相对或绝对地路径化它们。
以下这种方式使用时,你的剧本的执行顺序如下:
- pre_tasks游戏中定义的任何内容。
- 到目前为止触发的任何处理程序都将运行。
- 列出的每个角色将依次执行。将首先运行角色中定义的任何角色依赖项,但需遵循标记过滤和条件。roles meta/main.yml
- tasks游戏中定义的任何内容。
- 到目前为止触发的任何处理程序都将运行。
- post_tasks游戏中定义的任何内容。
- 到目前为止触发的任何处理程序都将运行。
ansible-playbook-roles目录结构的更多相关文章
- Ansible playbook roles
1 概述 角色(roles):如果我们使用playbook写成一个文件,这个文件会很大,但是不方便组织,我们可以分组,把playbook根据功能,如handler,tasks等分门别类的放在在各自的 ...
- Ansible Playbook Roles and Include Statements
介绍 虽然可以在一个非常大的文件中编写一个playbook(您可能会以这种方式开始学习playbook),但最终您将需要重新使用文件并开始组织事情. 在基本级别,饱含任务的文件允许您将配置策略分解成较 ...
- Ansible之roles角色
一.roles简介 ansible自1.2版本引入的新特性,用于层次性.结构化地组织playbook.roles能够根据层次型结构自动装载变量文件.tasks以及handlers等.要使用roles只 ...
- 自动化运维工具Ansible之Roles测验详解
Ansible Roles 详解与实战案例 主机规划 添加用户账号 说明: 1. 运维人员使用的登录账号: 2. 所有的业务都放在 /app/ 下「yun用户的家目录」,避免业务数据乱放: 3. 该用 ...
- ansible的roles使用
1.创建roles文件夹 mkdir roles 2.在roles文件夹里面创建文件夹 cd roles/ mkdir {nginx,uwsgi,redis,mysql} 3.cd nginx 4.m ...
- devops工具-Ansible进阶playbook&roles
一.playbook介绍 playbook 是 Ansible 管理配置.部署应用的核心所在,一个playbook由有多“play组成”,而一个play实际就是一个task,每个task是由多 ...
- ansible roles 目录规范
我的ansible roles项目的目录结构: (ansible_venv) [root@localhost ansible_home]# tree ansible_playbooks/ ansibl ...
- ansible playbook最佳实践
本篇主要是根据官方翻译而来,从而使简单的翻译,并没有相关的实验步骤,以后文章会补充为实验步骤,此篇主要是相关理论的说明,可以称之为中文手册之一,具体内容如下: Ansible playbooks最佳实 ...
- ansible基础-roles
一 简介 注:本文demo使用ansible2.7稳定版 在我看来,role是task文件.变量文件.handlers文件的集合体,这个集合体的显著特点是:可移植性和可重复执行性. 实践中,通常我们以 ...
随机推荐
- Readme for Software engineering
作业任务: 软件工程 软件工程 作业要求 作业要求 作业目标 博客园.github注册 自我介绍 软工5问 自我介绍: 广东工业大学计算机学院18级信息安全二班 广东工业大学AD攻防工作室成员& ...
- TP6.0 一对一模型关联 belongsTo 相对关联(反向关联)
1. 创建数据表 一对一反向关联使用率很高 附表关联主表称为反向关联,又称为相对关联(tp官方手册这样叫) -- 分类表 CREATE TABLE `category` ( `id` int(10) ...
- 《Head First 设计模式》:组合模式
正文 一.定义 组合模式允许你将对象合成树形结构来表现"整体/部分"层次结构.组合能让客户以一致的方式处理组合对象以及个体对象. 组合对象:包含其他组件的组件. 个体对象(叶节点对 ...
- EF CodeFirst学习
EF CodeFirst 真是时光如梦,岁月如歌,自己一不留神就被后浪拍在了沙滩上,就连我要学的这个东西也是12年就在博客园很火了. EF有三种开发模式,DatabaseFirst, ModelFir ...
- 【译】Visual Studio 2019 的 Local Process with Kubernetes
今天,我们自豪地宣布 Local Process with Kubernetes 的预览版已加入到 Visual Studio 2019 16.7 Preview 2 中. Local Proces ...
- 基于JavaScript的表格设计:按序添加或删除班级的学生信息
目的: 制作一个表格,显示班级的学生信息 功能: 鼠标移到不同行,背景色发生改变,离开恢复原背景色 添加.删除按钮,可添加,可删除. 程序流程: 首先先建立绑定事件函数. 其次建立鼠标移动改变背景色函 ...
- 分布式系统监视zabbix讲解五之web监控
Web 监控 概况 你可以使用 Zabbix 检查几个网站可用性方面. 如果要使用 Web 检测功能,必须在 编译Zabbix 的时候加入 cURL(libcurl) 的支持. 要使用 Web 监控, ...
- RFID了解
转载自为什么大家都抛弃传统标签选择RFID电子标签? rfid电子标签是一种非接触式的自动识别技术,它通过射频信号来识别目标对象并获取相关数据,识别工作无需人工干预,作为条形码的无线版本,RFID技术 ...
- C++万能头文件的秘密
#include<bits/stdc++.h> 万能头文件,拼写怎么这么奇怪? 其实,bits表示一个文件夹,stdc++.h是里面的头文件,这表示路径. 搜索这个文件夹,找到后打开. 打 ...
- 测试必备:jmeter测试http协议接口的各种传参方式
测试接口,postman和jmeter是用得最频繁的工具,特别是jmeter,支持很多种协议,且除了测功能,还能做自动化测试和性能测试.下面主要介绍jmeter测试http协议接口的用法,包含get, ...