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文件的集合体,这个集合体的显著特点是:可移植性和可重复执行性. 实践中,通常我们以 ...
随机推荐
- 实战解读丨Linux下实现高并发socket最大连接数的配置方法
摘要:Linux操作系统,无论是编写客户端程序还是服务端程序,在高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制. [诉求场景] Linux操作系统,无论是编写 ...
- 自定义线程池ThreadPoolExecutor
使用自定义的方式创建线程池 Java本身提供的获取线程池的方式 使用Executors直接获取线程池,注意,前四个方式的底层都是通过new ThreadPoolExecutor()的方式创建的线程池, ...
- 使用zabbix监控sql server的发布订阅
(一)背景 个人在使用sql server时,用到了sql server的发布订阅来做主从同步,类似MySQL的异步复制.在发布订阅环境搭建完成后,最重要的就是如何监控复制的状态了,sql serve ...
- agumaster增加了网易数据源
- MyBatis开发重点知识
1.1为什么需要ORM框架? 传统的JDBC编程存在的弊端: ü 工作量大,操作数据库至少要5步: ü 业务代码和技术代码耦合: ü 连接资源手动关闭,带来了隐患: MyBatis前身是iBatis, ...
- 阿里云短信服务验证码封装类 - PHP
本文记录在ThinkPHP6.0中使用阿里云短信验证码,该封装类不仅仅局限于TP,拿来即用 使用该类之前必须引入 flc/dysms 扩展,该封装类就是基于这个扩展写的 composer requir ...
- Tooltip鼠标hover放上时文字提示
使用content属性来决定hover时的提示信息. 由placement属性决定展示效果: placement属性值为: 方向-对齐位置: 四个方向:top.left ...
- python之requests.session()使用
背景:使用requests.session会话对象先登录至豆瓣网,再进入“我的豆瓣”. 首先说一下,为什么要进行会话保持的操作? requests库的session会话对象可以跨请求保持某些参数. 说 ...
- [LeetCode]534. 游戏玩法分析 III(Mysql)
题目 Table: Activity +--------------+---------+ | Column Name | Type | +--------------+---------+ | pl ...
- Java中读取配置文件中的内容,并将其赋值给静态变量的方法
应用场景 项目开发中某个功能需要抽取成方法写成一个工具类,提供给别人使用.写过工具类的人都知道,工具类中的方法一般都是静态方法,可以直接使用类名点方法名调用, 使用很方便,比如判断某个对象是否为空的方 ...