首页 > 代码库 > ansible 渲染nginx配置文件(菜鸟版)

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=http://www.mamicode.com/etc/ansible/vhost.fact dest=/etc/ansible/facts.d/vhost.fact >



本文出自 “要有梦想,万一实现了呢” 博客,请务必保留此出处http://szgb17.blog.51cto.com/340201/1947640

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