1. 程式人生 > >4、python自動化運維——集中化管理平臺Saltstack

4、python自動化運維——集中化管理平臺Saltstack

python Saltstack linux 自動化運維;

集中化管理平臺——Saltstack

Saltstck作為服務器基礎架構集中化管理平臺,具備配置管理,遠程執行,監控等功能。可以簡單地理解為簡化版的puppet,加強版的func。廢話不多說,直接上手。

Saltstack安裝以及配置

安裝所需要的組件

主控端:salt-master
被控端:salt-minion

安裝過程

1、安裝所需要的epel作為部署saltstack的yum源:
yum install -y epel

2、安裝salt-master/salt-minion
yum install -y salt-master
yum install -y salt-minion

3、設置服務開機啟動

systemctl enable salt-master / systemctl enable salt-minion

4、主控端添加防火墻
iptables -A INPUT -p tcp --dport 4405 -j ACCEPT
iptables -A INPUT -p tcp --dport 4406 -j ACCEPT

5、修改服務端配置和客戶端配置
修改主控端配置(/etc/salt/master)

interface: 192.168.118.132 #綁定Master通信IP
auto_accept: True #自動認證
file_roots:
 base:
- /srv/salt
#指定SaltStack文件目錄

重啟主控端端SaltStack: service restart salt-master

修改被控端配置(/etc/salt/minion)

master:192.168.118.132 #指定Master主機IP地址
id:mbb_server #被控主機端識別ID

重啟被控端SaltStack:service restart salt-minion

檢驗安裝結果:salt ‘*‘ test.ping

API調用示例:

import salt.client
client = salt.client.LocalClient()

常用模塊及API

Archive模塊(支持gunzip,gzip,rar,tar,unrar,unzip)

1、功能:實現系統層面的壓縮包調用,支持gunzip,gzip,rar,tar,unrar

解壓操作:
salt ‘*’ archive.gunzip /tmp/mbb.txt.gz
壓縮操作
salt ‘*’ archive.gzip /tmp/mbb.txt

2、API調用

client.cmd(‘*’,’archive.gzip’,[‘/tmp/mbb.txt’])

cmd模塊

1、功能:實現遠程的命令行調用執行(默認具備root操作權限,使用時需要評估風險)

模塊示例:
salt ‘*’ cmd.run “free -m”

3、API調用

client.cmd(‘*’,’cmd.run’,[‘free -m’])

cp模塊

1、功能:實現遠程文件,目錄的復制,以及下載URL文件等操作

將指定被控端的文件復制到主控端的本地目錄:
salt ‘*’ cp.cache_local_file /etc/hosts

cron模塊

1、功能:實現被控主機的crontab操作

查看指定被控主機
salt ‘mbb_208’ cron.raw_cron root
未指定的被控端、root用戶添加echo 1 > mbb.txt任務作業
salt ‘mbb_208’ cron.set_job root ‘*’ ‘*’ ‘*’ ‘*’ 1 “echo 1 > mbb.txt”
刪除指定的被控端,root用戶crontab的echo 1 > mbb.txt 任務作業
salt ‘mbb_208‘ cron.rm_job root "echo 1 > lsk.txt"

2、API調用

client.cnd(‘mbb_208’,’cron.rm_job’,[‘root’*’,’*’,’*’,’*’,1,”echo 1 > mbb.txt”])

iptables模塊

1、實現被控主機的iptables操作

添加iptables規則
salt ‘mbb_208‘ iptables.insert filter INPUT position=1 rule="-p tcp --dport 4405 -j ACCEPT"
salt ‘mbb_208‘ iptables.append filter INPUT rule="-p tcp --dport 4406 -j ACCEPT"

刪除iptables規則
salt ‘mbb_208‘ iptables.delete filter INPUT  position=1

2、API調用

client.cmd(‘mbb_208‘,‘iptables.insert‘,[‘filter‘,‘INPUT‘,‘position=1‘,‘rule=\‘-p tcp --dport 21 -j ACCEPT\‘‘])

network模塊

1、功能:返回被控端的網絡信息

獲取dig,ping,traceroute目錄域名信息
salt ‘mbb_208‘ network.dig www.baidu.com
salt ‘mbb_208‘ network.ping www.baidu.com
salt ‘mbb_208‘ network.traceroute www.baidu.com
獲取被控端制定網卡綁定的mac地址
salt ‘mbb_208‘ network.hwaddr eth0
獲取被控端網卡配置信息
salt  mbb_208‘ network.interfaces
獲取被控端的ip地址配置信息
salt ‘mbb_208‘ network.ip_addrs
獲取被控的子網信息
salt ‘mbb_208‘ network.subnets

3、API調用

client.cmd(‘mbb_208‘,‘network.interfaces‘)

pkg模塊

1、功能:被控主機的程序管理,如:yum,apt-get

安裝php
salt ‘mbb_208’ pkg.install php
卸載php
salt ‘mbb_208’ pkg.remove php
升級php
salt ‘mbb_208’ pkg.upgrade php

2、API調用

client.cmd(‘mbb_208’,’pkg.install’,[‘php’])

Service模塊

1、功能:被控主機的程序包服務管理

salt ‘mbb_208‘ service.start httpd
salt ‘mbb_208‘ service.stop httpd
salt ‘mbb_208‘ service.reload httpd
salt ‘mbb_208‘ service.restart httpd
salt ‘mbb_208‘ service.status httpd
salt ‘mbb_208‘ service.enable httpd
salt ‘mbb_208‘ service.disable httpd

2、API調用

client.cmd(‘mbb_208’,’service.start’,[‘nginx’])

grains組件

grains是Saltstack最重要的組件之一,grains的作用是收集被控端的基本信息,這些信息一般都是靜態類的數據,包括CPU,內核,操作系統,虛擬化等

獲取被控主機的所有grains信息
salt ‘*’ grains.items

被控主機端定制特定的granis數據

登錄被控主機端,在/etc/salt/minion.d/ 目錄下,添加”*.conf”配置文件
grains:
  roles:
    - webserver
    - memcache
  deployment: datacenter4
  cabinet: 13
在主控端:
salt ‘mbb_208‘ grains.item roles deployment cabinet

4、python自動化運維——集中化管理平臺Saltstack