一、思路

现在一台机器上编译安装好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的更多相关文章

  1. Ansible安装配置及命令使用详解

    Ansible和saltstack目前市面上一些其它的项目管理工具有很大的不同,它的设计初衷就是为了更方便.快捷的进行配置管理.它易于安装和使用.语法也非常简单易学.你可以用Ansible将平常复杂的 ...

  2. ELK 6安装配置 nginx日志收集 kabana汉化

    #ELK 6安装配置 nginx日志收集 kabana汉化 #环境 centos 7.4 ,ELK 6 ,单节点 #服务端 Logstash 收集,过滤 Elasticsearch 存储,索引日志 K ...

  3. (转)windows 下安装配置 Nginx 详解

    windows 下安装配置 Nginx 详解 本文转自https://blog.csdn.net/kingscoming/article/details/79042874 nginx功能之一可以启动一 ...

  4. 使用Ansible安装部署nginx+php+mysql之安装nginx(1)

    使用Ansible安装nginx 1.nginx.yaml文件 --- - hosts: clong remote_user: root gather_facts: no tasks: # 安装epe ...

  5. deepin 15.3 安装配置nginx

    1.安装nginx sudo apt-get install nginx 2.配置nginx sudo gedit /etc/nginx/sites-enabled/default 找到:index ...

  6. 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 ...

  7. Ansible安装配置及使用

    一.Ansible特点 1.不需要安装客户端,通过sshd通信 2.基于模块工作,模块可以由任何序言开发 3.不仅支持命令行使用模块,也支持编写yaml格式的playbook 4.支持sudo 5.有 ...

  8. Linux 下安装配置nginx及常见问题解答

    其实也不能完全算是原创吧!都是我配置nginx时所遇到的问题,查阅资料后总结起来.即是巩固一下nginx的配置,也是分享给新入Linux的童鞋们一些知识 好了,不多废话,进入主题吧! 为nginx添加 ...

  9. Ansible安装配置

    Ansible工具的安装与配置 Ansible基于SSH,不需要在远程端安装任何软件,只需要在管理端安装ansible及其组件即可. Ansible使用前提是已配置ssh密钥免登陆. 一.安装组件: ...

随机推荐

  1. [开发笔记]-“在引用COM组件时,出现了无法嵌入互操作类型。。。”的错误

    这两天在做一个需要将wps文档转换成word文档的程序,在调用wps的com组件时项目编译是没有问题的,但当运行的时候却弹出了下面的错误提示: 从网上百度一番后,找到了正确的解决方法. 先从Com组件 ...

  2. [开发笔记]-使用bat命令来快速安装和卸载Service服务

    一般我们在编写完Service服务程序后,都是通过cmd命令提示窗口来安装或卸载服务,但频繁的在cmd窗口中去“拼”文件的路径着实让人“不能忍”.所以,我们需要一钟“更快捷”的方式来进行安装或者卸载操 ...

  3. 如何在Linux上通过grub添加内核参数

    转自Linux中国 我们可以在linux内核启动时为其提供各种各样的参数.这些参数可以自定义内核默认的行为,或者通知内核关于硬件的配置信息.内核参数应在内核启动时通过引导装载程序,如GRUB或LILO ...

  4. FFT快速傅立叶变换的工作原理

    实数DFT,复数DFT,FFTFFT是计算DFT的快速算法,但是它是基于复数的,所以计算实数DFT的时候需要将其转换为复数的格式,下图展示了实数DFT和虚数DFT的情况,实数DFT将时域中N点信号转换 ...

  5. MSP430G2553之timerA产生PWM

    总结:选SMCLK(可以测出来)         若选ACLK,经示波器PWM时有时无 举例一: #include <MSP430G2553.h> #define CPU_F ((doub ...

  6. HDFS的可靠性

    HDFS的可靠性 1.冗余副本策略   2.机架策略    3.心跳机制    4.安全模式 5.校验和           6.回收站       7.元数据保护    8.快照机制 1.冗余副本策 ...

  7. Ogre碰撞检测

    转自:http://blog.csdn.net/weiqubo/article/details/7108363 Ogre采用树桩管理场景中的各种"元素"(摄像机.灯光.物体等),所 ...

  8. unity3d基础01

    Unity3d 五大视图: 1 Scene:存放hierarchy中创建的游戏对象,但实际只能看到一部分 *Scene浏览: ①右键进入“飞行模式”,方便查看整个场景 ②选中摄像机,按ALT进入浏览的 ...

  9. 巧用nginx屏蔽对用户不可见的文件

    事情的起因是这样的--前端的项目中有一些.less之类的源文件,而为了方便迭代更新发布,直接就把整个工程放到了www目录下. 这样虽然方便了,但是会带来一些安全隐患——用户可以访问/盗取这些源文件. ...

  10. matlab求曲线长度

    曲线段在上的弧长为采用积分所求弧长s=∫√(1+y'²)dxmatlab求出各点的导数,然后按照上式积分 clear>> x=1:0.1:10;>> y=rand(1,leng ...