当前位置: 首页 > article >正文

Linux Ansible角色介绍

目录

角色的基础结构

角色来源与应用

Galaxy角色

系统角色

自定义角色


  1. 角色(roles)用于层次化、结构化地组织playbook
  2. roles通过标准化目录结构来装载变量文件、tasks(模块任务)、handlers(处理程序)、jinja2模板等其他资源,然后在play中调用该角色,就能够执行
  3. 定义roles可以实现更加轻松的重复利用ansible代码;只需通过复制相关的目录,就可以将角色从一个项目复制到另一个项目,然后在play中调用该角色就能够执行
  4. 在ansible中需要单独指定一个存放角色的路径,这个路径在ansible.cfg中的roles_path字段指定


角色的基础结构

README.md文件

声明了如何调用角色的模板,根据需要复制里面的内容粘贴到yml文件中进行调用

Defaults

此目录中的main.yml文件存放于角色会使用到的变量;并且这些变量所对应的值都是默认值(这些变量的优先级较低,使用角色时可以在play中对变量重新赋值,覆盖变量的默认值)

Files

存放角色任务引用的静态条件(例如copy模块要调用的文件)

Handlers

此目录中的main.yml文件包含ansible处理程序

当角色需要调用处理程序时,默认会在此目录的main.yml文件中调用处理程序

Meta

此目录中的main.yml文件用于描述角色的相关属性(例如作者、许可证等)

Tasks

此目录的main.yml描述了此角色需要执行的任务

在调用角色时,会执行此目录下的main.yml文件

Template

存放着角色所需要使用的jinja2模板文件

当没有指定绝对的模板路径时,会默认调用此目录中对应名称的模板文件

Linux Ansible-Jinjia2模板_静下心来敲木鱼的博客-CSDN博客icon-default.png?t=N3I4https://blog.csdn.net/m0_49864110/article/details/130394010?spm=1001.2014.3001.5501Tests

此目录包含清单和测试剧本文件,用于测试角色

Vars

此目录中的main.yml文件存放着用户所使用的变量;与defaults不同的是此文件中变量的优先级比较高,不会被轻易覆盖;确保了在调用角色时使用的变量为此目录文件中的变量值Linux Ansible管理变量、管理事实、管理机密_静下心来敲木鱼的博客-CSDN博客icon-default.png?t=N3I4https://blog.csdn.net/m0_49864110/article/details/130392902?spm=1001.2014.3001.5501


角色来源与应用

Galaxy角色

Ansible galaxy是一个ansible内容公共资源库,包含数千个ansible角色

ansible-galaxy命令行工具

ansible-galaxy search                   在galaxy上搜索角色
ansible-galaxy install                  从galaxu上下载角色
              -r   从文件中安装多个角色
              -p   指定安装路径
ansible-galaxy init                     创建自定义角色

从文件中下载galaxy角色,文件的书写格式

src      角色来源(必须写)
version  角色的版本
name     将角色下载后的名称(默认为存储库的名称)

创建文件存放角色的下载路径
vim galaxyroles.yml
---
- src: http://materials/ phpinfo.tar
  name: phpinfo

从文件中下载角色到指定路径
ansible-galaxy install -r galaxyroles.yml -p /home/greg/ansible/roles/

使用galaxy角色

vim roles.yml
---
- hosts: web
  roles:
    - phpinfo

系统角色

rhel-system-roles软件包中包含了一部分系统的角色(直接下载此软件包,就可以使用此软件包包含的角色了);下载下来的角色存放在/usr/share/ansible/roles目录下

下载系统角色

yum install rhel-system-roles

ansible-galaxy list 查看所有角色

系统角色的作用

rhel-system-roles-kdump          配置kdump崩溃恢复服务
rhel-system-roles-network        配置网络接口
rhel-system-roles-postfix        使用postifix服务将主机配置为邮件传输代理
rhel-system-roles-selinux        配置和管理selinux
rhel-system-roles-timesync       配置时间同步(NTP)

使用系统角色

将需要的系统角色复制到ansible.cfg中roles_path字段对应的目录下
cp -r /usr/share/ansible/roles/rhel-system-roles.selinux/ /home/greg/ansible/roles/

查看文件中的README.md文件,编写yml文件调用角色实现所需功能
vim /home/greg/ansible/selinux.roles
---
- name: selinux
  hosts: web
  vars:
    selinux_policy: targeted
    selinux_state: enforcing
  role:
    - rhel-system-roles-selinux

自定义角色

可以创建一个自定义角色(ansible-galaxy init 角色名)  

ansible-galaxy init apache

在templates目录下创建jinja2模板

vim apache/templates/index.j2
Welcome to {{ ansible_facts['hostname'] }

配置tasks目录下的main.yml文件

vim apache/tasks/main.yml
---
# tasks file for apache
- name: install httpd
  yum:
    name: httpd
    state: present
  notify:
    - start apache
- name: index.html.j2
  template:
    src: index.html.j2
    dest: /var/www/html/index.html
    setype: httpd_sys_content_t

编写handlers下的maini.yml(触发器notify触发后执行此yml任务)

vim apache/handlers/main.yml
---
- name: start apache
  service:
    name: httpd
    state: started
    enabled: yes

然后创建yml文件调用角色

vim roles.yml
---
- host: web
  roles:
    - apache

运行yml

ansible-playbook roles.ym
只要此roles.yml不报错,就证明apache角色当中所有的yml语法都ok

验证httpd服务是否开启

ansible web -m shell -a "systemctl status httpd"

当让别人重复使用roles.yml文件时,可以将apache角色打压缩包传送给对端或上传到galaxy


http://www.kler.cn/news/16600.html

相关文章:

  • Python使用AI animegan2-pytorch制作属于你的漫画头像/风景图片
  • 3.3 泰勒公式例题分析
  • c++ 11标准模板(STL) std::vector (三)
  • 同时使用注解和 xml 的方式引用 dubbo 服务产生的异常问题排查实战
  • 抓马,互联网惊现AI鬼城:上万个AI发帖聊天,互相嗨聊,人类被禁言
  • ASIC-WORLD Verilog(6)运算符
  • 【.net core 自动生成数据库】
  • 认识Cookie和Session
  • 【算法】求最短路径算法
  • react之按钮鉴权
  • Java微服务商城高并发秒杀项目--013.SentinelResource的使用
  • 算法刷题|392.判断子序列、115.不同的子序列
  • 大型医院影像PACS系统三维重建技术(获取数据、预处理、配准、重建和可视化)
  • Stable Diffusion 本地部署教程不完全指南
  • 第18章 项目风险管理
  • javascript中的严格模式
  • 自动驾驶行业观察之2023上海车展-----车企发展趋势(1)
  • Python基础合集 练习19(类与对象3(多态))
  • Chapter4:频率响应法(上)
  • Linux套接字编程-2
  • Packet Tracer - 静态路由故障排除
  • 如何学习python?
  • 【C++】右值引用完美转发
  • 什么是 Docker?它能用来做什么?
  • ChatGPT常见问题及其解决方法汇总
  • 微软正式宣布 Win10 死刑,Win11 LTSC要来了
  • 使用 ESP32 设计智能手表 – 第 1 部分制作表盘
  • Shell编程之循环语句
  • osg操控器之动画路径操控器osgGA::AnimationPathManipulator分析
  • 代码随想录算法训练营第四十五天|70. 爬楼梯 (进阶)、322. 零钱兑换、279.完全平方数