Ansible 安装nginx
* 思路:先在一台机器上编译安装好nginx、打包,然后再用ansible去下发
1./usr/local/nginx/是已经编译安装好的nginx文件,配置好了启动脚本和配置文件。
2.cd /usr/local #进入上一级目录
3.tar czvf nginx.tar.gz nginx #将目录打包
4.cd /etc/ansible 进入ansible配置文件目录
5.mkdir nginx_install 创建一个nginx_install的目录,方便管理
6.cd nginx_install
7.mkdir -p roles/{common,install}/{handlers,files,meta,tasks,templates,vars}
说明:roles目录下有两个角色,common为一些准备操作,如安装一些依赖包。install为安装nginx的操作。每个角色下面又有几个目录,handlers下面是当发生改变时要执行的操作,通常用在配置文件发生改变,重启服务。files为安装时用到的一些文件,meta为说明信息,说明角色依赖等信息,tasks里面是核心的配置文件,templates通常存一些配置文件,启动脚本等模板文件,可以根据不同的机器配置,下发不同的配置文件。vars下为定义的变量
8.cd /etc/ansible/nginx_install/roles/common/tasks
* 定义common/tasks文件
9.vim main.yml #定义common的tasks,nginx是需要一些依赖包的.内容如下
---
- name: Install initializtion require software #名称
yum: name={{ item }} state=installed #yum模块,循环安装包
with_items:
- zlib-devel
- pcre-devel
- openssl-devel
说明:不管在哪个目录下,总入口配置文件名字为main.yml
* 定义install/files文件
10.cd /etc/ansible/nginx_install/roles/install/
11.cp /usr/local/nginx.tar.gz /etc/ansible/nginx_install/roles/install/files/nginx.tar.gz #复制包到指定目录files下
* 定义install/templates文件
12.cp /usr/local/nginx/conf/nginx.conf templates/ #复制配置文件到templates下
cp /etc/init.d/nginx templates/ #复制启动脚本到templates下
* 定义install/vars文件
13.vim vars/main.yml #内容如下
nginx_user: www
nginx_port: 80 #可不写,用不到
nginx_basedir: /usr/local/nginx #定义客户端解压到哪个目录下去
* 定义install/tasks文件,复制相关文件到指定目录
14.vim tasks/copy.yml
- name: Copy Nginx Software #模块copy的src相对目录为files/,所以可以直接写。
copy: src=nginx.tar.gz dest=/tmp/nginx.tar.gz owner=root group=root
- name: Uncompression Nginx Software #解压到客户端指定目录
shell: tar zxf /tmp/nginx.tar.gz -C /usr/local/
- name: Copy Nginx Start Script #template模块和copy模块功能相似
template: src=nginx dest=/etc/init.d/nginx owner=root group=root mode=0755
- name: Copy Nginx Config #引用的变量在vars中已经定义了
template: src=nginx.conf dest={{ nginx_basedir }}/conf/ owner=root group=root mode=0644
15.vim tasks/install.yml #定义建立用户,启动服务,删除压缩包
- name: Create Nginx User #www用户是nginx的配置文件中定义的,没有会报错,所以要添加用户
user: name={{ nginx_user }} state=present createhome=no shell=/sbin/nologin
- name: Start Nginx Service
service: name=nginx state=started
- name: Add Boot Start Nginx Service
shell: chkconfig --level 345 nginx on
- name: Delete Nginx compression files
shell: rm -rf /tmp/nginx.tar.gz
说明:state=present表示创建用户 createhome=no表示不创建家目录