1. 先在一台机器上编译安装好nginx,然后打包

tar -zcvf nginx.tar.gz /usr/local/nginx --exclude=conf/nginx.conf --exclude=conf/vhosts

2. 进入ansible配置文件目录,创建一个nginx_install目录

cd /etc/ansible
mkdir nginx_install

3. 进入nginx_install目录,创建目录结构

cd nginx_install
mkdir -p roles/{common,install}/{handlers,files,meta,tasks,templates,vars}

PS:roles目录下面有两个角色,common主要是做一些准备工作,install为安装nginx的操作;每个角色下面有相应的目录,handlers下面主要是当发生改变时要执行的操作,通常是配置文件发生改变,重启服务。

files为安装时用到的一些文件,meta为说明信息,tasks里面是核心的配置文件,templates通常存一些配置文件、启动脚本等模板文件,vars为定义的变量。

4. 把压缩好的文件移动到/etc/ansible/nginx_install/roles/install/files/下面

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

5. 把配置文件和启动脚本放到/etc/ansible/nginx_install/roles/install/templates下面

mv /usr/local/nginx/conf/nginx.conf /etc/ansible/nginx_install/roles/install/templates/
mv /etc/init.d/nginx /etc/ansible/nginx_install/roles/install/templates/

6. 定义common的tasks,nginx需要依赖一些包

cd /etc/ansible/nginx_install/roles/
vim common/tasks/main.yml //内容如下:
- name: Install initializtion require software
yum: name={{ item }} state=installed
with_items:
- zlib-devel
- pcre-devel

7. 定义变量

vim install/vars/main.yml //内容如下:

nginx_user: www
nginx_port: 80
nginx_basedir: /usr/local/nginx

8. 定义配置文件,把文件拷贝到对应的目标机器上面

vim install/tasks/copy.yml //内容如下:

- name: Copy Nginx Software
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: src=nginx dest=/etc/init.d/nginx owner=root group=root mode=0755
- name: Copy Nginx Config
template: src=nginx.conf dest={{ nginx_basedir }}/conf/ owner=root group=root mode=0644

9. 定义配置文件,新建用户、启动服务以及删除压缩包

vim install/tasks/install.yml //内容如下:

- name: Create Nginx User
user: name={{ nginx_user }} state=present createhome=no shell=/sbin/nologin
- name: Start Nginx Service
shell: /etc/init.d/nginx start
- name: Add Boot Start Nginx Service
shell: chkconfig --level 345 nginx on
- name: Delete Nginx compression files
shell: rm -f /tmp/nginx.tar.gz

10. 在tasks目录下面创建main.yml把copy和install调用

vim install/tasks/main.yml //内容如下:

- include: copy.yml
- include: install.yml

11. 定义一个入口配置文件

cd /etc/ansible/nginx_install
vim install.yml //内容如下:
---
- hosts: 127.0.0.1
remote_user: root
gather_facts: true
roles:
- common
- install

PS:会依次调用roles下面的common、install,默认会执行对面目录下面tasks下的main.yml文件

12. 执行

ansible-playbook /etc/ansible/nginx_install/install.yml

playbook实现nginx安装的更多相关文章

  1. Linux centosVMware 自动化运维Ansible介绍、Ansible安装、远程执行命令、拷贝文件或者目录、远程执行脚本、管理任务计划、安装rpm包/管理服务、 playbook的使用、 playbook中的循环、 playbook中的条件判断、 playbook中的handlers、playbook实战-nginx安装、管理配置文件

    一.Ansible介绍 不需要安装客户端,通过sshd去通信 基于模块工作,模块可以由任何语言开发 不仅支持命令行使用模块,也支持编写yaml格式的playbook,易于编写和阅读 安装十分简单,ce ...

  2. zabbix 3.0.3 (nginx)安装过程中的问题排错记录

    特殊注明:安装zabbix 2.4.8和2.4.6遇到2个问题,如下:找了很多解决办法,实在无解,只能换版本,尝试换(2.2.2正常 | 3.0.3正常)都正常,最后决定换3.0.3 1.Error ...

  3. Nginx 安装以及反向代理配置(windows)

    安装 windows 下 Nginx 安装非常简单,下载地址 http://nginx.org/en/download.html. 选择红框这个,下载下来是个 zip 文件,解压.这时我们双击根目录的 ...

  4. nginx安装与配置

    一.在线安装 ubuntu 安装 sudo apt-get install nginx 安装后文件结构为: 配置文件:/etc/nginx ,并且每台虚拟主机已经安排在 /etc/nginx/site ...

  5. Windows下将nginx安装为服务运行

    今天看到nginx这个小服务器软件正式版更新到了1.4.2,想玩下它.这个服务器软件虽小,但功能强大,是开源软件,有着良好的性能,被很多个人.企业,甚至大型企业所使用! 由于是在Windows下,所以 ...

  6. windows下nginx安装、配置与使用(转载)

    目前国内各大门户网站已经部署了Nginx,如新浪.网易.腾讯等:国内几个重要的视频分享网站也部署了Nginx,如六房间.酷6等.新近发现Nginx 技术在国内日趋火热,越来越多的网站开始部署Nginx ...

  7. 阿里云服务器Linux CentOS安装配置(八)nginx安装、配置、域名绑定

    阿里云服务器Linux CentOS安装配置(八)nginx安装.配置.域名绑定 1.安装nginx yum -y install nginx 2.启动nginx service nginx star ...

  8. Linux系统下Nginx安装详解

    该随笔为个人原创,后期会根据项目实践实时更新,如若转载,请注明出处,方便大家获得最新博文! 注:安装Nginx需要Linux系统已经安装   openssl-fips-2.0.2.tar.gz zli ...

  9. Linux下查看Nginx安装目录、版本号信息?

    Linux环境下,怎么确定Nginx是以那个config文件启动的? 输入命令行: ps  -ef | grep nginx 摁回车,将出现如下图片: master process 后面的就是 ngi ...

随机推荐

  1. iOS面试题--网络--如何处理多个网络请求的并发的情况

    如何处理多个网络请求的并发的情况 一.概念 1.并发 当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配 ...

  2. LeetCode 125 Valid Palindrome(有效回文)(*)

    翻译 给定一个字符串.确定它是否是回文的,仅仅考虑当中的数字和字符并忽略其它. 比如. "A man, a plan, a canal: Panama" 是回文的. "r ...

  3. php如何互换一个数组的首尾元素 中间不变 首尾互换

    群里有人提出一个问题 如何互换一个数组的首尾元素 中间不变 首尾互换 代码如下: <?php $array=array(1,2,3,4,5,6,7,8,9,10); $first=array_s ...

  4. Excel 信息对比_数组版

    Sub LOOKUP_UChur() Dim i As Long '=== sourceWorksheet = 数据源表名称 Dim sourceWorksheet As Worksheet Dim ...

  5. [Android] 开源框架 Volley 自定义 Request

    今天在看Volley demo (https://github.com/smanikandan14/Volley-demo), 发现自定义GsonRequest那块代码不全, 在这里贴一个全的. pu ...

  6. 《从零开始学Swift》学习笔记(Day 66)——Cocoa Touch设计模式及应用之通知机制

    原创文章,欢迎转载.转载请注明:关东升的博客 通知(Notification)机制是基于观察者(Observer)模式也叫发布/订阅(Publish/Subscribe)模式,是 MVC( 模型-视图 ...

  7. html5文本超出部分用省略号表示

    <p style="overflow:hidden; text-overflow:ellipsis;width:170px; white-space:nowrap; "> ...

  8. linux shell 脚本使用

    定义变量 fileName=text.txt 变量名称fileName,变量名称text.txt 使用变量 $fileName 用美元符号$开头,后面加变量名称,即可使用变量 使用用户输入参数 打印第 ...

  9. java项目中初期常见的错误及解决方案

    在做项目的初期,想必总会有各种奇奇葩葩的错误出现,本博文主要整理了博主在项目初期遇到的错误,希望能为大家减少犯这些错误 1.Env 名字写错了,图片中错误类型是名字没有发现的异常,因此需要检查后面报错 ...

  10. append和innerHTML的区别以及使用方法

    1.append jquery中的append的使用方式:$("#id").append("<a href='#'>test</a>") ...