站在運維的角度使用django寫一些簡單操做的接口

事件出發點:html

       前端的開發每次更新了JS或者CSS  都會要清理nginx的緩存,對於這操做站在咱們運維的角度就是執行腳本的問題。可是如何讓開發本身清理緩存,但又不涉及到線上服務器的操做呢?前端

那確定就是寫個WEB接口,讓他們本身去操做,對應的相似查看日誌之類的。python


那咱們就拿清理nginx緩存這個問題來講吧。nginx


首先咱們得有一個WEB,無論是django仍是flask 都是很好的框架,並且python對運維的契合度也比較高,我選擇的是djangoshell


步驟django

  1. 首先,咱們在nginx的服務器上有個清理緩存的腳本。flask

  2. django 的一個WEB框架緩存

  3. ansible (不用也行)可是仍是用的好,方便。服務器

  4. 預留框架


首先貼一下django的配置,他和ansible在一臺機器上,能夠經過SSH訪問nginx服務器

views.py

from django.shortcuts import render
from django.contrib import auth
# Create your views here.
from django.shortcuts import render_to_response
from django.contrib.auth import authenticate, login
from django.template.loader import get_template
from django.template import Context,RequestContext
#from django.template import loader, RequestContext
from django.http import HttpResponse,HttpResponseRedirect
from django.contrib.auth.decorators import login_required
from django.core.urlresolvers import reverse
from ops.models import server,passets
#def login(request):
#    t = get_template('login.html')
#    loginhtml = t.render(Context({'username': username,'password':password}))
#    return HttpResponse(loginhtml)

import commands
def nginx(request,string):     #這裏的string 就是URL那邊傳過來的參數
    if string == 't_nginx':
        try:
            m=commands.getoutput(''' ansible %s -m shell -a "sh /opt/script/clean_cache.sh"  ''' %string)
            return render_to_response('interface/nginx_interface.html',{'result':m})
        except Exception as e:
            return render_to_response('interface/nginx_interface.html',{'result':e})


url.py

from ops import views
url(r'^interface/(?P<string>\S+)/$',views.nginx,name='nginx'),


html 模板

cat /var/www/jastme/interface/nginx_interface.html 
{{ result }}


對django不是很熟悉的能夠去看看我之前寫的django的文章

 

ansible的配置

apt-get install ansible

cat /etc/ansible/hosts
[t_nginx]
172.31.9.125 ansible_ssh_user=nginx ansible_ssh_pass=123456   固然你也能夠用密鑰

效果圖

這個接口已經正常工做,是否是很簡單啊

相關文章
相關標籤/搜索