自動化運維工具 SaltStack (五) (salt-ssh + salt-syndic + salt-api 的概念及部署)

salt-ssh概念

1.salt-ssh 是 0.17.0 新引入的一個功能,不需要minion對客戶端進行管理,也不需要master。

2.salt-ssh 支持salt大部分的功能:如 grains、modules、state 等

3.salt-ssh 沒有使用ZeroMQ的通信架構,執行是串行模式,salt-ssh 用的是sshpass進行密碼交互的。性能下降。

類似 paramiko、pssh、ansible 這類的工具

4.salt-ssh可以獨立運行的
在這裏插入圖片描述

roster系統的使用

salt-ssh需要一個名單系統來確定哪些執行目標,Salt的0.17.0版本中salt-ssh引入roster系統

roster系統編譯成了一個數據結構,包含了targets,這些targets是一個目標系統主機列表和或如連接到這些targets

配置文件:

# target的信息
    host:        # 遠端主機的ip地址或者dns域名
    user:        # 登錄的用戶
    passwd:      # 用戶密碼,如果不使用此選項,則默認使用祕鑰方式
# 可選的部分
    port:        #ssh端口
    sudo:        #可以通過sudo
    tty:         # 如果設置了sudo,設置這個參數爲true
    priv:        # ssh祕鑰的文件路徑
    timeout:     # 當建立鏈接時等待響應時間的秒數
    minion_opts: # minion的位置路徑
    thin_dir:    # target系統的存儲目錄,默認是/tmp/salt-<h
    ash>
    cmd_umask:   # 使用salt-call命令的umask值

配置過程

master端設置
yum install -y salt-ssh

[root@ser2 salt]# pwd
/etc/salt
[root@ser2 salt]# cat roster
server4:
  host: 172.25.2.5
  user: root
  passwd: redhat

[root@ser2 salt]# salt-ssh ser4 test.ping -i # -i會自動應答
ser4:
True

1.在之前的實驗背景下,關閉ser4上的mionin端。
在這裏插入圖片描述

2.在這裏插入圖片描述3.在這裏插入圖片描述在這裏插入圖片描述4.測試
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述刪除ser4的連接信息
在這裏插入圖片描述再次訪問時發現輸入y
在這裏插入圖片描述但是加上-i 就可以忽略應答
在這裏插入圖片描述或者忽略key的檢測:

[root@ser2 ~]# cat ~/.ssh/config
StrictHostKeyChecking no

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述
注意:
在這裏插入圖片描述1.salt-ssh 是在salt基礎上打了一個python包上傳到客戶端的默認tmp目錄 在客戶端上面解壓並執行返回結果,最後刪除tmp上傳的臨時文件

2.salt-minion方法是salt-mater先執行語法驗證,驗證通過後發送到minion minion收到Msater的狀態文件默認保存在/var/cache/salt/minion

也有時候salt-master語法驗證通過,在minion上可能因爲環境問題會執行失敗
3.salt-ssh和salt-minion可以共存,salt-minion不依賴於ssh服務

salt-syndic概念

1.知道zabbix proxy的話那就很容易理解了,syndic其實就是個代理,隔離master與minion。

2.Syndic必須要運行在master上,再連接到另一個topmaster上。

3.Topmaster 下發的狀態需要通過syndic來傳遞給下級master,minion傳遞給master的數據也是由syndic傳遞給topmaster。

4.topmaster並不知道有多少個minion。

5.syndic與topmaster的file_roots和pillar_roots的目錄要保持一致。

6.syndic的英文翻譯是理事。

在這裏插入圖片描述

配置過程

ser1作爲topmaster,ser2作爲syndic(同時也是master)

[root@ser1 ~]# vim /etc/yum.repos.d/salt-latest.repo
[salt-latest]
name=SaltStack Latest Release Channel for RHEL/Centos $releasever
baseurl=https://repo.saltstack.com/yum/redhat/7/$basearch/latest
failovermethod=priority
enabled=1 # 表示啓用這個源
gpgcheck=0  # 表示對從這個源下載的rpm包不進行校驗
gpgkey=file:///etc/pki/rpm-gpg/saltstack-signing-key


[root@ser1 ~]# yum install salt-master -y

[root@ser2 ~]# yum install -y salt-syndic
root@ser2 ~]# systemctl start salt-syndic

[root@ser1 ~]# vim /etc/salt/master  # 作爲頂級master
order_masters: True

[root@ser1 ~]# systemctl start salt-master
[root@ser1 ~]# systemctl enable salt-master
Created symlink from /etc/systemd/system/multi-user.target.wants/salt-master.service to /usr/lib/systemd/system/salt-master.service.

[root@ser2 ~]# vim /etc/salt/master
syndic_master: 172.25.2.2
[root@ser2 ~]# systemctl restart salt-master

[root@ser1 ~]# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
ser2
Rejected Keys:

[root@ser1 ~]# salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
ser2
Proceed? [n/Y] Y       
Key for minion ser2 accepted.

[root@ser1 ~]# salt-key -L
Accepted Keys:
ser2
Denied Keys:
Unaccepted Keys:
Rejected Keys:

[root@ser1 ~]# salt '*' test.ping
ser4:
    True
ser3:
    True

在這裏插入圖片描述
在這裏插入圖片描述

topmaster端

1.在這裏插入圖片描述
在這裏插入圖片描述

2.在這裏插入圖片描述在這裏插入圖片描述

3.在這裏插入圖片描述
在這裏插入圖片描述

下級master端

1.在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述2.
在這裏插入圖片描述在這裏插入圖片描述3.在這裏插入圖片描述

topmaster端做授權

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述進行測試:
在這裏插入圖片描述

salt-api概念

SaltStack 官方提供有REST API格式的 salt-api 項目,將使Salt與第三方系統集成變得尤爲簡單。

官方提供了三種api模塊:

rest_cherrypy
rest_tornado
rest_wsgi

官方鏈接:

https://docs.saltstack.com/en/latest/ref/netapi/all/index.html#all-netapi-modules

在這裏插入圖片描述

配置過程

1.安裝salt-api

[root@ser2 ~]# yum install -y salt-api  python-cherrypy

在這裏插入圖片描述
2.生成證書

[root@ser2 private]# pwd
/etc/pki/tls/private
[root@ser2 private]# openssl genrsa 2048 > localhost.key
Generating RSA private key, 2048 bit long modulus
..............+++
........................+++
e is 65537 (0x10001)
[root@ser2 private]# ls
localhost.key

[root@ser2 ~]# cd /etc/pki/tls/certs/
[root@ser2 certs]# make testcert  # 填寫相關信息
[root@ser2 certs]# ls # 生成localhost.crt
ca-bundle.crt        localhost.crt    Makefile
ca-bundle.trust.crt  make-dummy-cert  renew-dummy-cert

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述

(2)

[root@ser2 master.d]# pwd
/etc/salt/master.d
[root@ser2 master.d]# cat tls.conf 
rest_cherrypy:
  port: 8000
  ssl_crt: /etc/pki/tls/certs/localhost.crt
  ssl_key: /etc/pki/tls/private/localhost.key

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述3.創建用戶認證文件

[root@ser2 master.d]# cat auth.conf 
external_auth:
  pam:
    saltapi:
      - .*
      - '@wheel'
      - '@runner'
      - '@jobs'
[root@ser2 master.d]# useradd -s /sbin/nologin saltapi
[root@ser2 master.d]# passwd saltapi
Changing password for user saltapi.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@ser2 master.d]# systemctl restart salt-master
[root@ser2 master.d]# systemctl start salt-api

[root@ser2 master.d]# netstat -antlpe|grep :8000
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      0          436701     25111/salt-api      
tcp        0      0 127.0.0.1:43556         127.0.0.1:8000          TIME_WAIT   0  

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述4.進行認證獲取token

root@ser2 master.d]# curl -sSk https://localhost:8000/login -H 'Accept: application/x-yaml'  -d username=saltapi -d password=westos -d eauth=pam
return:
- eauth: pam
  expire: 1589764243.542194
  perms:
  - .*
  - '@wheel'
  - '@runner'
  - '@jobs'
  start: 1589721043.542193
  token: 65b8495460d3eeed0a4fd86174b812cc3b55ee71
  user: saltapi
[root@ser2 master.d]# curl -sSk https://localhost:8000 -H 'Accept: application/x-yaml' -H 'X-Auth-Token: 65b8495460d3eeed0a4fd86174b812cc3b55ee71' -d client=local -d tgt='*' -d fun=test.ping
return:
- server3: true
  server4: true

[root@ser2 master.d]# curl -sSk https://localhost:8000 -H 'Accept: application/x-yaml' -H 'X-Auth-Token: 65b8495460d3eeed0a4fd86174b812cc3b55ee71' -d client=local -d tgt='*' -d fun=state.sls -d arg=keepalived

在這裏插入圖片描述在這裏插入圖片描述(1)進行測試
在這裏插入圖片描述在這裏插入圖片描述(2)在這裏插入圖片描述(3)在這裏插入圖片描述在這裏插入圖片描述

github小項目實現

1.在這裏插入圖片描述2.拿到depoly目錄中的saltapi.py文件

在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述3.發現報錯
在這裏插入圖片描述在這裏插入圖片描述4.在這裏插入圖片描述5.成功在這裏插入圖片描述6.在這裏插入圖片描述在這裏插入圖片描述

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