ITPub博客

首页 > 数据库 > 数据库开发技术 > Ansible自动化运维工具8.0:playbook新玩法roles

Ansible自动化运维工具8.0:playbook新玩法roles

原创 数据库开发技术 作者:运维book思议 时间:2023-10-08 18:00:00 0 删除 编辑

先放个链接,万一有人关注呢

优质文章推荐

↓ ↓ ↓ ↓ ↓

Ansible自动化运维工具1.0:核心组件

Linux系统服务巡检脚本

Python脚本实现Zabbix自动微信告警

不会吧!Linux系统磁盘分区只会fdisk吗?

Linux系统不优化的后果有多严重?


书接上回:Ansible自动化运维工具7.0:playbook实践应用


roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令引入即可。简而言之,roles就是分别将变量、文件、任务、模板及处理器放置于单独的目录中,并可以随时引用的一种机制。角色一般用于基于主机构建服务的场景中,但也可以用于构建守护进程等场景中。主要使用场景是代码复用度较高的情况下。

目录结构

在管理节点中创建roles目录结构以及安装应用

#返回到家目录[root@ansible ~]# cd#递归创建目录[root@ansible ~]# mkdir roles/nginx/{files,handlers,tasks,templates,vars} -p#批量创建文件[root@ansible ~]# touch roles/site.yaml roles/nginx/{handlers,tasks,vars}/main.yaml#网页文件添加内容[root@ansible ~]# echo 1234 > roles/nginx/files/index.html#安装应用[root@ansible ~]# yum install -y nginx && cp /etc/nginx/nginx.conf roles/nginx/templates/nginx.conf.j2

查看当前所创建的目录结构

tree roles

输出结果如下

roles├── nginx│ ├── files│ │   └── index.html│ ├── handlers│ │   └── main.yaml│ ├── tasks│ │   └── main.yaml│ ├── templates│ └── vars│     └── main.yaml└── site.yaml6 directories, 5 files

编辑playbook

编辑playbook

vim roles/nginx/tasks/main.yaml

内容如下

---- name: install nginx packge  yum: name={{ item }} state=latest  with_items:  - epel-release  - nginx  - name: copy index.html  copy: src=index.html dest=/usr/share/nginx/html/index.html  - name: copy nginx.conf template  template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf  notify: restart nginx  - name: make sure nginx service running  service: name=nginx state=started enabled=yes

这次的playbook中许多内容都是以文件路径代替的。所以执行时,Ansible将会安装playbook中的顺序,从各个文件中读取内容。这样做的优势是,当一部分内容需要修改时,只需要修改其中一个文件的内容,从而方便日常管理。

编辑配置文件

在配置文件中修改一个参数值

vim nginx/templates/nginx.conf.j2

内容如下

user nginx;worker_processes {{ ansible_processor_cores }};error_log /var/log/nginx/error.log;pid /run/nginx.pid;...

这里将配置文件中的worker_processes(工作进程)参数的值修改为一个变量(ansible_processor_cores),该变量的含义是通过管理节点获取被管理节点的CPU核数。也就是说,当Ansible读取该参数时,先获取被管理节点的CPU核数,然后将获取到的数值作为变量值填写到此处,再进行后续的操作。

由于上述变量是一个可以供Ansible执行的参数,所以属于Ansible的内置变量。

配置变量

由于配置文件中的worker_connections变量是用户的自定义变量,所以需要用户来定义它的值

vim roles/nginx/vars/main.yaml

内容如下

worker_connections: 10240

该文件专门用来定义变量值,playbook中的所有变量值都可以在该文件中进行定义。

配置handlers

handlers也可以放置在一个单独的文件中

vim roles/nginx/handlers/main.yaml

内容如下

---- name: restart nginx  service: name=nginx state=restarted

这个handlers的目的是在给被管理节点复制了新的配置文件之后,能够及时使服务读取新的配置。

分配角色

开始给playbook分配角色,也就是,指定执行playbook的主机以及为其分配任务。

vim roles/site.yaml

内容如下

- hosts: host5  roles:  - nginx

指定了执行任务的主机为host5,并且指定执行的任务为“nginx”。需要注意的是,此处的nginx指的是rolers/nginx目录,表示该目录下包含了整个任务。

执行playbook

ansible-playbook roles/site.yaml

执行完成后,可访问到被控制节点上的Apache。

来不及解释了,快上车!(进群看公告)

欢迎新的小伙伴加入!在这里,我们鼓励大家积极参与群内讨论和交流,分享自己的见解和经验,一起学习和成长。同时,也欢迎大家提出问题和建议,让我们不断改进和完善这个平台。

              ↓↓↓ 点个在看,无需赞赏!

原文作者:运维book思议;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2022-09-24

  • 博文量
    333
  • 访问量
    215273