天天看点

ansible实战-nginx安装

背景:尽管yum和service模块安装和管理相应服务很方便,但实际生产中,一般需要使用源码安装

思路:先在一台机器上编译安装好nginx,打包,再用ansible分发下去

1. 创建相关目录和配置文件,整体树状图

    mkdir /etc/ansible/nginx_install

1.1 vim /etc/ansible/nginx_install/install.yml #总安装文件

<code>---</code>

<code>- hosts: agent.huangzp.com</code>

<code>  </code><code>remote_user: root</code>

<code>  </code><code>gather_facts: True</code>

<code>  </code><code>roles:</code>

<code>   </code><code>- common</code>

<code>   </code><code>- </code><code>install</code>

<a href="https://s3.51cto.com/wyfs02/M02/8F/25/wKioL1jU2OTTHH8qAAATqOny6UE936.png" target="_blank"></a>

1.2 mkdir -p roles/commom/tasks  # 安装前准备工作目录以及配置文件

commom:下面建一个tasks目录就行了

vim /etc/ansible/nginx_install/roles/common/tasks/main.yml  # 入口文件main.yml,安装nginx依赖包

<code>- name: </code><code>install</code> <code>initaliztion require software</code>

<code>  </code><code>yum: name={{ item }} state=installed</code>

<code>  </code><code>with_items:</code>

<code>    </code><code>- zlib-devel</code>

<code>    </code><code>- pcre-devel</code>

<code>    </code><code>- openssl-devel</code>

<a href="https://s4.51cto.com/wyfs02/M00/8F/27/wKiom1jU2POSpdDcAAAfGBu5N0I630.png" target="_blank"></a>

1.3 mkdir -p roles/install/{handlers,files,meta,tasks,template,vars} # 安装主配置目录

tasks:核心配置文件,分发资源和安装nginx

1)vim /etc/ansible/nginx_install/roles/install/tasks/main.yml  #入口文件,包含了 copy.yml和install.yml两个配置文件

<code>- include: copy.yml</code>

<code>- include: </code><code>install</code><code>.yml</code>

<a href="https://s3.51cto.com/wyfs02/M00/8F/25/wKioL1jU2SiDoGF0AAAQTECvPN8428.png" target="_blank"></a>

2) vim /etc/ansible/nginx_install/roles/install/tasks/copy.yml  #拷贝压缩包、解压缩、拷贝启动脚本、拷贝配置文件

<code>- name: copy nginx software</code>

<code>  </code><code>copy: src=nginx.</code><code>tar</code><code>.gz dest=</code><code>/tmp/nginx</code><code>.</code><code>tar</code><code>.gz owner=root group=root  </code><code>#copy模块相对目录files</code>

<code>- name: uncompression nginx software</code>

<code>  </code><code>shell: </code><code>tar</code> <code>zxf </code><code>/tmp/nginx</code><code>.</code><code>tar</code><code>.gz -C </code><code>/usr/local/</code>

<code>- name: copy nginx start script</code>

<code>  </code><code>template: src=nginx dest=</code><code>/etc/init</code><code>.d</code><code>/nginx</code> <code>owner=root group=root mode=0755  </code><code>#template模块相对目录templates</code>

<code>- name: copy nginx config</code>

<code>  </code><code>template: src=nginx.conf dest={{ nginx_basedir }}</code><code>/conf/</code> <code>owner=root goup=root mode=0644</code>

<a href="https://s1.51cto.com/wyfs02/M01/8F/27/wKiom1jU2TnClAIRAAA5lkJWNO8362.png" target="_blank"></a>

3)vim /etc/ansible/nginx_install/roles/install/tasks/install.yml # 创建运行用户、启动nginx服务、添加至系统服务、删除压缩文件

<code>- name: create nginx user</code>

<code>  </code><code>user: name={{ nginx_user }} state=present createhome=no shell=</code><code>/sbin/nologin</code>

<code>- name: start nginx service</code>

<code>  </code><code>service: name=nginx state=started</code>

<code>- name: add boot start nginx service</code>

<code>  </code><code>shell: chkconfig --level 345 nginx on</code>

<code>- name: delete nginx compression files</code>

<code>  </code><code>shell: </code><code>rm</code> <code>-rf </code><code>/tmp/nginx</code><code>.</code><code>tar</code><code>.gz</code>

<a href="https://s1.51cto.com/wyfs02/M01/8F/25/wKioL1jU2UnzePDCAAAvG-MSXLI600.png" target="_blank"></a>

vars:定义变量

vim /etc/ansible/nginx_install/roles/install/vars/main.yml #定义变量运行用户、端口、安装目录

<code>nginx_user: www</code>

<code>nginx_port: 80</code>

<code>nginx_basedir: </code><code>/usr/local/nginx</code>

<a href="https://s5.51cto.com/wyfs02/M01/8F/27/wKiom1jU2VeicNhaAAAVMaVLf38181.png" target="_blank"></a>

files:存放nginx.tar.gz等文件

tar -zcf nginx.tar.gz  /usr/local/nginx

cp /usr/local/nginx.tar.gz /etc/ansible/nginx_install/roles/install/files/

templates:模板配置文件,如启动脚本模板

cp /usr/local/nginx/conf/nginx.conf /etc/ansible/nginx_install/roles/install/template/

cp /etc/init.d/nginx /etc/ansible/nginx_install/roles/install/template/

handlers:发生改变要执行的操作,如配置文件改变,则重启服务

meta:说明信息,角色依赖等,一般用不着

2. 执行总配置文件ansible-playbook install.yml

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

继续阅读