Saltstack部署

1、簡介

SaltStack是一個服務器基礎架構集中化管理平臺,具備配置管理、遠程執行、監控等功能,一般可以理解爲簡化版的puppet和加強版的func。SaltStack基於Python語言實現,結合輕量級消息隊列(ZeroMQ)與Python第三方模塊(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)構建。通過部署SaltStack環境,我們可以在成千上萬臺服務器上做到批量執行命令,根據不同業務特性進行配置集中化管理、分發文件、採集服務器數據、操作系統基礎及軟件包管理等,SaltStack是運維人員提高工作效率、規範業務配置與操作的利器。

2、特性

(1)、部署簡單、方便;
(2)、支持大部分UNIX/Linux及Windows環境;
(3)、主從集中化管理;
(4)、配置簡單、功能強大、擴展性強;
(5)、主控端(master)和被控端(minion)基於證書認證,安全可靠;
(6)、支持API及自定義模塊,可通過Python輕鬆擴展。

 

(注:辦公網中,有一個暫時的測試環境,

master:172.22.2.193

minion:172.22.2.193,172.22.2.194,172.22.2.195,172.22.2.198

image2016-4-19%209%3A27%3A15.png?version

)

3、安裝

注:以下安裝方式針對centos7

(參考網址:http://repo.saltstack.com/[email protected]#rhel

1)master安裝

sudo yum install https://repo.saltstack.com/yum/redhat/salt-repo-2015.8-2.el7.noarch.rpm

sudo yum clean expire-cache

 sudo yum install salt-master

 sudo yum install salt-minion

 #sudo yum install salt-ssh

 #sudo yum install salt-syndic

 #sudo yum install salt-cloud

 #sudo yum install salt-api

(#根據需要安裝)

2)minion安裝

sudo yum install https://repo.saltstack.com/yum/redhat/salt-repo-2015.8-2.el7.noarch.rpm

sudo yum clean expire-cache

sudo yum install salt-minion

 

4、簡單配置

salt的配置文件一般在/etc/salt

1)master配置

vi /etc/salt/master

 

更改日誌等級:將log_level和log_level_logfile的warning 改爲debug

image2016-4-18%2015%3A11%3A22.png?versio

 

更改interface:更改爲本機IP地址

image2016-4-18%2015%3A14%3A4.png?version

2)minion配置

vi  /etc/salt/minion

 

配置master地址:設ip或域名(最好域名)

image2016-4-18%2015%3A15%3A43.png?versio

 

配置minion名稱:自己命名,一般設ip或域名(以更好區分)

image2016-4-18%2015%3A17%3A37.png?versio

 

3)master與minion連接

配置完後,所有minion執行salt-minion重啓,在master上執行‘salt-key L' ,可以看到主機的key管理,執行’salt-key -A' 接受所有的key

image2016-4-18%2015%3A24%3A23.png?versio

至此,salt的基本環境已經搭建好了。

 

4)測試連接

SaltStack master啓動後默認監聽4505和4506兩個端口。4505(publish_port)爲saltstack的消息發佈系統,4506(ret_port)爲saltstack客戶端與服務端通信的端口。如果使用lsof 查看4505端口,會發現所有的minion在4505端口持續保持在ESTABLISHED狀態

image2016-4-18%2015%3A41%3A12.png?versio

或者使用以下命令測試連接,所有minion顯示true

image2016-4-18%2015%3A41%3A37.png?versio

5、salt常用模塊簡單用法

模塊詳細用法見官網說明

1)工作目錄設置

image2016-4-18%2016%3A6%3A46.png?version

2)cp模塊(實現遠程文件、目錄的複製,以及下載URL文件等操作)
將主服務器file_roots指定位置下的目錄複製到被控主機
 salt '*' cp.get_dir salt://hellotest  /data

將主服務器file_roots指定位置下的文件複製到被控主機
salt '*' cp.get_file salt://hellotest/rocketzhang /root/rocketzhang

下載指定URL內容到被控主機指定位置
salt '*' cp.get_url http://xxx.xyz.com/download/0/files.tgz /root/files.tgz

 

3)cmd模塊(實現遠程的命令行調用執行)
salt '*' cmd.run 'netstat -ntlp'

image2016-4-18%2016%3A17%3A16.png?versio

 

4)sls用法

祥見官網,或者參考後面應用場景舉例

 

 

 

6、salt其他設置

1)minion分組設置

master配置文件中設置,比如:

image2016-4-19%208%3A59%3A21.png?version

分組之後,可以針對分組進行批量配置,比如:

image2016-4-19%209%3A1%3A55.png?version=

 

2)return設置

return是指salt系統對執行minion後返回的數據進行存儲或返回給其他程序,在本環境中,採用mysql進行存儲,在master中安裝mysql數據庫。

可以參考官網教程:https://docs.saltstack.com/en/latest/ref/returners/all/salt.returners.mysql.html

舉例:

image2016-4-19%209%3A8%3A5.png?version=1

 

在mysql數據庫中可以看到執行結果

image2016-4-19%209%3A9%3A50.png?version=

image2016-4-19%209%3A10%3A27.png?version

設置步驟:

a)master設置

master安裝mysql數據庫,並創建salt數據庫。後續參考官網設置步驟如下:

直接複製以下命令行執行, 創建表。

DROP TABLE IF EXISTS `jids`;
CREATE TABLE `jids` (
  `jidvarchar(255NOT NULL,
  `load` mediumtext NOT NULL,
  UNIQUE KEY `jid` (`jid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE INDEX jid ON jids(jid) USING BTREE;


DROP TABLE IF EXISTS `salt_returns`;
CREATE TABLE `salt_returns` (
  `funvarchar(50NOT NULL,
  `jidvarchar(255NOT NULL,
  `return` mediumtext NOT NULL,
  `idvarchar(255NOT NULL,
  `successvarchar(10NOT NULL,
  `full_ret` mediumtext NOT NULL,
  `alter_timeTIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  KEY `id` (`id`),
  KEY `jid` (`jid`),
  KEY `fun` (`fun`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


DROP TABLE IF EXISTS `salt_events`;
CREATE TABLE `salt_events` (
`idBIGINT NOT NULL AUTO_INCREMENT,
`tagvarchar(255NOT NULL,
`data` mediumtext NOT NULL,
`alter_timeTIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`master_idvarchar(255NOT NULL,
PRIMARY KEY (`id`),
KEY `tag` (`tag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;



 

b)minion設置

minion配置文件中添加一下內容

image2016-4-19%209%3A14%3A25.png?version

 

c)minion安裝msyql-python模塊

image2016-4-19%209%3A16%3A14.png?version

 

d)測試正確與否

image2016-4-19%209%3A16%3A36.png?version

無報錯即可。

 

 

7、salt應用場景簡單舉例

以下例子都是很簡單的salt應用,複雜場景待更新或自行學習。

 

1)DNS設置

在/srv/salt/base/中,創建init/files/用於放置配置文件resolv.conf

image2016-4-19%209%3A36%3A55.png?version

 

在配置文件中設置好dns地址

image2016-4-19%209%3A38%3A18.png?version

 

在init中創建sls文件

image2016-4-19%209%3A39%3A55.png?version

dns.sls文件內容如下:

image2016-4-19%209%3A40%3A37.png?version

 

給所有minon執行dns同步,執行結果:

image2016-4-19%209%3A44%3A57.png?version

 

image2016-4-19%209%3A46%3A43.png?version

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章