Ansible安装配置Nginx
一、思路
现在一台机器上编译安装好nginx、打包,然后在用ansible去下发
cd /etc/ansible 进入ansible配置文件目录
mkdir roles/{common,install}/{handlers,files,meta,tasks,templates,vars} –pv
目录说明:
roles目录下面有两个角色,common为一些准备操作,install为安装nginx的操作。每个角色下面又有几个目录,handlers下面是当前发生改变时要执行的操作,通常用在配置文件发生改变,重启服务。files为安装时用到的一些文件,meta为说明信息,说明角色依赖等信息,tasks里面是核心的配置文件,templates通常存一些配置文件,启动监本等模板,vars下为定义的变量
进入install目录
二、Ansible安装Nginx(操作目录/etc/ansible/nginx_install)
/etc/ansible/nginx_install/roles/install/files目录下
定义common的tasks,nginx是需要依赖包的
cd /etc/ansible/nginx_install/
# vim roles/common/tasks/main.yml
- name: install initializtion require software
yum: name={{ item }} state=installed
with_items:
- zlib-devel
- openssl-devel
- pcre-devel
将编译好的配置文件放到roles/install/files/下
cp /usr/local/nginx.tar.gz files/
将配置文件和启动脚本放到roles/install/templates/下
cp /usr/local/nginx/conf/nginx.conf templates/
cp /etc/init.d/nginx templates/
定义安装时所用的变量
# vim roles/install/vars/main.yml
nginx_user: www
nginx_basedir: /usr/local/nginx
nginx_port: 80
定义复制文件copy.yml,复制所需的文件
# vim roles/install/tasks/copy.yml
- name: Copy Nginx Software
copy: src=nginx.tar.gz dest=/tmp/nginx.tar.gz owner=root group=root
- name: Uncompression Niginx 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
定义安装文件install.yml,安装nginx
- name: Create Nginx User
user: name={{ nginx_user }} state=present createhome=no shell=/sbin/nologin
- name: Create /data/logs
shell: mkdir -p /data/logs
- name: Start Nginx Service
service: name=nginx state=started
- name: Add Boot Start Nginx Service
shell: chkconfig --level 2345 nginx on
- name: Delete Nginx compression files
shell: rm -rf /tmp/nginx.tar.gz
定义入口文件main.yml,引用复制文件和安装文件
# vim roles/install/tasks/main.yml
- include: copy.yml
- include: install.yml
定义总入口文件
# vim install.yml
---
- hosts: fansik
remote_user: root
gather_facts: Ture
roles:
- common
- install
到此就可以用# ansible-playbook install.yml安装了
三、Ansible管理Nginx的配置文件
生产环境中大多时候是需要管理配置文件的,安装软件包只是在初始化环境的时候用一下,创建一个管理nginx配置文件的playbook
# mkdir -p /etc/ansible/nginx_config/roles/{new,old}/{files,handlers,vars,tasks}
其中new为更新是用到的,old为回滚是用到的,file下面为nginx.conf和vhosts目录,handlers为启动nginx服务的命令
关于回滚,需要在执行playbook之前备份一下旧的配置,所以老配置文件的管理一定要严格,千万不能随便去修改线上机器的配置,并且要保证new/files下面的配置和线上的配置一样
先把nginx.conf和vhosts目录放到files目录下面
cd /usr/local/nginx/conf
cp -r nginx.conf vhosts /etc/ansible/nginx_conf/roles/new/files
定义变量# vim roles/new/vars/main.yml
nginx_basedir: /usr/local/nginx
定义重新加载nginx服务
# vim roles/new/handlers/main.yml
- name: restart nginx
shell: /etc/init.d/nginx reload
定义核心任务# vim roles/new/tasks/main.yml
- name: copy conf file
copy: src={{ item.src }} dest={{ nginx_basedir }}/{{ item.dest }} backup=yes owner=root group=root mode=0644
with_items:
- { src: nginx.conf, dest: conf/nginx.conf }
- { src: vhosts, dest: conf/ }
notify: restart nginx
定义更新总入口文件# vim update.yml
---
- hosts: slave.fansik.com
user: root
roles:
- new
定义回滚总入口文件# vim backup.yml
---
- hosts: slave.fansik.com
user: root
roles:
- old
更新之前先
# rsync -av roles/new/files/ roles/old/files/
四、自动化部署的样例库
先安装git
# yum -y install git
# git clone git://github.com/dl528888/ansible-examples.git
Ansible安装配置Nginx的更多相关文章
- Ansible安装配置及命令使用详解
Ansible和saltstack目前市面上一些其它的项目管理工具有很大的不同,它的设计初衷就是为了更方便.快捷的进行配置管理.它易于安装和使用.语法也非常简单易学.你可以用Ansible将平常复杂的 ...
- ELK 6安装配置 nginx日志收集 kabana汉化
#ELK 6安装配置 nginx日志收集 kabana汉化 #环境 centos 7.4 ,ELK 6 ,单节点 #服务端 Logstash 收集,过滤 Elasticsearch 存储,索引日志 K ...
- (转)windows 下安装配置 Nginx 详解
windows 下安装配置 Nginx 详解 本文转自https://blog.csdn.net/kingscoming/article/details/79042874 nginx功能之一可以启动一 ...
- 使用Ansible安装部署nginx+php+mysql之安装nginx(1)
使用Ansible安装nginx 1.nginx.yaml文件 --- - hosts: clong remote_user: root gather_facts: no tasks: # 安装epe ...
- deepin 15.3 安装配置nginx
1.安装nginx sudo apt-get install nginx 2.配置nginx sudo gedit /etc/nginx/sites-enabled/default 找到:index ...
- Ubuntu 16.04 LTS 安装配置 Nginx 1.10.0 Php7.0-FPM
1. 安装Nginx,Php-7.0 ~$ sudo add-apt-repository ppa:nginx/stable ~$ sudo apt-get update ~$ sudo apt-ge ...
- Ansible安装配置及使用
一.Ansible特点 1.不需要安装客户端,通过sshd通信 2.基于模块工作,模块可以由任何序言开发 3.不仅支持命令行使用模块,也支持编写yaml格式的playbook 4.支持sudo 5.有 ...
- Linux 下安装配置nginx及常见问题解答
其实也不能完全算是原创吧!都是我配置nginx时所遇到的问题,查阅资料后总结起来.即是巩固一下nginx的配置,也是分享给新入Linux的童鞋们一些知识 好了,不多废话,进入主题吧! 为nginx添加 ...
- Ansible安装配置
Ansible工具的安装与配置 Ansible基于SSH,不需要在远程端安装任何软件,只需要在管理端安装ansible及其组件即可. Ansible使用前提是已配置ssh密钥免登陆. 一.安装组件: ...
随机推荐
- Noip2014 提高组 T2 联合权值 连通图+技巧
联合权值 描述 无向连通图 G 有 n 个点,n-1 条边.点从 1 到 n 依次编号,编号为 i 的点的权值为 WiWi, 每条边的长度均为 1.图上两点(u, v)的距离定义为 u 点到 v 点的 ...
- IT公司100题-5-查找最小的k个元素
问题描述: 输入n 个整数,输出其中最小的k 个. 例如输入8, 7, 6, 5, 4, 3, 2, 1这8 个数字,则最小的3 个数字为3, 2, 1. 分析: 时间复杂度O(nlogn)方法: ...
- POJ 3525 半平面交+二分
二分所能形成圆的最大距离,然后将每一条边都向内推进这个距离,最后所有边组合在一起判断时候存在内部点 #include <cstdio> #include <cstring> # ...
- java基础之 集合
一.ArrayList和Linkedlist的区别 1.ArrayList是基于数组,LinkedList基于链表实现. 对ArrayList和LinkedList而言,在列表末尾增加一个元素所花的开 ...
- main函数参数的使用
int main(int argc, char * argv[]) argc: argument count argv:argument vector 其中, char * argv[] 指针数组 c ...
- JSON基础使用
1)JSON概念 JSON 是纯文本 JSON 具有“自我描述性”(人类可读) JSON 具有层级结构(值中存在值) JSON 可通过 JavaScript 进行解析 JSON 数据可使用 AJAX ...
- Apache Jmeter(1)
Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域. 它可以用于测试静态和动态资源例如静态文件. ...
- Visual Studio 2013 Update 2 and with Update 2
Microsoft 的开发工具 Visual Studio 2013 迎来 Update2 更新.本次更新将为普通开发者带来更多全新功能.修复之前旧版 Bugs.提升性能以及稳定性.之前已经安装 VS ...
- 未能加载文件或程序集“DeveloperKit10.1/DotNet/ESRI.ArcGIS.ADF.Local.或它的某一个依赖项
使用VS2010进行ArcGIS Engine 10.1进行开发过程中,出现: 错误 1 未能加载文件或程序集“file:///D:/ArcGIS/DeveloperKit10.0/DotNet/ES ...
- GCD常用剖析
介绍:Grand Central Dispatch 简称(GCD)是苹果公司开发的技术,以优化的应用程序支持多核心处理器和其他的对称多处理系统的系统.这建立在任务并行执行的线程池模式的基础上的.它首次 ...