ansible的role(6)
roles的优点
roles能够根据层次型结构自动的装载变化量文件,task,以及handles等。
要使用肉了是只需要在playbook中使用include引入即可。
主要使用场景复制代码较高的情况下。
roles的目录结构:
roles: <--所有的角色必须放在roles目录下,这个目录可以自定义位置,默认的位置在/etc/ansible/roles
project: <---具体的角色项目名称,比如nginx、tomcat、php
files: <--用来存放由copy模块或script模块调用的文件。
templates: <--用来存放jinjia2模板,template模块会自动在此目录中寻找jinjia2模板文件。
tasks: <--此目录应当包含一个main.yml文件,用于定义此角色的任务列表,此文件可以使用include包含其它的位于此目录的task文件。
main.yml
handlers: <--此目录应当包含一个main.yml文件,用于定义此角色中触发条件时执行的动作。
main.yml
vars: <--此目录应当包含一个main.yml文件,用于定义此角色用到的变量。
main.yml
defaults: <--此目录应当包含一个main.yml文件,用于为当前角色设定默认变量。
main.yml
meta: <--此目录应当包含一个main.yml文件,用于定义此角色的特殊设定及其依赖关系。
main.yml
roles的实例配置
需求:通过ansible roles安装配置httpd服务,此处的roles使用的默认的路径/etc/ansible/roles
#创建需要用的目录
[root@zook ~]#cd /etc/ansibles/roles/
[root@zook roles]#mkdir -pv httpd/{handlers,tasks,templates,vars}
然后查看返回的显示是否正确的创建完这些文件 #创建变量文件
[root@zook roles ]#cd httpd
[root@zook httpd ]#vim vars/main.yml
PORT: 8080
USERNAME: www
GROUPNAME: www #创建文件模板
[root@zook httpd ]#cp /etc/httpd/conf/httpd.conf templates/httpd.conf.j2
[root@zook httpd]vim templates/httpd.conf.j2
Listen {{ PORT }}
User {{ USERNAME }}
Group {{ GROUPNAME }} #任务剧本的编写,创建用户,用户组,安装软件,配置,启动等
#创建组的task
[root@zook httpd]#vim tasks/group.yml
- name: Create a Startup Group
group: name=www gid=60 system=yes
#创建用户的task
[root@zook httpd]#vim tasks/user.yml
- name: Create Startup Users
user: name=www uid=60 system=yes shell=/sbin/nologin
#创建软件的task
[root@zook httpd]vim tasks/install.yml
- name: Install Package Httpd
yum: name=httpd state=installed [root@zook httpd]vim tasks/config.yml
- name: Copy Httpd Template File
template: src=httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf
notify: Restart Httpd
#启动软件的task
[root@zook httpd]vim tasks/start.yml
- name: Start Httpd Service
service: name=httpd stste=started enabled=yes
#编写main.yml,将上面的task都引进来
[root@zook httpd]vim task/main.yml
- include: group.yml
- include: user.yml
- include: install.yml
- include: config.yml
- include: start.ym #编写重启httpd的handlers,handlers/main.yml
[root@zook httpd]vim handlers/main.yml
- name: Restart Httpd
service: name=httpd state=restarted #编写主机的httpd_roles.yml文件调用httpd角色
切换到cd ..【roles】
[root@zook roles]vim httpd_roles.yml
---
- hosts: all
remote_user: root
roles:
- roles: httpd #到此已经编辑完成,其目录如下:
[root@zook roles]#tree .
文件测试:
ansible-playbook -C httpd_roles.yml
运行:
ansible-playbook httpd_roles.yml
roles:
编写任务(task
)的时候,里面不需要写需要执行的主机,单纯的写某个任务是干什么的即可,装软件的就是装软件的,启动的就是启动的。单独做某一件事即可,最后通过main.yml
将这些单独的任务安装执行顺序include
进来即可
定义handlers
时候,直接在handlers/main.yml
文件中写需要做什么事情即可,多可的话可以全部写在该文件里面,也可以像task
那样分开来写,通过include
引入一样的可以。在task
调用notify
时直接写与handlers
名字对应即可(二者必须高度一直)。
模板文件一样放在templates
目录下即可,task调用的时后直接写文件名字即可,会自动去到templates
里面找。注意:如果是一个角色调用另外一个角色的单个task
时后,那么task
中如果有些模板或者文件,就得写绝对路径了
ansible的role(6)的更多相关文章
- 014.Ansible Playbook Role 及调试
一 role 简介 在ansible中,role是将playbook分割为多个文件的主要机制,大大简化了复杂的playbook的编写,同时已与复用 role各个目录的作用及可用文件 files:存放由 ...
- ansible:安装nginx1.18.0(使用role功能)
一,ansible使用role的用途? roles分别将变量/文件/任务/模板/handler等放置于单独的目录中, 并可以方便的include各目录下的功能 roles使playbook能实现代码被 ...
- ansible基础-roles
一 简介 注:本文demo使用ansible2.7稳定版 在我看来,role是task文件.变量文件.handlers文件的集合体,这个集合体的显著特点是:可移植性和可重复执行性. 实践中,通常我们以 ...
- 使用Ansible实现数据中心自动化运维管理
长久以来,IT 运维在企业内部一直是个耗人耗力的事情.随着虚拟化的大量应用.私有云.容器的不断普及,数据中心内部的压力愈发增加.传统的自动化工具,往往是面向于数据中心特定的一类对象,例如操作系统.虚拟 ...
- Ansible之playbook的使用总结 - 运维笔记
之前详细介绍了Ansible的安装, 配置, 以及Ansible常用模块的使用. 下面对Ansible的playbook用法做一小结. 为什么引入playbook?一般运维人员完成一个任务, 比如安装 ...
- [k8s]kubespray(ansible)自动化安装k8s集群
kubespray(ansible)自动化安装k8s集群 https://github.com/kubernetes-incubator/kubespray https://kubernetes.io ...
- 《Ansible自动化运维:技术与佳实践》第二章读书笔记
Ansible 安装与配置 本章主要讲的是 Ansible 安装与基本配置,主要包含以下内容: Ansible 环境准备 安装 Ansible 配置运行环境 Ansible 环境准备 从 GitHub ...
- 【转】使用 Ansible 实现数据中心自动化管理
长久以来,IT 运维在企业内部一直是个耗人耗力的事情.随着虚拟化的大量应用.私有云.容器的不断普及,数据中心内部的压力愈发增加.传统的自动化工具,往往是面向于数据中心特定的一类对象,例如操作系统.虚拟 ...
- 第10章:深入浅出Ansible
1.Ansible介绍 1).Ansible的优点 Ansible是一个简单的自动化引擎,可完成配置管理.引用部署.服务编排以及其他各种IT需求 Ansible是Python开发并实现的开源软件,其依 ...
随机推荐
- 《 OO第一作业周期(前四周)总结 》
作为一名软件工程的大学生,很高兴能够以这样一种方式,实现对博客编写零的突破.专业课老师也介绍了编写博客给我们带来的帮助,听了以后,我感觉到了培养出写博客的习惯,是一件多么有意义的事! 话不多说,让我们 ...
- JS 剑指Offer(三) 替换字符串中的空格
请实现一个函数,把字符串 s 中的每个空格替换成"%20". 实现这个函数的方法很简单,在JS中可以直接应用正则表达式,代码如下 直接将全局中的space换成%20,一行代码搞定 ...
- echarts图表x,y轴的设置
https://www.cnblogs.com/cjh-strive/p/11065005.html xAxis属性代表echarts图表的x轴设置代码如下 xAxis : [ { type : 'c ...
- P1627 [CQOI2009]中位数 题解
CSDN同步 原题链接 简要题意: 给定一个 \(1\) ~ \(n\) 的排列,求以 \(b\) 为中位数的 连续子序列且长度为奇数 的个数. 显然这段序列包含 \(b\). 中位数的定义:排序后在 ...
- Elasticsearch 核心术语概念
Elasticsearch 相当于一个关系型数据库 索引 index 类型 type 文档 document 字段 fields 跟关系型数据库对比 Elasticsearch 相当于一个数据库 索引 ...
- 【Linux】网络应用
一. 网络基本配置 setup 永久网络设置 (IP 网关 DNS) vim /etc/sysconfig/network-scripts/ifcfg-eth0 (网卡信息文件) route -n 查 ...
- SpringMVC(三):转发和重定型
本文是按照狂神说的教学视频学习的笔记,强力推荐,教学深入浅出一遍就懂!b站搜索狂神说或点击下面链接 https://space.bilibili.com/95256449?spm_id_from=33 ...
- C++静态库和动态库
静态库与动态库 首先简单介绍一下gcc 指令 ubuntu 下安装gcc g++ 方法 sudo apt install gcc g++ gcc 的简单使用 建立hello.c 源文件 gcc hel ...
- python3(二十六)slots
""" """ __author__ = 'shaozhiqi' # python是动态语言,所以定义类后,我们可以动态的给类绑定属性和方法 ...
- redis集群搭建-3.0/4.0版本
1. Redis的安装 1.1. Redis的安装 Redis是c语言开发的. 安装redis需要c语言的编译环境.如果没有gcc需要在线安装.yum install gcc-c++ 安装步骤: 第 ...