Linux云计算运维架构师(连载)-自动化运维ansible-14

2021-07-06 11:01:17 浏览数 (1)

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实现多功能或应用的一键部署。

0 人点赞