[ansible] playbook角色

 一、roles

  • Roles又称为角色,playbook被称为剧本。Roles角色是自1.2版本之后引入的新特性,用于层次性、结构化的组织剧本
     
  • roles能够根据层次型结构自动装载变量文件、任务集、以及触发的动作等,要使用roles只需要在剧本中使用include命令引入即可
  • 简单的来说,roles就是分别将变量、文件、任务、模板以及处理器放置于不同的单独的目录,并且可以便捷的通过include引入
  • 角色一般用于基于主机构建的服务的场景中,但是也可以是用于构建守护进程等场景中,主要是使用在代码复用度较高的场景下

●files
用来存放由 copy 模块或 script 模块调用的文件。

●templates
用来存放 jinjia2 模板,template 模块会自动在此目录中寻找 jinjia2 模板文件。

●tasks
此目录应当包含一个 main.yml 文件,用于定义此角色的任务列表,此文件可以使用 include 包含其它的位于此目录的 task 文件。

●handlers
此目录应当包含一个 main.yml 文件,用于定义此角色中触发条件时执行的动作。

●vars
此目录应当包含一个 main.yml 文件,用于定义此角色用到的变量。

●defaults
此目录应当包含一个 main.yml 文件,用于为当前角色设定默认变量。

●meta
此目录应当包含一个 main.yml 文件,用于定义此角色的特殊设定及其依赖关系。

二、roles实战演练

2.1 利用角色搭建lnmp

创建所需文件夹和目录
  441  cd /etc/ansible/roles/
  442  ls
  443  mkdir nginx mysql php
  444  ls
  445  mkdir nginx/{files,vars,templates,handlers,tasks,meta,defaults}
  446  ls -R nginx/
  447  mkdir mysql/{files,vars,templates,handlers,tasks,meta,defaults}
  448  mkdir php/{files,vars,templates,handlers,tasks,meta,defaults}
  449  touch nginx/{vars,handlers,tasks,meta,defaults}/main.yml
  450  touch mysql/{vars,handlers,tasks,meta,defaults}/main.yml
  451  touch php/{vars,handlers,tasks,meta,defaults}/main.yml
设置hosts

 

2.2 设置nginx角色 

事先要准备好nginx的template模板文件
cp /usr/local/nginx/conf.d/nginx.conf /etc/ansible/roles/nginx/templates/nginx.conf.j2

files设置
cp /etc/yum.repos.d/nginx.repo /etc/ansible/roles/nginx/files/

 vars设置
vim roles/nginx/vars/main.yml

nginx_addr: 192.168.136.195
nginx_port: 80
server_name: www.cxk.com
root_dir: /var/www/html
php_addr: 192.168.136.198
php_port: 9000
pkg: nginx
svc: nginx

tasks设置
vim roles/nginx/tasks/main.yml

  - name: disable firewalld
    service: name=firewalld state=stopped enabled=no
  - name: disable selinux
    command: '/usr/sbin/setenforce 0'
    ignore_errors: true
  - name: copy nginx repo
    copy: src=nginx.repo dest=/etc/yum.repos.d/
  - name: install nginx
    yum: name={{pkg}} state=present
  - name: create root dir
    file: path={{root_dir}} state=directory
  - name: prepare nginx config file
    template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
    notify: "reload nginx"
  - name: start nginx
    service: name={{svc}} state=started enabled=yes

handlers设置 
vim roles/nginx/handlers/main.yml

  - name: reload nginx
    service: name={{svc}} state=reloaded

2.3 设置mysql角色

vars设置
vim roles/mysql/vars/main.yml

pkg: mysql-server
svc: mysqld

 

tasks设置
vim roles/mysql/tasks/main.yml

- name: disable firewalld
    service: name=firewalld state=stopped enabled=no
  - name: disable selinux
    command: '/usr/sbin/setenforce 0'
    ignore_errors: true
  - name: remove mariadb
    yum: name=mariadb* state=absent
  - name: copy mysql repo
    copy: src=mysql-community.repo dest=/etc/yum.repos.d/
  - name: modify mysql repo
    replace: path=/etc/yum.repos.d/mysql-community.repo regexp="gpgcheck=1" replace="gpgcheck=0"
  - name: install mysql
    yum: name={{pkg}} state=present
  - name: start mysql
    service: name={{svc}} state=started enabled=yes
  - name: init mysql
    shell: passd=$(grep "password" /var/log/mysqld.log | awk '{print $NF}') && mysql -uroot -p"$passd" --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin@123';" && mysql -uroot -pAdmin@123 -e "grant all privileges on *.* to root@'%' identified by 'Admin@123' with grant option;"
    ignore_errors: true

2.4 设置php角色

vars设置
vim php/vars/main.yml

user_name: php
php_addr: 192.168.136.198:9000
nginx_addr: 192.168.136.195
svc: php-fpm

 tasks设置
vim php/tasks/main.yml

  - name: disable firewalld
    service: name=firewalld state=stopped enabled=no
  - name: disable selinux
    command: '/usr/sbin/setenforce 0'
    ignore_errors: true
  - name: install php repo
    shell: rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm && rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
    ignore_errors: true
  - name: install php
    yum: name=php72w,php72w-cli,php72w-common,php72w-devel,php72w-embedded,php72w-gd,php72w-mbstring,php72w-pdo,php72w-xml,php72w-fpm,php72w-mysqlnd,php72w-opcache state=present
  - name: create php user
    user: name={{user_name}} shell=/sbin/nologin create_home=no
  - name: modify php config file
    replace: path=/etc/php.ini regexp=";date.timezone =" replace="date.timezone = Asia/Shanghai"
    notify: "reload php-fpm"
  - name: modify user and group in www.conf
    replace: path=/etc/php-fpm.d/www.conf regexp="apache" replace="{{user_name}}"
    notify: "reload php-fpm"
  - name: modify listen addr in www.conf
    replace: path=/etc/php-fpm.d/www.conf regexp="127.0.0.1:9000" replace="{{php_addr}}"
    notify: "reload php-fpm"
  - name: modify allowed_clients in www.conf
    replace: path=/etc/php-fpm.d/www.conf regexp="127.0.0.1" replace="{{nginx_addr}}"
    notify: "reload php-fpm"
  - name: start php-fpm
    service: name={{svc}} state=started enabled=yes

handlers设置 
vim php/handlers/main.yml

- name: reload php-fpm
  service: name={{svc}} state=reloaded

三、测试 

cd /etc/ansible/
vim lnmp.yaml

- name: install nginx
  hosts: webservers
  remote_user: root
  roles:
  - nginx
- name: install mysql
  hosts: dbservers
  remote_user: root
  roles:
  - mysql
- name: install php
  hosts: phpservers
  remote_user: root
  roles:
  - php


ansible-playbook lnmp.yaml

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/398308.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

五种多目标优化算法(MOAHA、MOGWO、NSWOA、MOPSO、NSGA2)性能对比,包含6种评价指标,9个测试函数(提供MATLAB代码)

一、5种多目标优化算法简介 1.1MOAHA 1.2MOGWO 1.3NSWOA 1.4MOPSO 1.5NSGA2 二、5种多目标优化算法性能对比 为了测试5种算法的性能将其求解9个多目标测试函数(zdt1、zdt2 、zdt3、 zdt4、 zdt6 、Schaffer、 Kursawe 、Viennet2、 Viennet3)&#xff…

计算机网络看这里就够了!!!

入门概念 参考视频链接: 1.2 因特网概述_哔哩哔哩_bilibili 一些基础概念 因特网发展阶段: 三个大标题: 从单个ARPANET-----逐步建成三级结构的因特网----逐步形成多层次ISP结构(互联网服务提供商(Internet Service Provider…

MAC端Terminus 绿色版下载【一键安装,即可使用】

Termius Mac 是一款非常好用而且漂亮的SSH客户端,能快速远程控制服务器 现在呢,很多小伙伴,都开始使用这个软件啦 但是对于mac系统来说: 这个软件不要在苹果app store下载,不能实现传输功能这个软件目前有7天适用期&a…

【Linux权限】 Linux权限管理 | 粘滞位

文章目录 Linux权限管理什么是权限 ❓💦 文件访问者的分类(人)💦 文件类型和访问权限(事物属性) 💦 文件访问权限的相关设置方法目录的权限 粘滞位 Linux权限管理 什么是权限 ❓ 权限本质上是决定某件事情,某人能否做。 Linux下…

【Linux】主机搭建 Linux服务器环境 笔记

目录 前言选择系统软件1. 用U盘装系统2. 安装 Centos7.93. 网络套件 应用软件1. ngnix2. 防火墙配置3. nodejs 后记 前言 过年买了个 mini 主机当玩具玩一下,这里记录下。 选择 已有主力机 (windows) 的情况下,使用过如下四种 Linux宿主环境。这里总…

猫头虎分享已解决Bug || Python AI错误处理:IndexError

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

基于情感分析的网上图书推荐系统

项目:基于情感分析的网上图书推荐系统 摘 要 基于网络爬虫的数据可视化服务系统是一种能自动从网络上收集信息的工具,可根据用户的需求定向采集特定数据信息的工具,本项目通过研究爬取网上商品评论信息实现商品评论的情感分析系统功能。对于…

IO进程-day3

1>多线程实现文件拷问 代码&#xff1a; #define MAXSIZE 1024 #include<myhead.h>int main(int argc, char const *argv[]) {FILE *srcfpNULL;FILE *destfpNULL;if((srcfp fopen("./pm.bmp", "r")) NULL){perror("fopen error");re…

【PCIE709-F】基于复旦微JFM7VX690T80 FPGA的全国产化8通道光纤双FMC接口数据处理平台

板卡概述 PCIE709-F是一款基于上海复旦微电子的28nm 7系列FPGA JFM7VX690T80的全国产化8通道光纤双FMC接口数据预处理平台&#xff0c;该板卡采用复旦微的高性能7系列FPGA作为实时处理器&#xff0c;实现4路10G SFP光纤以及1路QSFP通信接口、实现1路X8 PCIE数据传输的功能。板载…

MySQL 锁的内存结构

目录 1.摘要 2. 加锁的本质 3. 锁结构详解 3.1 锁所在的事务信息 3.2 索引信息 3.3 表锁/行锁信息 3.4 type_mode 3.5 其他信息 3.6 一堆比特位 1.摘要 在 MySQL 中&#xff0c;有很多种锁&#xff0c;例如行锁&#xff0c;表锁&#xff0c;页锁&#xff0c;全局锁&a…

0207-2-计算机组成

Principle-of-Computer-Composition 计算机组成原理思维导图 计算机组成 第一章 计算机系统概论 冯诺依曼型计算机特点 1.计算机由运算器&#xff0c;控制器&#xff0c;存储器&#xff0c;输入和输出设备5部分组成2.采用存储程序的方式&#xff0c;程序和数据放在同一个存…

网页布局之浮动

一&#xff0c;传统网页布局的三种方式 普通流&#xff08;标准流&#xff09;、浮动、定位。 二&#xff0c;标准流&#xff08;普通流/文档流&#xff09; 即为标签按照规定好的默认方式排列。 1.块级元素会独占一行&#xff0c;从上向下顺序排列。 常用元素&#xff1a;…

3ds Max视频怎么渲染 3ds Max云渲染操作

在3ds Max软件中制作视频动画本质上是逐帧生成画面&#xff0c;并将这些连续帧串联起来创造出动态连贯的视觉效果。常见的视频帧率包括25 FPS(每秒帧数)、60 FPS、以及120 FPS等&#xff0c;帧率的提升可以使视频动画更加流畅。在实质上&#xff0c;视频渲染就是动画渲染&#…

大厂的数据质量中心系统设计

日常工作中&#xff0c;数据开发上线完一个任务后并不是就可以高枕无忧&#xff0c;时常因上游链路数据异常或者自身处理逻辑的 BUG 导致产出的数据结果不可信。而问题发现可经历较长周期&#xff08;尤其离线场景&#xff09;&#xff0c;往往是业务方通过上层数据报表发现数据…

[计算机网络]---UDP协议

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、端口号…

[职场] 质量管理涉及哪些方面 #职场发展#笔记#经验分享

质量管理涉及哪些方面 质量管理是一种管理方法和理念&#xff0c;旨在确保产品、服务或流程符合预期的质量标准和要求。它涉及制定质量政策和目标、制定质量计划、执行质量控制措施、进行质量评估和持续改进等活动。 质量管理员是负责管理和维护质量管理体系的专业人员。他们负…

Spring6学习技术|IoC+基于xml管理bean

学习材料 尚硅谷Spring零基础入门到进阶&#xff0c;一套搞定spring6全套视频教程&#xff08;源码级讲解&#xff09; IoC 控制反转。是一种设计思想。 1.获取bean对象的方法 通过id&#xff0c;通过class&#xff0c;和双重方式。 ApplicationContext context new Cla…

被列入黑名单发送邮件失败

现在的虚拟主机产品&#xff0c;基本上都提供域名的企业邮箱服务&#xff0c;用户使用企业邮箱也比较普遍&#xff0c;在使用过程中&#xff0c;如果一旦发生发件人IP被列入黑名单&#xff0c;将严重影响您发邮件。 上周有一个使用Hostease的虚拟主机的客户&#xff0c;联系hos…

C语言easyx飞机大战源码+素材(大屏版)

在上一期的博客中给大家分享了小屏版的飞机大战的源码和素材 往期回顾: C语言easyx飞机大战源码+素材 (点击这里进入) 今天给大家带来一个更高级的飞机大战版本 废话不多说,直接看效果 看着不错吧 接下来给大家看看部分源码 #include "stdafx.h" #include &…

Linux编辑器——Vim详解

目录 ⭐前言 ⭐vim的基本概念 ⭐vim的基本操作 ⭐vim命令模式命令集 ⭐vim末行模式命令集 ⭐简单vim配置 ⭐配置文件的位置 ⭐常用配置选项 ⭐前言 vi/vim的区别简单点来说&#xff0c;它们都是多模式编辑器&#xff0c;不同的是vim是vi的升级版本&#xff0c;它不仅兼容…
最新文章