ansible 渲染nginx配置文件(菜鸟版)

标题有点吓人,其实做的很基础,简单。没什么技术含量。

1.首先在ansible上形成vhost.fact
cat books.txt
w ip1 dev 8021 8688 api
w ip2 dev 8021 8688 api

w是tomcat应用名称,api是域名名称

nginx.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import ConfigParser
import string, os, sys

def ynameconf():
    sfile = ‘books.txt‘
    inventory = {}
    with open(sfile, ‘rb‘) as f:
        for i in f.readlines():
            ip = i.strip().split()[1]
            yname = i.strip().split()[5]  # 域名
            if not yname in inventory:
                inventory[yname] = []
            inventory[yname].append(ip)
    return inventory

def ynameParser():
    cf = ConfigParser.ConfigParser()
    ynameyname=ynameconf()
    for k,v in ynameyname.iteritems():
        cf.add_section(‘general‘)
        cf.set("general", "pro_dir", k)
        cf.set("general", "ip1", v[0])
        cf.set("general", "ip2", v[1])
        # cf.set(k, ‘,‘.join(v))
        cf.write(open("vhost.fact", "w"))

ynameP=ynameParser()

生成的vhost.fact的样子
[general]
pro_dir = api
ip1 = ip1
ip2 = ip2

还有很多问题
1.假如有三台以上机器怎么处理
2.多个域名怎么同时处理,搞到我想到了协程

2.写yml文件,就几行

mkdir -p /etc/ansible/nginx

├── hosts
├── roles
│   └── vhost
│       ├── default
│       ├── files
│       ├── handlers
│       │   └── main.yml
│       ├── meta
│       ├── tasks
│       │   ├── install.yml
│       │   └── main.yml
│       ├── templates
│       │   ├── set.conf
│       │   └── vhost.conf
│       └── vars
└── vhost.yml

主要tasks/install.yml
- name: mkdir
  shell: mkdir -p /etc/ansible/facts.d
- name: copy vhost.fact
  copy: src=/etc/ansible/vhost.fact dest=/etc/ansible/facts.d/vhost.fact 
- name: flush
  setup: 
- name: copy
  template: src=set.conf dest=/usr/local/tengine/conf/SET/{{ ansible_local.vhost.general.pro_dir }}.conf
- name: copy
  template: src=vhost.conf dest=/usr/local/tengine/conf/conf.d/{{ ansible_local.vhost.general.pro_dir }}.conf

3.手动执行命令
#nginx域名渲染
cd /etc/ansible && python nginx.py
cd /etc/ansible/nginx/
#‘host=nginx‘ 这个是nginx服务器名称
ansible-playbook -i /etc/ansible/hosts vhost.yml --extra-vars ‘host=nginx‘
ansible -i /etc/ansible/hosts nginx -m shell -a ‘/usr/local/tengine/sbin/nginx -c /usr/local/tengine/conf/nginx.conf -t‘ 
ansible -i /etc/ansible/hosts nginx -m shell -a ‘/usr/local/tengine/sbin/nginx -c /usr/local/tengine/conf/nginx.conf -s reload‘

达到的效果,利用ansible使两台机器立刻部署完tomcat后,然后加入到nginx中。
土。
时间: 2024-10-23 17:20:03

ansible 渲染nginx配置文件(菜鸟版)的相关文章

ansible管理nginx配置文件

#生产环境中大多时候是需要管理配置文件的,安装软件包只是在初始化环境的时候用一下.下面我们来写个管理nginx配置文件的playbook 一.创建相关目录 mkdir  -p /etc/ansible/nginx_config/roles/{new,old}/{files,handlers,vars,tasks} #其中new为更新时用到的,old为回滚时用到的,files下面为nginx.conf和vhosts目录,handlers为重启nginx服务的命令. #关于回滚,需要在执行playb

ansible 部署基于centos7+docker+nginx+openssl+v2版私有仓库

ansible 部署基于centos7+docker.1.12+nginx+openssl+v2版私有仓库 1.申请域名证书不做详细教程网络上很多 2.ansible-playbook 结构 . ├── hosts # 需要安装服务器IP地址 ├── roles │   ├── docker │   │   ├── defaults │   │   ├── files │   │   │   └── dockerkey #证书 文件加 │   │   │       ├── domain.crt

ansible-管理nginx配置文件

背景:安装软件包,只是在初始化环境时用一下,大多时候需要修改配置文件:管理Nginx配置文件的playbook,执行playbook之前,一定要备份旧的配置:机器上的配置文件需和new/files保持一致 1. 创建目录和配置文件 说明:new为更新时用到,old为回滚时用到,即将new目录内容拷贝进来 mkdir -p /etc/anxible/nginx_config/roles/new/{files,handlers,vars,tasks} mkdir -p /etc/anxible/ng

etcd+confd实现Nginx配置文件自动管理

一.需求 我们使用Nginx做七层负载均衡,后端是Tomcat.项目采用灰度发布方式,每次项目升级,都要手动先从Nginx下摘掉一组,然后再升级这组,当项目快速迭代时,手动做这些操作显然会增加部署时间,于是就想通过脚本实现自动化管理Nginx配置文件. 当时考虑自己写Shell脚本对Nginx配置文件操作,需要用到sed流编辑器,sed本身没有条件判断语句,并不能灵活判断配置文件中要添加/删除位置,因此会增加配置错误风险. 在查资料无意间发现confd能自动管理配置文件,通过模板渲染生成配置文件

4.3-ansible实例-管理nginx配置文件

Ansible 管理配置文件 * 生产环境中大多时候是需要管理配置文件的,安装软件包只是在初始化环境的时候用一下.下面我们来写个管理nginx配置文件的playbook 1.mkdir  -p /etc/ansible/nginx_config/roles/{new,old}/{files,handlers,vars,tasks} 说明:其中new为更新时用到的,old为回滚时用到的,files下面为nginx.conf和vhosts目录,handlers为重启nginx服务的命令 关于回滚,需

ansible安装nginx

ansible安装nginx实现回滚发布功能 一.准备工作 1.准备两台机器 sai: 192.168.131.132  --> ansible的服务端 luojy: 192.168.131.133 --> ansible的客户端 2.132机器上安装ansible (1)yum install -y epel-release (2)yum install -y ansible 3.132,133机器上关闭防火墙 4.设置hostname,/etc/sysconfig/network 上定义

OpenResty — Nginx全能插件版

官网: http://openresty.org/ 虽然是中国人做的,但没几个汉字..... 我用Nginx,是这样一个过程: 1. 系统rpm中的nginx,能让其跑起来 2. 玩配置文件 3. 玩编译选项 4. 写插件,集成第三方插件 OpenResty , 是淘宝一位大牛(agentzh)集成的包含N多好插件的Nginx捆绑源码包,这位仁兄自称Nginx最活跃的第三方模块开发人员哦 下面,当然要列一下到底集成了什么模块: LuaJIT -- 极速版Lua实现 ArrayVarNginxMo

ansible实践4- 管理配置文件

生产环境中大多时候是需要管理配置文件的,安装软件包只是在初始化环境的时候用一下.下面我们来写个管理nginx配置文件的playbook mkdir  -p /etc/ansible/nginx_config/roles/{new,old}/{files,handlers,vars,tasks} 其中new为更新时用到的,old为回滚时用到的,files下面为nginx.conf和vhosts目录,handlers为重启nginx服务的命令 关于回滚,需要在执行playbook之前先备份一下旧的配

centos7.3上通过ansible配置nginx+tomcat环境

拓扑及IP地址说明: host1-4: ansible: host1-192.168.80.71 nginx: host2-192.168.80.72 tomcat1: host3-192.168.80.73 tomcat1: host4-192.168.80.74 ansible---nginx---tomcat1&2 host1: ansible需要配置epel和extras源,推荐使用阿里源 yum install ansible 编辑ansible的host解析文件: # vi /etc