9870780 发表于 2016-4-11 10:29:17

ansible实例-安装nginx上

                      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.mkdirnginx_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表示不创建家目录
                   

页: [1]
查看完整版本: ansible实例-安装nginx上