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

Ansible-roles学习

目录

  • 一.roles角色介绍
  • 二.示例
    • 一.安装httpd服务

一.roles角色介绍

roles能够根据层次型结构自动装载变量文件,tasks以及handlers登。要使用roles只需在playbook中使用include指令即可。roles就是通过分别将变量,文件,任务,模块以及处理器放置于单独的目录中,并可以便捷的include他们的一种机制。角色一般用于基于主机构建服务的场景中,但是也可以用于构建守护进程等场景中。

ROLES目录结构
https://img2018.cnblogs.com/blog/1210730/201906/1210730-20190604093514442-703615703.png

目录含义
roles所有脚色都必须放在roles目录下,这个目录可以自定义,默认位置/etc/ansible/roles
project具体角色项目名称,比如nginx,tomcat,php
files用来存放copy模块过scripit模块调用文件
templates用来存放jinjia2模板,template模块会自动在此目录寻找jinjia2模板文件
tasks此目录应当包含一个main.yml文件,用于定义此角色的任务列表,此文件可以使用include包含其他的位于此目录的task文件
handlers此目录应当包含一个main.yml文件,用于定义此角色中触发条件时执行的动作
vars此目录应当包含一个main.yml文件,用于定义此角色用到的变量
defaults此目录应当包含一个main.yml文件,用于为当前角色设定默认变量
meta此目录应当包含一个main.yml文件,用于定义此角色的特授及其依赖关系

二.示例

一.安装httpd服务

1.创建目录

[root@tdm1 ~]# cd /etc/ansible/roles/
# 创建需要用到的目录
[root@tdm1 roles]# mkdir -p httpd/{handlers,tasks,templates,vars}
[root@tdm1 roles]# cd httpd/
[root@tdm1 httpd]# tree .
.
├── handlers
├── tasks
├── templates
└── vars4 directories, 0 file

2.准备变量文件

[root@tdm1 httpd]# vim vars/main.yml
PORT: 8088        #指定httpd监听的端口
USERNAME: www     #指定httpd运行用户
GROUPNAME: www    #指定httpd运行组

3.配置文件模板

# copy一个本地的配置文件放在templates/下并已j2为后缀
[root@ansible httpd]# cp /etc/httpd/conf/httpd.conf templates/httpd.conf.j2# 找到一下几个参数,进行一些修改,调用上面定义的变量
[root@tdm1 httpd]# vim templates/httpd.conf.j2
Listen {{ PORT }} 
User {{ USERNAME }}
Group {{ GROUPNAME }}

4.编写任务剧本,创建用户,创建组,安装软件,配置,启动登

# 创建组的task
[root@tdm1 httpd]# vim tasks/group.yml
- name: Create a Startup Groupgroup: name: www gid: 60 system: yes# 创建用户的task
[root@tdm1 httpd]# vim tasks/user.yml
- name: Create Startup Usersuser: name: www uid: 60 system: yes shell: /sbin/nologin# 安装软件的task
[root@tdm1 httpd]# vim tasks/install.yml
- name: Install Package Httpdyum: name: httpd state: installed# 配置软件的task
[root@tdm1 httpd]# vim tasks/config.yml
- name: Copy Httpd Template Filetemplate: src: httpd.conf.j2 dest: /etc/httpd/conf/httpd.confnotify: Restart Httpd# 启动软件的task
[root@tmd1 httpd]# vim tasks/start.yml
- name: Start Httpd Serviceservice: name: httpd state: started enabled: yes# 编写main.yml,将上面的这些task引入进来
[root@tdm1 httpd]# vim tasks/main.yml
- include: group.yml
- include: user.yml
- include: install.yml
- include: config.yml
- include: start.ym

5.编写handlers

[root@tdm1 httpd]# vim handlers/main.yml
# 这里的名字需要和task中的notify保持一致
- name: Restart Httpdservice: name: httpd state: restarted

6.编写yml文件调用httpd角色

[root@tdm1 httpd]# cd ..
[root@tdm1 roles]# vim httpd_roles.yml
---
- hosts: allremote_user: rootroles:- role: httpd        #指定角色名称

7.查看整个目录

[root@tdm1 roles]# tree
.
└── httpd├── handlers│   └── main.yml├── httpd_roles.yml├── tasks│   ├── config.yml│   ├── group.yml│   ├── install.yml│   ├── main.yml│   ├── start.yml│   └── user.yml├── templates│   └── httpd.conf.j2└── vars└── main.yml5 directories, 10 files

8.测试playbook语法是否正确

[root@tdm1 roles]# ll
total 4
drwxr-xr-x 6 root root 4096 Sep  6 14:13 httpd
[root@tdm1 roles]# ansible-playbook httpd/httpd_roles.yml  -CPLAY [web] *************************************************************************************************************
TASK [Gathering Facts] *************************************************************************************************ok: [47.93.98.117]TASK [httpd : create group] ********************************************************************************************changed: [47.93.98.117]TASK [httpd : create user] *********************************************************************************************changed: [47.93.98.117]TASK [install httpd] ***************************************************************************************************ok: [47.93.98.117]TASK [httpd : configure template file] *********************************************************************************changed: [47.93.98.117]TASK [start httpd] *****************************************************************************************************changed: [47.93.98.117]RUNNING HANDLER [restart httpd] ****************************************************************************************changed: [47.93.98.117]PLAY RECAP *************************************************************************************************************47.93.98.117               : ok=7    changed=5    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  

9.执行剧本

[root@tdm1 httpd]# ansible-playbook httpd_roles.yml PLAY [web] *************************************************************************************************************
TASK [Gathering Facts] *************************************************************************************************ok: [47.93.98.117]TASK [httpd : create group] ********************************************************************************************ok: [47.93.98.117]TASK [httpd : create user] *********************************************************************************************ok: [47.93.98.117]TASK [install httpd] ***************************************************************************************************ok: [47.93.98.117]TASK [httpd : configure template file] *********************************************************************************changed: [47.93.98.117]TASK [start httpd] *****************************************************************************************************changed: [47.93.98.117]RUNNING HANDLER [restart httpd] ****************************************************************************************changed: [47.93.98.117]PLAY RECAP *************************************************************************************************************47.93.98.117               : ok=7    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

在这里插入图片描述

http://www.lryc.cn/news/165316.html

相关文章:

  • python3如何安装各类库的小总结
  • ffmpeg 特效 转场 放大缩小
  • 【GNN 03】PyG
  • 每日刷题-5
  • RNN简介(深入浅出)
  • Leetcode137. 某一个数字出现一次,其余数字出现3次
  • 原子化CSS(Atomic CSS)
  • pandas 筛选数据的 8 个骚操作
  • 【随想】每日两题Day.3(实则一题)
  • 阿里后端开发:抽象建模经典案例【文末送书】
  • HarmonyOS Codelab 优秀样例——溪村小镇(ArkTS)
  • Mybatis---第二篇
  • 6.2.3 【MySQL】InnoDB的B+树索引的注意事项
  • 前端面试话术集锦第 12 篇:高频考点(Vue常考基础知识点)
  • 骨传导耳机危害有哪些?值得入手吗?
  • 网络爬虫-----初识爬虫
  • vue 功能:点击增加一项,点击减少一项
  • 我的编程学习笔记
  • 页面静态化、Freemarker入门
  • PCL (再探)点云配准精度评价指标——均方根误差
  • 【Redis速通】基础知识1 - 虚拟机配置与踩坑
  • 我的创作纪念日---从考研调剂到研一的旅程
  • Python-实现邮件发送:flask框架或django框架可以直接使用
  • 使用亚马逊云科技Amazon SageMaker,为营销活动制作广告素材
  • conda环境安装opencv带cuda版本
  • R语言中的数据结构----矩阵
  • Llama-2 推理和微调的硬件要求总结:RTX 3080 就可以微调最小模型
  • C++多线程的用法(包含线程池小项目)
  • react ant ice3 实现点击一级菜单自动打开它下面最深的第一个子菜单
  • 关于 Qt串口不同电脑出现不同串口号打开失败 的解决方法