结合django动态生成salt的pillar数据-创新互联
一、首先要让salt-master找到我们自定义的脚本(/etc/salt/master):
成都创新互联公司网站建设由有经验的网站设计师、开发人员和项目经理组成的专业建站团队,负责网站视觉设计、用户体验优化、交互设计和前端开发等方面的工作,以确保网站外观精美、成都网站制作、成都做网站易于使用并且具有良好的响应性。使用ext_pillar 扩展自定义脚本,gameInfo就是脚本的名字,脚本的目录要放在/usr/lib/python2.6/site-packages/salt/pillar这个目录下面
新版可以支持自定义目录,使用参数extension_modules: /srv/salt/modules
二、自定义脚本需要返回字典数据,gameInfo脚本如下:
#!/usr/bin/python #coding:utf-8 import urllib2 import json import logging # Set up logging log = logging.getLogger(__name__) def __virtual__(): return True def ext_pillar(minion_id, pillar, *args, **kwargs): try: ip = minion_id.split('-')[-1] url = 'http://xxx.xxx.com/public/api/SaltPillarInfo/{ip}/'.format(ip=ip) request = urllib2.urlopen(url=url, timeout=30) response = request.read() data = json.loads(response) logging.info("From URL:{url} get data:{data}".format(url=url, data=data)) except Exception as e: logging.error(str(e)) data = {} return {'gameInfo': data}
因为我的minionid是'game-192.168.1.1' 这种用途-ip的形式命名,minion_id.split('-')[-1]获取出minion的IP,然后请求django提供的接口,将django返回的数据转换成python数据格式直接返回出来
三、django代码就很简单了
url配置
from django.conf.urls import patterns, include, url from views import * urlpatterns = patterns('', url(r'^api/SaltPillarInfo/(?P.*)/$', SaltPillarInfoApiView.as_view()), 以下省略。。。 )
views:
class SaltPillarInfoApiView(View): def get(self, request, ip): try: hostobj = GameHost.objects.using('res').get(Q(ip1=ip)|Q(ip2=ip), state=1) gamename = GameInfo.objects.using('res').get(id=hostobj.gameid).code plat = GamePlatform.objects.using('res').get(id=hostobj.platid).code serverlist = [ gsobj.serverid for gsobj in GameServer.objects.using('res').filter(hostid=hostobj.id, mergetarget__isnull=True) ] ret = { 'gamename': gamename, 'plat': plat, 'serverlist': serverlist } except Exception as e: print str(e) ret = {} return HttpResponse(json.dumps(ret))
直接请求就是这个效果啦:
四、测试:
妥妥地给机器打上游戏,平台,区服的标志了。。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
标题名称:结合django动态生成salt的pillar数据-创新互联
文章路径:http://scjbc.cn/article/ioisg.html