天天看点

使用playbook安装nginx

需求:虽然nginx可以直接使用yum安装,但是我想要的是使用源码包编译安装,并且需要自定义一些模块。而且我需要通过playbook下发到远程机器上。

实现思路:先在一台机器上编译安装好nginx、打包,也就是把这台机器作为模板机,然后再用ansible playbook去进行下发到远程机器上。

1.进入ansible配置文件目录,并创建一个nginx_install的目录,方便管理:

说明:

roles目录下有两个角色,common为一些准备操作,install为安装nginx的操作。每个角色下面又有几个目录,handlers下面是当发生改变时要执行的操作,通常用在配置文件发生改变,重启服务。files为安装时用到的一些文件,meta为说明信息,说明角色依赖等信息,tasks里面是核心的配置文件,templates通常存一些配置文件,启动脚本等模板文件,vars下为定义的变量。

1.需要事先准备好安装用到的文件,具体如下:

在一台机器上事先编译安装好nginx,配置好启动脚本,配置好配置文件

安装好后,我们需要把nginx目录打包,并放到/etc/ansible/nginx_install/roles/install/files/下面,名字为nginx.tar.gz

启动脚本、配置文件都要放到/etc/ansible/nginx_install/roles/install/templates下面

nginx我这里早已编译安装好了:

所以我先在要做的事情就是把nginx目录打包,并放到files下面,以及把启动脚本、配置文件放到templates下面:

2.完成以上的操作后,还需要定义common的tasks,因为nginx是需要一些依赖包的:

1.定义变量:

2.然后要把所有用到的文档拷贝到目标机器:

注:这里src参数指定的是相对路径,这个相对路径相对的是模块,例如copy模块里的src参数的值为nginx.tar.gz,那么就会去files目录下找nginx.tar.gz,而template模块则是会去templates目录下找。

1.接下来是建立用户,启动服务,删除压缩包:

注:nginx_user变量是之前我们在vars目录下的main.yml文件中定义的,所以在这里可以直接引用。

1.再创建一个总体的main.yml,在这个文件里对copy.yml以及install.yml进行一个调用:

到此两个roles:common和install就定义完成了,接下来要定义一个作为总入口的配置文件:

注意:接着就是需要执行这个总入口文件了,但是如果你的目标机器之前安装过nginx需要先清理掉,不然可能会有冲突:

1、之前编译安装的清理办法:

find / -name "nginx*" -exec rm -rf {} \;

2、如果是之前yum安装的清理办法:

rpm -qa nginx yum remove -y nginx

执行这个总入口文件:

执行成功后,到客户端上查看服务进程是否已启动,以及80端口是否已监听:

到此,我们就把nginx安装完成了。

最后上一张思维导图来总结一下,每个目录所包含的文件及.yml文件所要做的事情:

使用playbook安装nginx

命令执行流程图:

使用playbook安装nginx

本文转自 ZeroOne01 51CTO博客,原文链接:http://blog.51cto.com/zero01/2067444,如需转载请自行联系原作者

继续阅读