前言

Q1:什么是Roles

在实际生产环境中,会编写大量的playbook文件来实现不同的功能。而且,每个playbook还可能会调用其他文件(变量文件),对于海量的、无规律的文件,管理是个问题。Ansible 从1.2版本开始支持Roles,Roles是管理ansible文件的一种规范(目录结构),Roles会按照标准的规范,自动到特定的目录和文件中读取数据。

Roles 目录结构

  • defaults/main.yml:定义变量的缺省值,优先级较低
  • files目录:存储静态文件的目录
  • handlers/main.yml:定义handlers
  • meta/main.yml:写作者、版本等描述信息
  • README.md:整个角色(role)的描述信息
  • tasks/main.yml:定义任务的地方
  • templates目录:存放动态数据文件的地方(模板文件)
  • vars/main.yml:定义变量,优先级高

创建 Role

ansible-galaxy命令可以创建、管理自己的roles(issue)

修改 Role

1、定义issue文件的模板文件 & 变量文件

2、修改任务文件,任务文件中不需要tasks关键字

Role的各个文件之间相互调用不需要写路径

以上配置会自动到template目录下寻找issue.j2文件

在Playbook中调用Role

方法一:在role相同目录下创建一个playbook调用

[root@node01 ansible]# cat ~/ansible/issue.yml
---
- hosts: agent
roles:
- issue
# - role2 # 支持加载多个role

方法二:在ansible.cfg设置roles_path=路径

[root@node01 ansible]# cat ~/ansible/ansible.cfg
[defaults]
remote_user = root
inventory = ./inventory
roles_path = ./roles
[privileges_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False
[root@node01 ansible]#

ansible-galaxy

Ansible Galaxy 是官方提供的一个共享roles的平台(公共Roles仓库:https://galaxy.ansible.com

# 联网搜索roles
[root@node01 ansible]# ansible-galaxy search 'httpd'
# 查看roles基本信息
[root@node01 ansible]# ansible-galaxy info acandid.httpd
# 下载roles到特定的目录
[root@node01 ansible]# ansible-galaxy install acandid.httpd -p ~/ansible/roles/
# 列出本地有哪些roles
[root@node01 ansible]# ansible-galaxy list -p roles/

下载Roles的方法

使用 ansible-galaxy install 或者编写 requirments.yml文件(示例以下)

[root@node01 ansible]# cat ~/ansible/roles/requirments.yml
# 格式一: 直接从Ansible Galaxy官网下载
- src: acandid.httpd
# 格式二: 从某个git服务器下载
- src: http://gitlab.com/xxx/xxx.git
scm: git
version: 56e00a54
name: nginx-acme
# 格式三: 下载tar包, 支持http、https、file
- src: http://example.com/myrole.tar
name: myrole
[root@node01 ansible]# ansible-galaxy install -r roles/requirements.yml -p ~/ansible/roles/

读取配置文件roles/requirements.yml下载三个role到~/ansible/roles目录下

(END)

Ansible - [11] Roles的更多相关文章

  1. Ansible的roles标准化与Jenkins持续集成(三)

    Ansible的roles标准化与Jenkins持续集成(三) 链接:https://pan.baidu.com/s/1A3Iq3gGkGS27L_Gt37_I0g 提取码:ncy2 复制这段内容后打 ...

  2. Ansible之roles模块--lnmp分布式部署

    Ansible之roles模块--lnmp分布式部署 目录 Ansible之roles模块--lnmp分布式部署 1. role模块的作用 2. roles的目录结构 3. roles内个目录含义解释 ...

  3. Ansible:roles初始化系统

    简介 本文介绍ansible的roles,通过roles来实现系统的初始化,其相当于将ansible的playbook拆分.本文通过Jenkins,传参,调用playbook来初始化系统. Githu ...

  4. ansible的roles使用

    1.创建roles文件夹 mkdir roles 2.在roles文件夹里面创建文件夹 cd roles/ mkdir {nginx,uwsgi,redis,mysql} 3.cd nginx 4.m ...

  5. ansible基础-roles

    一 简介 注:本文demo使用ansible2.7稳定版 在我看来,role是task文件.变量文件.handlers文件的集合体,这个集合体的显著特点是:可移植性和可重复执行性. 实践中,通常我们以 ...

  6. Git+Gitlab+Ansible的roles实现一键部署Nginx静态网站(一)--技术流ken

    前言 截止目前已经写了<Ansible基础认识及安装使用详解(一)--技术流ken>,<Ansible常用模块介绍及使用(二)--技术流ken><Ansible剧本介绍及 ...

  7. Ansible playbook roles

    1  概述 角色(roles):如果我们使用playbook写成一个文件,这个文件会很大,但是不方便组织,我们可以分组,把playbook根据功能,如handler,tasks等分门别类的放在在各自的 ...

  8. Ansible Playbook Roles and Include Statements

    介绍 虽然可以在一个非常大的文件中编写一个playbook(您可能会以这种方式开始学习playbook),但最终您将需要重新使用文件并开始组织事情. 在基本级别,饱含任务的文件允许您将配置策略分解成较 ...

  9. Ansible之roles角色

    一.roles简介 ansible自1.2版本引入的新特性,用于层次性.结构化地组织playbook.roles能够根据层次型结构自动装载变量文件.tasks以及handlers等.要使用roles只 ...

  10. ansible 模块 roles

    setup 作用,用来查看用看内部的详细信息 ansible_all_ipv4_addresses # ipv4的所有地址 ansible_all_ipv6_addresses # ipv6的所有地址 ...

随机推荐

  1. docker安装cas

    直接docker pull apereo/cas ,docker run的时候各种报错: standard_init_linux.go:178: exec user process caused &q ...

  2. T 语言语法设计方案总结

    早在 2015,我就已经精通了 C++.C#.JS,也用过其它语言,比如 PHP.Python.Java 做过一些项目,就觉得这些语言设计得太过复杂.坑多.麻烦,所以就开始设计一门新语言,暂且叫 T ...

  3. Ubuntu 下安装oh-my-zsh

    Ubuntu系统默认状况下的终端样式如下: Ubuntu default terminal's style 有个知名的神奇:Oh-My-Zsh 可以让终端及美观又实用: Oh-My-Zsh agnos ...

  4. Swagger2学习——@ApiImplicitParams注解

    @ApiImplicitParams:用在请求的方法上,表示一组参数说明 @ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面 name:参数 ...

  5. 【转】ReentrantReadWriteLock读写锁详解

    https://www.cnblogs.com/xiaoxi/p/9140541.html 一.读写锁简介 现实中有这样一种场景:对共享资源有读和写的操作,且写操作没有读操作那么频繁.在没有写操作的时 ...

  6. Qt开源作品40-图片及文字与base64编码互换

    一.前言 对于图片的传输,通俗的做法一般有两种,一种是直接二进制文件传输,比如先传输开始标记,带文件名称.文件字节长度,然后挨个分包发送.最后发送文件结束标记,这种方式必须要求接收方按照自己定义的规则 ...

  7. Qt开源作品32-文本框回车焦点下移

    一.前言 这个demo由于太过简单,而不用过多的文字描述,其实就是实现了在一个文本框中输入完成以后,回车自动跳入下一个文本框,焦点下移,这个在很多的社保系统.医疗系统等系统中很常用,因为那些系统需要很 ...

  8. NetCore开源项目,适合新手学习

    VerEasy.Core 介绍 这是一个基于 .NET Core 的易开发的框架,附 vue3前端框架.提供了一个高效可扩展的API程序. 支持 JWT 认证.数据库操作.日志记录.异步处理等特性,能 ...

  9. 跟着源码学IM(八):万字长文,手把手教你用Netty打造IM聊天

    本文作者芋艿,原题"使用 Netty 实现 IM 聊天贼简单",本底价有修订和改动. 一.本文引言 上篇<跟着源码学IM(七):手把手教你用WebSocket打造Web端IM ...

  10. 解密prompt系列46. LLM结构化输出代码示例和原理分析

    最近闭源大模型们都陆续支持结构化输出,这一章我们先结合demo看下开源和闭源对结构化输出的支持,随后会介绍Constrained Decoding和Format Restricting Instruc ...