Ansible:role企业级实战

发布于:2025-04-15 ⋅ 阅读:(20) ⋅ 点赞:(0)

实现 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

在这里插入图片描述