zz775520666 发表于 2018-7-29 10:09:31

ansible 不同环境指定不同变量 (变量写入文件)

cat /etc/ansible/foo.py  

  
#!/usr/bin/env python
  
# -*- coding: utf-8 -*-
  
import ConfigParser
  
import string, os, sys,json
  
import yaml
  

  
'''
  
vim books.txt
  
api 172.1.1.126 dev 8005 8080 apibj5
  
pf 172.1.1.127 prod 8006 8081 pf bj02
  
'''
  
'''
  
生成的foo.yml
  
ip:
  
api: ['172.1.1.126:8080']
  
'''
  

  

  
def ynameconf():
  
    sfile = 'books.txt'
  
    stagedict = {}
  
    with open(sfile, 'rb') as f:
  
      for i in f.readlines():
  
            inventory = {}
  
            ip = i.strip().split()
  
            yname = i.strip().split()# 域名
  
            stage = i.strip().split()
  
            if stage not in stagedict:
  
                if not yname in inventory:
  
                  inventory = []
  
                port = i.strip().split()
  
                ipport = ip + ":" + port
  
                inventory.append(ipport)
  
                stagedict = inventory
  
                print stagedict
  
            elif stage in stagedict:
  
                dict1 = stagedict
  
                if not yname in inventory:
  
                  inventory = []
  
                port = i.strip().split()
  
                ipport = ip + ":" + port
  
                inventory.append(ipport)
  
                dict2 = inventory
  
                newdict = dict(dict1.items()+dict2.items())
  
                stagedict = newdict
  
    f.close()
  
    return stagedict
  

  
def ynameParser(stage,file):
  
    # cf = ConfigParser.ConfigParser()
  
    ynameyname=ynameconf()
  

  
    # print ynameyname
  
    # devstage = ynameyname
  
    # jsObj = json.dumps(devstage)
  
    # fileObject = open(file, 'w')
  
    # fileObject.write(jsObj)
  
    # fileObject.close()
  

  
    print type(jsObj)
  
    fileObject = open(file, 'w')
  
    dataMap = {"ip": jsObj}
  
    yaml.dump(dataMap, fileObject)
  

  

  
    '''
  
    for k,v in ynameyname.iteritems():
  
      general=k
  
      cf.add_section(general)
  
      cf.set(general, "pro_dir", k)
  
      for i in range(len(v)):
  
            ips="ip"+str(i+1)
  
            cf.set(general,ips, v)
  
      # cf.set(k, ','.join(v))
  
      cf.write(open("vhost.fact", "w"))
  
    '''
  

  
if __name__ == '__main__':
  
    list2=["foo.yml","foo2.yml"]
  
    list1=["dev","prod"]
  
    for (stage, file) in zip(list1, list2):
  
      ynameParser(stage, file)
页: [1]
查看完整版本: ansible 不同环境指定不同变量 (变量写入文件)