playbook实现nginx安装
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安装的更多相关文章
- Linux centosVMware 自动化运维Ansible介绍、Ansible安装、远程执行命令、拷贝文件或者目录、远程执行脚本、管理任务计划、安装rpm包/管理服务、 playbook的使用、 playbook中的循环、 playbook中的条件判断、 playbook中的handlers、playbook实战-nginx安装、管理配置文件
一.Ansible介绍 不需要安装客户端,通过sshd去通信 基于模块工作,模块可以由任何语言开发 不仅支持命令行使用模块,也支持编写yaml格式的playbook,易于编写和阅读 安装十分简单,ce ...
- zabbix 3.0.3 (nginx)安装过程中的问题排错记录
特殊注明:安装zabbix 2.4.8和2.4.6遇到2个问题,如下:找了很多解决办法,实在无解,只能换版本,尝试换(2.2.2正常 | 3.0.3正常)都正常,最后决定换3.0.3 1.Error ...
- Nginx 安装以及反向代理配置(windows)
安装 windows 下 Nginx 安装非常简单,下载地址 http://nginx.org/en/download.html. 选择红框这个,下载下来是个 zip 文件,解压.这时我们双击根目录的 ...
- nginx安装与配置
一.在线安装 ubuntu 安装 sudo apt-get install nginx 安装后文件结构为: 配置文件:/etc/nginx ,并且每台虚拟主机已经安排在 /etc/nginx/site ...
- Windows下将nginx安装为服务运行
今天看到nginx这个小服务器软件正式版更新到了1.4.2,想玩下它.这个服务器软件虽小,但功能强大,是开源软件,有着良好的性能,被很多个人.企业,甚至大型企业所使用! 由于是在Windows下,所以 ...
- windows下nginx安装、配置与使用(转载)
目前国内各大门户网站已经部署了Nginx,如新浪.网易.腾讯等:国内几个重要的视频分享网站也部署了Nginx,如六房间.酷6等.新近发现Nginx 技术在国内日趋火热,越来越多的网站开始部署Nginx ...
- 阿里云服务器Linux CentOS安装配置(八)nginx安装、配置、域名绑定
阿里云服务器Linux CentOS安装配置(八)nginx安装.配置.域名绑定 1.安装nginx yum -y install nginx 2.启动nginx service nginx star ...
- Linux系统下Nginx安装详解
该随笔为个人原创,后期会根据项目实践实时更新,如若转载,请注明出处,方便大家获得最新博文! 注:安装Nginx需要Linux系统已经安装 openssl-fips-2.0.2.tar.gz zli ...
- Linux下查看Nginx安装目录、版本号信息?
Linux环境下,怎么确定Nginx是以那个config文件启动的? 输入命令行: ps -ef | grep nginx 摁回车,将出现如下图片: master process 后面的就是 ngi ...
随机推荐
- JqGrid 获取所有数据
jqGrid使用本地数据时,当jqGrid配置的rowNum小于本地总数据量(records属性记录总数据,可以通过records获取到本地总数据量),调用getRowData方法获取到的只是显示的部 ...
- Android得到SD卡文件夹大小以及删除文件夹操作
float cacheSize = dirSize(new File(Environment.getExternalStorageDirectory() + AppConstants.APP_CACH ...
- Gson简要使用笔记(转载)
经过比较,gson和其他现有java json类库最大的不同时gson需要序列化得实体类不需要使用annotation来标识需要序列化得字段,同时gson又可以通过使用annotation来灵活配置需 ...
- IE edge是怎么了??
IE edge 怎么不能通过$.getJSON(url,function(data){ alert(''); });获取数据呢?,其他浏览器和IE的10以下版本都没问题获取到了,这是什么情况!本来是想 ...
- DocumentFragment 不支持 innerHTML
在需要多次使用 innerHTML 的地方,一般是推荐用 DocumentFragment 来缓存,最后一次性插入 body,从而减少浏览器的渲染,提高性能,不过最近也发现一个 bug: Docume ...
- Debian安装Chrome
本文完全原创,转载请说明出处,希望对大家有用. 本篇博客是个人总结,一方面以便日后查看,另一方面希望能为其他人提供一些便利. 正文 新安装的Debian需要安装个chromeFQ,但从google网站 ...
- 使用Servlet3.0新特性asyncSupported=true时抛异常java.lang.IllegalStateException: Not supported
最近在运用Servlet3.0新特性:异步处理功能的时候出现以下了2个问题: 运行时会抛出以下两种异常: 一月 19, 2014 3:07:07 下午 org.apache.catalina.core ...
- 英语知识(与字面意思 相反的) Corner office
Corner office 角落办公室是一种身份 角落办公室,即处于公司最佳位置的高级办公室,通常指总裁或总经理办公室.喻某人在公司或单位里的最高职务或在社会上与众不同的身份地位. 这里的角落是指方形 ...
- 通过实现一个TableView来理解iOS UI编程
推荐一篇神作: 通过实现一个TableView来理解iOS UI编程 http://blog.jobbole.com/61101/
- [报错] Xcode Error-Could not insert new outlet connection: Could not find any information for the class named "xxx"
当从StoryBoard或xib中需要将控件绑定类文件时(OC中是.m文件,Swift中是.swift文件) 当按住control键将控件往类文件中拖拽后,填写控件的name后,点击connect时 ...