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

Ansible:role企业级实战

文章目录

  • 实现 nginx 角色
    • 创建task文件
    • 创建handler文件
    • 准备模板文件
    • 创建变量文件
    • 在playbook中调用角色
  • 实现 memcached 角色
    • 创建相关目录
    • 创建相关task任务
    • 准备模板文件
    • 查看目录结构
    • 在playbook中调用角色
  • 实现多角色的选择

实现 nginx 角色

卸载httpd,创建相关目录

ansible webservers -m yum -a 'name=httpd state=absent'
mkdir -pv  playbook/roles/nginx/{tasks,handlers,templates,vars}
tree  playbook/roles/nginx

在这里插入图片描述

创建task文件

cd playbook/roles/nginx/tasks
vim main.yml 
- include: install.yml
- include: config.yml
- include: index.yml
- include: service.yml
  • 安装
vim  install.yml 
- name: install
  yum: name=nginx 
  • 配置
vim config.yml 
- name: config file for centos7
  template: src=nginx7.conf.j2 dest=/etc/nginx/nginx.conf
  when: ansible_distribution_major_version=="7"
  notify: restart
  • 网页:引用另一个role的网页文件
vim  index.yml 
- name: index.html
  copy: src=roles/httpd/files/index.html dest=/usr/share/nginx/html/
  # 这里用到了httpd角色的index.html文件,请注意路径一定要从roles开始写
  • 启动服务
vim service.yml 
- name: start service
  service: name=nginx state=started enabled=yes

创建handler文件

  • 重启服务
cd ../handlers/
vim main.yml 
- name: restart
  service: name=nginx state=restarted

准备模板文件

cp /etc/nginx/nginx.conf playbook/roles/nginx/templates/nginx7.conf.j2

在这里插入图片描述
修改参数:

user {{ user }};
worker_processes {{ ansible_processor_vcpus+2 }};
在这里插入图片描述

创建变量文件

cd playbook/roles/nginx/vars/
 vim main.yml
user: daemon

查看目录结构:

 tree playbook/roles/nginx/

在这里插入图片描述

在playbook中调用角色

cd playbook/
vim role_nginx.yml 
---
#nginx role 
- hosts: webservers

  roles:
    - role: nginx
ansible-playbook -C role_nginx.yml
ansible-playbook role_nginx.yml

在这里插入图片描述

ansible webservers -a 'yum remove -y nginx '

实现 memcached 角色

Memcached 是一个开源的,支持高性能,高并发的分布式内存缓存系统,由 C 语言编写。从软件名称上看,前 3 个字符 Mem 就是内存的意思,而接下来的后面 5 个字符 cache 就是缓存的意思,最后一个字符 d,是 daemon 的意思,代表的是服务器端守护进程模式服务。

使用 Memcached 的主要目的是,通过在自身内存中缓存关系型数据库的查询结果,减少数据库被访问的次数,以提高动态 Web 应用的速度,提高网站架构的并发能力和可扩展性。

Memcached 服务的运行原理是通过在事先规划好的系统内存空间中临时缓存数据库中的各类数据,以达到减少前端业务服务对数据库的直接高并发访问,从而提升大规模网站集群中动态服务的并发访问能力。

生产场景的 Memcached 服务一般被用来保存网站中经常被读取的对象或数据,就像我们的客户端浏览器也会把经常访问的网页缓存起来一样,通过内存缓存来存取对象或数据要比磁盘存取快很多,因为磁盘是机械的。因此,在当今的 IT 企业中,Memcached 的应用范围很广泛。

创建相关目录

mkdir roles/memcached/{tasks,templates} -pv

创建相关task任务

  • main.yaml 包含所有的task任务
cd roles/memcached/tasks/
 vim main.yml
- include: install.yml
- include: config.yml
- include: service.yml
  • 安装软件
vim install.yml
- name: install
  yum: name=memcached
  • 配置环境
vim config.yml 
- name: config file
  template: src=memcached.j2  dest=/etc/sysconfig/memcached
  • 启动服务
vim service.yml
- name: service
  service: name=memcached state=started enabled=yes

准备模板文件

yum install memcached#本地主机先安装,获得配置文件memcached
cp /etc/sysconfig/memcached playbook/roles/memcached/templates/memcached.j2
cd playbook/roles/memcached/templates/
vim memcached.j2
PORT="11211"
USER="memcached"
MAXCONN="1024"
#CACHESIZE="64"
CHESIZE="{{ansible_memtotal_mb//4}}"#修改为总内存的1/4
OPTIONS=""

查看目录结构

tree /root/playbook/roles/memcached/

在这里插入图片描述

在playbook中调用角色

vim role_memcached.yml
---
- hosts: appsrvs

  roles:
    - role: memcached
ansible-playbook -C role_memcached.yml
ansible-playbook role_memcached.yml
ansible appservers -a 'ss -ntl'

在这里插入图片描述

#本地获取了配置文件就可以卸载掉了
 yum remove -y memcached

实现多角色的选择

vim role_httpd_nginx.yml
---
- hosts: websrvs

  roles:
    - {role: httpd,tags: [httpd,web], when: ansible_distribution_major_version=="7" }
    - {role: nginx,tags: [nginx,web], when: ansible_distribution_major_version=="8" }
ansible-playbook -C role_httpd_nginx.yml

在这里插入图片描述

相关文章:

  • 4-6记录(B树)
  • 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第七讲)
  • 【React】副作用 setState执行流程 内置钩子(Effect Callback Reducer)React.memo
  • 从 STP 到 RSTP 再到 MSTP:网络生成树协议的工作机制与发展
  • Docker部署.NetCore8项目
  • 【Axure视频教程】中继器表格轮播含暂停效果
  • 蓝桥杯真题:数字串个数
  • 【今日三题】小乐乐改数字 (模拟) / 十字爆破 (预处理+模拟) / 比那名居的桃子 (滑窗 / 前缀和)
  • Spring Security6 从源码慢速开始
  • 系统思考—提升解决动态性复杂问题能力
  • C++对象生命周期管理:从构造到析构的完整指南
  • Unity Addressables资源生命周期自动化监控技术详解
  • 【智能指针】—— 我与C++的不解之缘(三十三)
  • 02-redis-源码下载
  • mysql-锁的算法(记录锁、间隙锁、临键锁)
  • 【电商】基于LangChain框架将多模态大模型连接数据库实现精准识别
  • 基于CNN-GRU的深度Q网络(Deep Q-Network,DQN)求解移动机器人路径规划,MATLAB代码
  • 【js面试题】new操作做了什么?
  • # 爬虫技术的实现
  • 2747. 统计没有收到请求的服务器数目