saltstack 基礎

salt簡單介紹

  一個基礎平臺管理工具  html

一個配置管理系統,可以維護預約義狀態的遠程節點  node

一個分佈式遠程執行系統,用來在遠程節點上執行命令和查詢數據python

salt的核心功能

使命令發送到遠程系統是並行 使用安全加密的協議 使用最小最快的網絡載荷 提供簡單的編程接口mysql

salt的優勢

saltstack使用python編寫的,設備是輕量級別的 saltstack通信層採用zeroMQ實現使得它很快速 saltstack開源web

salt-master啓動時會啓動兩個端口

4505:爲salt的消息發佈專用端口(發佈消息) 4506:爲客戶端與服務器端通信的端口(接收消息)sql

安裝salt

方法一shell

rpm -Uvh http://mirrors.yun-idc.com/epel/6Server/x86_64/epel-release-6-8.noarch.rpm yum install salt-master # 安裝server端 yum install salt-minion # 安裝client端數據庫

方法二編程

# 安裝Salt Master 
curl -L https://bootstrap.saltstack.com -o install_salt.sh
sudo sh install_salt.sh -M # 注意 安裝master端須要加 「-M」
# 安裝Salt Minion
curl -L https://bootstrap.saltstack.com -o install_salt.sh
sudo sh install_salt.sh
# 在安裝Salt minion時,可使用-A選項直接傳遞Salt Master IP地址。

 


salt命令使用
master端命令使用:
salt-key:管理祕鑰
salt-cp: 複製
salt-syndic: proxy使用
minion端命令使用:
salt-call: 在minion端主動執行任務使用

修改配置文件:
minion端須要配置
master端IP:
id:默認是主機名bootstrap

第一個命令:
salt-key:管理全部minion的key
查找的是緩存文件,在/etc/salt/pki下
-L,--list-all : 列出全部的minion端發送過來的key
-a ACCEPT,--accept=ACCEPT :容許一臺minion
-A,--accept-all:容許全部的minion
-r REJECT,--reject=REJECT:拒絕一臺minion
-R,--reject-all:拒絕全部的minion
-d DELETE,--delete=DELETE:刪除指定的
-D,--delete-all:刪除全部的
-y :默認運行yes

salt-call:能夠在minion上執行master對minion執行的全部動做

minion:
/etc/salt/minion :保存服務器的主機名
/etc/salt/pki : 保存master的公鑰和minion的密鑰

returner:
默認狀況下,發送給salt minion的命令執行結果將返回給salt master。
Saltstack returner的接口容許將結果發送給任意系統
內置returner模塊列表

event
event是一個本地的ZeroMQ PUB interace,event是一個開放的系統,
用於發送信息通知salt或其餘的操做系統
每一個event都有一個標籤。事件標籤容許快速指定過濾時間。除了標籤以外,
每一個事件都有一個數據結構。這個數據結構是一個dict類型,其中包含
關於事件的信息

經過監聽event,master發送數據到mysql,記錄日誌步驟:
準備過程
mysql/master
1.安裝mysql
2.建立數據庫,受權

master
3.在master上修改配置文件,添加鏈接數據庫的信息。
4.準備監聽even的py腳本,以及插入數據庫操做
5.安裝python的mysql模塊 MySQL-python


執行過程
1.運行監聽event,插入數據庫操做的腳步,後臺運行
注意:
腳本是監聽了event的信息直接寫入到數據庫中,和master自己沒有關係。


分組:
G Grains glob匹配 G@os:Ubuntu
E PCRE Minion id 匹配 E@^web 正則匹配
P Frains PCRE 匹配 P@os:(RedHat|Fedora|CentOs)
L Minions列表 L@minion1,minion2,minion3
I
S 子網/IP地址匹配 S@192.168.1.0/24 or 192.168.1.100

配置文件示例:
nodegroups: (固定語法)
yz-app: 'E@yz-mob-app*' (組名: )
gl-app: 'E@gl-mob-app*'
app: 'N@yz-app or N@gl-app'

模塊介紹:
test.ping
sys.doc 返回幫助信息 salt 'minion' sys.doc
system
system.halt
system.init
system.poweroff
system.reboot
system.shutdown
status 查看狀態
status.cpuinto
status.cpustatus
status.diskstatus
status.uptime
service 調用的是/etc/init.d/下某個服務的名字
service.restart
service.start
service.stop
service.status
saltutil
saltutil.is_running
cmd
cmd.running 執行命令
cmd.script 執行腳本
file 對文件進行管理
salt命令
-N 指定組名 salt -N app test.ping

文件系統
1.修改配置文件
2.建立目錄
3.寫sls文件

1.修改配置文件
vi /etc/salt/master
file_roots: 固定語法
base:
- /srv/salt/
dev:
- /srv/salt/dev/services
- /srv/salt/dev/states
prod:
- /srv/salt/prod/services
- /srv/salt/prod/states
2.建立目錄
mkdir /srv/salt -p
3.寫sls文件
cd /srv/salt
mkdir etc # 建立目錄專門存放配置文件
cd etc
mkdir script # 建立腳本存放的位置
cd script
vi test.sh # 編輯腳本文件,內容以下
#!/bin/bash
whilt true
do
sleep 1
echo 1 >> /tmp/log
done
salt '*' cmd.script salt://etc/script/test.sh # 執行文件系統下的sh腳本


文件系統之同步文件:
cd /srv/salt
vi top.sls
base: # 固定語法
'*': # 你要匹配的minion ID
- hosts # 執行相應的hosts.sls或hosts下的init.sls

vi hosts.sls
/tmp/hosts: #同步到哪裏去
file.managed: # 使用方法
- source: salt://etc/hosts # 服務端文件位置(源文件位置)
- user: root
- group: root
- mode : 600
# 執行sls的兩種方法
salt '*' state.sls hosts
或者在salt的更目錄建立hosts目錄,把hosts.sls移到hosts中
執行命令爲:
salt '*' state.sls hosts.hosts
或者把hosts下的hosts.sls文件更名爲init.sls,salt會默認執行hosts下的init.sls
執行命令爲:
slat '*' state.sls hosts
salt '*' state.highstate

grains 主要負責採集客戶端一些基本信息。能夠自定義
grains的使用
查看grains
salt 'salt-client' grains.ls # 查看機器全部的grains
salt 'salt-client' grains.items # 列出grains的名字和對應的值
salt 'salt-client' grains.item os # 取指定的grains的值
salt 'salt-client' grains.item shell
grains的正則匹配
salt -G 'os:CentOs' test.ping
salt -G 'cpuarch:x86_64' grains.item num_cpus

自定義grains
在minion上進行配置grains
grains: # 固定語法
roles:
- webserver
- memcache
deployment: detacenter4

states
salt狀態系統的核心是sls。
sls表示系統將會是什麼樣的一種狀態,並且是以一種很簡單的格式
來包含這些數據。這常常也被叫作配置管理
sls文件實際上只是一些:dict,list,str ,int

YAML 語法
1.縮進:YAML使用一個固定的縮進風格表示數據層結構關係。salt須要每一個縮進級別由兩個空格組成。不要使用tabs
2.Python的字典是簡單的鍵值對。字典的key在YAML中的表現形式是一個以冒號結尾的字符串。values的表現形式冒號下面的每一行,用一個空格隔開
3.想要表示列表項,使用一個短橫槓加一個空格。多個項使用一樣的縮進級別做爲同一列表的一部分。
更多關於YAML的使用:http://docs.saltstack.cn/topics/yaml/index.html

更多的模塊說明:http://docs.saltstack.cn/genindex.html#S

pillar 能夠定義那些數據 1.敏感信息:ssh key,加密證書。 2.變量 3.其餘任何數據 4.targetting pillar示例: schedult: highstate: function: state.highstate minutes: 1

相關文章
相關標籤/搜索