3.修改配置文件
修改Nginx的配置文件,具体如下所示。
#作以下修改
[root@ansible ~]# vim roles/nginx/templates/nginx.conf.j2
大概第六行
#worker_processes auto;
worker_processes {{ ansible_processor_cores }};
大概第15行
# worker_connections 1024;
worker_connections {{ worker_connections }};
#完成后的样子:
# For more information on configuration, see:
user nginx;
#worker_processes auto;
worker_processes {{ ansible_processor_cores }};
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
# worker_connections 1024;
worker_connections {{ worker_connections }};
}
······此处省略部分代码······
此处将配置文件中的worker_processes(工作进程)参数的值修改为ansible_processor_cores,将worker_connections(连接数量)参数的值也修改为了变量。
其中ansible_processor_cores是Ansible内部的一个已知变量,其的含义是通过Ansible服务器获取客户机的CPU核数。即,当Ansible读取该参数时会先获取客户机的CPU核数,然后将获取到的数值作为变量值填写到此处,再进行后续的操作。worker_connections(连接数量)是一个自定义变量,需要在roles下的var文件夹中进行定义。
4.编写变量
由于配置文件中的worker_connections变量是用户的自定义变量,所以需要用户来定义它的值,代码如下所示。
[root@ansible ~]# vim roles/nginx/vars/main.yaml
[root@ansible ~]# cat roles/nginx/vars/main.yaml
worker_connections: 10240
此处定义了worker_connections的值为10240。若读者有其他需要定义的变量,都可以在该文件中进行定义。
5.编写处理程序
任务文件中调用的处理程序应当定义在handlers目录中。在本小节的第二步中,剧本调用了重启Nginx服务的处理程序,其定义代码如下所示。
[root@ansible ~]# vim roles/nginx/handlers/main.yaml
[root@ansible ~]# cat roles/nginx/handlers/main.yaml
---
- name: restart nginx
service: name=nginx state=restarted
6.分配角色
给定义完成的剧本分配角色,即指定执行剧本的客户机并为其安排剧本,代码如下所示。
[root@ansible ~]# vim roles/site.yaml
[root@ansible ~]# cat roles/site.yaml
- hosts: host3
roles:
- nginx
这里指定了执行任务的主机为host3,并且指定执行的任务为“nginx”。需要注意的是,此处的nginx指的是rolers/nginx目录,表示该目录下包含了整个任务。
7.执行剧本
playbook配置完成之后,即可开始执行,代码及结果如下所示。
#切换至roles目录下
[root@ansible ~]# cd roles
#检验语法
[root@ansible roles]# ansible-playbook site.yaml --synax-check
playbook: site.yaml
#检验无误后开始执行
[root@ansible roles]# ansible-playbook site.yaml
PLAY [host3]
*******************************************************************
TASK [Gathering Facts]
*********************************************************
ok: [host3]
TASK [nginx : install epel-release packge]
*************************************
ok: [host3]
TASK [install nginx packge]
****************************************************
ok: [host3]
TASK [nginx : copy index.html]
*************************************************
ok: [host3]
TASK [copy nginx.conf template]
************************************************
changed: [host3]
TASK [make sure nginx service running]
*****************************************
changed: [host3]
RUNNING HANDLER [restart nginx]
************************************************
changed: [host3]
PLAY RECAP
*********************************************************************
host3 : ok=7 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
通过代码的反馈结果可以看到剧本已成功执行。通过访问客户机的IP地址即可进行验证,结果如图1.8所示。
图1.2 访问结果
通过图1.8中可以看到,客户机主页内容为之前配置的1234,演出成功结束。
1.1 小结
本套章为读者介绍了自动化运维工具Ansible的概念、工作原理、主机清单、配置模块、YAML语言的使用方式以及playbook的编写规则及案例实战。通过本章的学习,希望读者能够了解Ansible的工作原理,熟悉Ansible的组成模块与配置方式,熟练结合Ansible与playbook实现多功能或应用的一键部署。