saltstack二次開発で自分のアプリを構築する
5159 ワード
まずはsaltstackの紹介はここで省略します.
公式サイトhttp://www.saltstack.com/
サイトhttps://github.com/saltstack/salt
中国語サイトhttp://saltstack.cn/ (@緑小肥が作成した、公式に認められた中国語サイト)
国内QQ交流群 294953305(満席) 220852394(加入可能)
saltのpython APIhttp://docs.saltstack.com/ref/clients/index.html?highlight=api
saltさんは何ができますか?
つまり、salt.statesとsalt.modulesの2つの機能です.
salt-cloud、salt-sshなどの多くの機能は、非常に強い機能と今一番必要な機能を持っていますので、saltstackは現在と未来において、大きな発展空間があります.
この例では、django+saltを用いてapiを提供し、他のオペレーティングシステムに対して統一的にスケジューリングするのに便利である.
実は公式にはappiがありますが、ここでなぜ自分で書くのかというと、公式のアプリと自分のアイデアが違っていますので、自分で輪を作るしかないです.
django view.pyの例を示します.djangoの他の構成については、ここではデモンストレーションしていません.ですから、ここでは一部の参考しかできません.構想だけです.
views.pyの内容は以下の通りです.
シミュレーションテストを開始しました.
他のパラメータを変えます
実行コマンドの中から結果を返します.
以上はれんがを投げて玉の1段の実現コードを引くだけで、みんなに対してある程度助けることを望んで、更に詳しい内容は書きません.
皆さんは公式文書を多く研究して、より多くの機能を実現してください.
はい、この文章はもう終わりました.
公式サイトhttp://www.saltstack.com/
サイトhttps://github.com/saltstack/salt
中国語サイトhttp://saltstack.cn/ (@緑小肥が作成した、公式に認められた中国語サイト)
国内QQ交流群 294953305(満席) 220852394(加入可能)
saltのpython APIhttp://docs.saltstack.com/ref/clients/index.html?highlight=api
saltさんは何ができますか?
つまり、salt.statesとsalt.modulesの2つの機能です.
salt-cloud、salt-sshなどの多くの機能は、非常に強い機能と今一番必要な機能を持っていますので、saltstackは現在と未来において、大きな発展空間があります.
この例では、django+saltを用いてapiを提供し、他のオペレーティングシステムに対して統一的にスケジューリングするのに便利である.
実は公式にはappiがありますが、ここでなぜ自分で書くのかというと、公式のアプリと自分のアイデアが違っていますので、自分で輪を作るしかないです.
django view.pyの例を示します.djangoの他の構成については、ここではデモンストレーションしていません.ですから、ここでは一部の参考しかできません.構想だけです.
views.pyの内容は以下の通りです.
# Create your views here.
# coding=utf-8
# author: itnihao#qq.com
# http://www.itnihao.com
# date: 2013-12-05
from django.http import HttpResponse
from django.contrib import auth
from django.views.decorators.csrf import csrf_exempt
import salt
import json
import yaml
@csrf_exempt
def control(request):
if request.method == "POST":
for k in ['id','status']:
if k not in request.POST:
data='give arg "{0}" a value'.format(k)
return HttpResponse(data,mimetype='application/json')
id=request.POST['id']
#servicename=request.POST['servicename']
status=request.POST['status']
id=str(id)
#servicename=str(servicename)
status=str(status)
result={}
'''
status, id,servicename
available , id,servicename
get_all , id
get_enabled , id
enable , id,servicename
enabled , id,servicename
get_disabled , id
disable , id,servicename
disabled , id,servicename
start , id,servicename
stop , id,servicename
restart , id,servicename
reload , id,servicename
status , id,servicename
'''
if status not in ['get_all','get_disabled','get_enabled','available','disable','disabled','enable','enabled','start','stop','restart','reload','status']:
data='status must in [available|get_all|get_disabled|disable|disabled|get_enabled|enable|enabled|start|stop|restart|reload|status]'
return HttpResponse(data,mimetype='application/json')
cmd='service.{0}'.format(status)
id=id.split(',')
if status in ['get_all','get_disabled','get_enabled']:
ret_dict=salt.client.LocalClient().cmd(id,cmd,expr_form='list',timeout=30)
if status in ['available','disable','disabled','enable','enabled','start','stop','restart','reload','status']:
for k in ['servicename']:
if k not in request.POST:
data='give arg "{0}" a value'.format(k)
return HttpResponse(data,mimetype='application/json')
servicename=request.POST['servicename']
ret=salt.client.LocalClient().cmd(id,cmd,[servicename],expr_form='list',timeout=300)
ret_dict={}
for k in ret.keys():
is_true=ret[k]
msg='service name: {0},action: {1},result: '.format(servicename,status)
if is_true:
s1={'id':k,'status':'1','msg':msg+'ok'}
ret_dict.update(s1)
else:
s2={'id':k,'status':'0','msg':msg+'not ok'}
ret_dict.update(s2)
result.update(ret_dict)
data=json.dumps(result,sort_keys=True,indent=4,separators=(',',':'))
return HttpResponse(data,mimetype='application/json')
else:
return HttpResponse('method is not allowed',mimetype='application/json')
ブラウザで作成したアプリケーションを実行します.ここのアドレスは以下の通りです.図のように、ファイア狐ブラウザでデータを提出する場合、もちろん正式な環境では、ユーザーに一つのhtmlページのインタラクティブ操作が必要です.シミュレーションテストを開始しました.
他のパラメータを変えます
実行コマンドの中から結果を返します.
以上はれんがを投げて玉の1段の実現コードを引くだけで、みんなに対してある程度助けることを望んで、更に詳しい内容は書きません.
皆さんは公式文書を多く研究して、より多くの機能を実現してください.
はい、この文章はもう終わりました.