1、SaltStack概述
Salt,,一種全新的基礎設施管理方式,部署輕鬆,在幾分鐘內可運行起來,擴展性好,很容易管理上萬臺服務器,速度夠快,服務器之間秒級通信。html
salt底層採用動態的鏈接總線, 使其能夠用於編配, 遠程執行, 配置管理等等.node
多種配置管理工具對比:
Puppet(rubby開發,如今不多使用)
ansible(python開發,輕量級,沒有agent,大規模環境下使用ssh會很慢,串行傳輸)
Saltstack(python開發,遠程執行、配置管理、事件驅動基礎設施、使用saltcloud能夠管理私有云和公有云)python
官方文檔:https://docs.saltstack.com/en/getstarted/;
官方提供官方yum源:repo.slatstack.com–>可使用cobbler自定義yum倉庫進行同步
官方安裝源:http://repo.saltstack.com/2016.11.html#rhel;
Saltstack組件:
SaltMaster
SaltMinion
Execution Moduleslinux
環境說明:vim
主機名 IP地址 說明 系統 linux-node1.example.com 192.168.56.11 模式:master Centos 7.4 x86_64 linux-node2.example.com 192.168.56.12 模式:minion Centos 7.4 x86_64
2、SaltStack安裝
1.安裝指定的yum源
[root@linux-node1 ~]# yum install https://repo.saltstack.com/yum/redhat/salt-repo-2016.11-2.el7.noarch.rpm [root@linux-node2 ~]# yum install https://repo.saltstack.com/yum/redhat/salt-repo-2016.11-2.el7.noarch.rpm
2.安裝salt-master和salt-minion
[root@linux-node1 ~]# yum install -y salt-master [root@linux-node1 ~]# yum install -y salt-minion [root@linux-node2 ~]# yum install -y salt-minion
3.修改minion配置並啓動
[root@linux-node1 ~]# systemctl start salt-master #啓動salt-master [root@linux-node1 ~]# vim /etc/salt/minion #配置salt-minion master: 192.168.56.11 #能夠是主機名須要解析(指定服務端的IP地址),冒號有空格 id: 惟一標識符,能夠不配,不配默認就是主機名 [root@linux-node1 ~]# systemctl start salt-minion #啓動salt-minion [root@linux-node2 salt]# vim minion master: 192.168.56.11 #能夠是主機名須要解析(指定服務端的IP地址),冒號有空格 id: 惟一標識符,能夠不配,不配默認就是主機名 [root@linux-node2 salt]# systemctl start salt-minion minion配置中有一個id配置,默認是hostname,若是id配置和hostname不一致會致使沒法進行通訊,那麼當hostname作了修改,或者錯誤的時候該怎麼配置呢? ①關閉salt-minion ②salt-key -d id 在master上刪除minion的id ③minion上刪除pki目錄 ④minion上刪除minion_id文件 ⑤修改完成,啓動minion #此處必須先停掉minion修改,並刪除相應的文件,不然會默認地去查找原先的配置,已踩坑 #如下是剛裝完查看minion_id變成了www.test123.com。進行修改爲linux-node2.example.com [root@linux-node2 salt]# cat minion_id www.test123.com [root@linux-node2 salt]# systemctl stop salt-minion [root@linux-node2 salt]# rm -rf pki [root@linux-node2 salt]# rm -rf minion_id [root@linux-node2 salt]# systemctl start salt-minion [root@linux-node2 salt]# cat minion_id linux-node2.example.com
4.配置說明
[root@linux-node2 salt]# ll 總用量 124 -rw-r----- 1 root root 2624 9月 15 23:19 cloud drwxr-xr-x 2 root root 6 9月 16 00:41 cloud.conf.d drwxr-xr-x 2 root root 6 9月 16 00:41 cloud.deploy.d drwxr-xr-x 2 root root 6 9月 16 00:41 cloud.maps.d drwxr-xr-x 2 root root 6 9月 16 00:41 cloud.profiles.d drwxr-xr-x 2 root root 6 9月 16 00:41 cloud.providers.d -rw-r----- 1 root root 46034 9月 15 23:19 master drwxr-xr-x 2 root root 6 9月 16 00:41 master.d -rw-r----- 1 root root 35101 1月 16 10:29 minion drwxr-xr-x 2 root root 27 1月 16 11:47 minion.d -rw-r--r-- 1 root root 23 1月 16 11:45 minion_id drwxr-xr-x 3 root root 19 1月 16 11:45 pki -rw-r----- 1 root root 26984 9月 15 23:19 proxy drwxr-xr-x 2 root root 6 9月 16 00:41 proxy.d -rw-r----- 1 root root 344 9月 15 23:19 roster 說明: (1)salt-minion首次啓動會在/etc/salt/pki/minion目錄下生成公鑰和祕鑰 [root@linux-node2 salt]# ll /etc/salt/pki/minion/ 總用量 12 -rw-r--r-- 1 root root 450 1月 16 11:47 minion_master.pub -r-------- 1 root root 1674 1月 16 11:45 minion.pem -rw-r--r-- 1 root root 450 1月 16 11:45 minion.pub (2)而且在salt-master的/etc/salt/pki/master/minion_pre中存放了salt-minion的公鑰。 [root@linux-node1 ~]# ll /etc/salt/pki/master/minions_pre/ linux-node1.example.com linux-node2.example.com
5.配置salt-master和slat-minion通訊
[root@linux-node1 salt]# salt-key Accepted Keys: 贊成的 Denied Keys: 拒絕的 Unaccepted Keys: 等待贊成的 linux-node1.example.com linux-node2.example.com Rejected Keys: 贊成認證的方法: 分爲三種: [root@linux-node1 salt]# salt-key -A [root@linux-node1 salt]# salt-key -a 指定id [root@linux-node1 salt]# salt-key -a 支持通配符 [root@linux-node1 master]# salt-key -a linux* The following keys are going to be accepted: Unaccepted Keys: linux-node1.example.com linux-node2.example.com Proceed? [n/Y] Y Key for minion linux-node1.example.com accepted. Key for minion linux-node2.example.com accepted. salt-key 命令參數介紹 -L 列出全部 -d 刪除指定的支持通配符 -D 刪除全部 -A 添加全部 -a 指定添加 贊成以後生成的文件 pki/ ├── master │ ├── master.pem │ ├── master.pub │ ├── minions │ │ ├── linux-node1.example.com │ │ └── linux-node2.example.com │ ├── minions_autosign │ ├── minions_denied │ ├── minions_pre │ └── minions_rejected └── minion ├── minion_master.pub 贊成以後master發送公鑰 ├── minion.pem └── minion.pub