1. 程式人生 > >Django + Ansible 主機管理

Django + Ansible 主機管理

本文分享內容如下:

內容目錄

Django 基礎

  • MVC
  • ORM
  • COMMAND
  • Authentication
    Ansible 基礎
  • 配置
  • ad-hoc 命令集
  • python api
    程式碼解讀

演示

Django + Ansible 主機管理

建立虛擬化環境並進入
python3/python -m venv venv
(linux)source venv\bin\active
(win) venv\Scripts\active

安裝第三方庫
pip install -r requirements.txt

初始化
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser

配置免密登陸&劇本檔案
ssh-keygen -t rsa -b 4096
ssh-copy-id -i ~/.ssh/id_rsa [email protected]
ssh [email protected]
echo xxx.xxx.xxx.xxx >> etc/hosts

執行
python manage.py runserver 0.0.0.0:8888
python manager.py fact

瀏覽器開啟檔案
http://xxx.xxx.xxx.xxx:8888

Django

一個可以使 Web 開發工作愉快並且高效的 Web 開發框架,能夠以最小的代價構建和維護高質量的 Web 應用

框架
軟體開發工程師從日常的重複勞動中總結出快速的、模組化的、安全的軟體開發模式

開發語言
Python

設計思想
MVC
ORM

MVC

M 模型 model
V 檢視 view
C 控制器 controller
Django + Ansible 主機管理

在 Django 中的 MTV

M 模型 Model
進行業務邏輯判斷和資料存取

T 模板 Template
將資料展示給使用者

V 檢視 View
將使用者請求資料傳遞給 Model
將 Model 返回的資料傳遞給 Template

URLS
用於配置 url 和 view 處理對應關係
注:url 都使用/結尾配置

ORM

Object Relation Mapping(關係物件對映)
用來把物件模型表示的物件對映到基於 SQL 的關係模型資料庫結構中去
在具體的操作實體物件的時候,就不需要再去和複雜的 SQL 語句打交道,只需簡單的操作實體物件的屬性和方法

Command

開發者可為應用註冊後臺命令到 manage.py, 通過 python manage.py command 在命令列中執行程式

存放目錄:
app/management/commands

命名格式:
繼承自 BaseCommand 的 Command 類,並實現 handle 方法
Django + Ansible 主機管理

Authentication

  • Django 帶有使用者身份驗證系統,它處理使用者帳戶,組,許可權和基於 cookie 的使用者會話。
  • 使用者認證
    建立使用者: python manage.py createsuperuser
    認證
    from django.contrib.auth import authenticate, login, logout
    user = authenticate(request, username=name, password=pwd)
    login(request, user)
    logout(request)

    from django.contrib.auth.decorators import login_required
    LOGIN_URL

Ansible

ansible 是一套自動化運維工具,基於 Python 開發,實現了批量系統配置、批量程式部署、批量執行命令等功能。

學習流程

  • 安裝
  • 管理協議
  • 配置
  • ad-hoc
  • playbook
  • python api

安裝

控制機器

pip install ansible==2.5.5
yum install sshpass

受控機器

yum install libselinux-python
yum install python2-simplejson(version < python2.4)

測試

echo localhost ansible_connection=local > hosts
ansible all -m ping -i hosts

管理協議

ansible 通過 ssh 協議對受控機器管理, 可使用口令和金鑰對兩種方式進行許可權驗證, 預設使用金鑰對方式

在控制機器生成祕鑰對
ssh-keygen -t rsa -b 4096 -C "kk"

新增到公鑰到受控機器

遠端拷貝新增
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

本地新增
cat ~/.ssh/id_rsa.pub &gt;&gt; ~/.ssh/authorized_keys

測試

ssh [email protected]
echo xxx.xxx.xxx.xxx >> hosts
ansible all -m ping -i hosts

python api
劇本&變數
playbook
命令列選項
https://docs.ansible.com/ansible/latest/dev_guide/developing_api.html#python-api-example

整理資料
https://www.jianshu.com/p/1657f05e1f56
https://raw.githubusercontent.com/imsilence/ansible-doc/master/docs/ansible.png

程式碼講解會在週四分享直播上詳解為大家解說(附加原始碼連結:https://pan.baidu.com/s/1JAkJbCFDOfoNCEZ2voHPQA
提取碼:4soc )

2018-11-29(週四)21:00-22:00
將由我們的 KK 老師為我們詳細解說《 Django + Ansible 主機管理》

講師 KK:
多語言混搭開發工程師,多年 PHP、Python 專案開發經驗,曾就職 360、綠盟科技,7年工作經驗。擅長於 Web 安全開發、效能優化、分散式應用開發&設計等多方面,51Reboot 金牌講師。

具體參與方式:掃碼新增小助手wechat:17812796384 備註:公開課 拉入直播分享群
51Reboot 第 20 期 Python 零基礎入門班 正在火熱招生中