天天看點

【運維筆記】saltstack安裝salt-sshsalt-master (控制中心)salt-minion(被控制端)檢視minion清單saltstack指令行遠端執行指令常用指令PYTHON API(python3版本2018.3)grains元件,收集被控主機的基本資訊

安裝

## ubuntu16安裝python3版本(python3.5及以上)
	wget -O - https://repo.saltstack.com/py3/ubuntu/16.04/amd64/latest/SALTSTACK-GPG-KEY.pub | sudo apt-key add -
	deb http://repo.saltstack.com/py3/ubuntu/16.04/amd64/latest xenial main

## centos7
	yum install -y http://repo.saltstack.com/py3/redhat/salt-py3-repo-2018.3-1.el7.noarch.rpm -y

## python3.5.2安裝
	pip install salt
	C:\salt\conf  ## master配置檔案目錄
	C:\salt\conf\pki\master  ## 認證資訊
	salt-key --auto-create  ## 建立公鑰
	salt-master  ## 運作salt-master程式
           

salt-ssh

## 在不安裝salt-minion的情況下通過ssh執行salt指令
/etc/salt/roster
           

salt-master (控制中心)

##yum install salt-master

## 4505發送指令,監聽資訊
## 4506建立一對一連接配接,異步處理

## /etc/salt/master
	#hash_type: sha512		證書認證方式

## 秘鑰對存放路徑
	/etc/salt/pki/master/master.pub 
	/etc/salt/pki/master/master.pem
           

salt-minion(被控制端)

## yum install salt-minion

## /etc/salt/minion
	#master: 
		- [master1]  # 多master管理,需要使用同一對公鑰和秘鑰master.pub、master.pem
		- [master2]
	#hash_type: sha512
	#id: [minion id]
           

檢視minion清單

salt-key -L 	# 檢視所有清單
salt-key -A		# 接受所有Unaccepted keys
salt-key -a	[salt-minion id]	# 手動添加證書認證
salt-key -D		# 删除所有證書
salt-key -d [salt-minion id]	# 删除單個
           

saltstack指令行遠端執行指令

salt -N "group1" cmd.run "ifconfig"
	# -E 以正則比對主機ID
	# -L 以逗号分隔
	# -N nodegroups
		master配置檔案中配置好組名和對應主機ID
		group1: "[email protected],id2"		#L表示後面的ID以清單形式分隔,分隔符","
	# -C 多條件比對,not,and,or
	# -S 根據主機IP位址或IP子網進行比對
           

常用指令

## cmd.run(cmd ,cwd ,...)
	salt "*" cmd.run "ifconfig"

## cp子產品
	1、salt-cp指令
		salt-cp “*” cp.get_file [localPath] [remotePath]

	2、Salt 檔案伺服器
		salt://表示 檔案伺服器的base環境。
		Salt檔案伺服器/etc/salt/master配置檔案中的flie_roots選項管理。

	3、cp.get_file,用于minion從master下載下傳一個檔案,如果目錄不存在,cp.get_file是不會主動建立目錄的,makedirs=True建立目錄
		salt "*" cp.get_file salt://tmp/python1.py /tmp/dir1/ makedirs=True

	4、cp.get_dir  # 在master端上擷取minion端的檔案

	5、cp.push  # 從minion端推送檔案到master
		cp.push功能預設不開啟,需要修改配置檔案中的file_recv 環境,預設為False
		上傳的檔案存放在master端的 /var/cache/salt/master/minions/<minion_id>/files/ 目錄下
		file_recv: True
		file_recv_max_size:   # 允許最大上傳檔案大小,機關MB
		

## file子產品
	1、file.copy
		salt '*' file.copy /path/to/src_dir /path/to/dst_dir recurse=True remove_existing=True

	2、file.move
		salt '*' file.move /path/to/src /path/to/dst

	3、file.remove
		salt '*' file.rename /path/to/src /path/to/dst

	4、file.chown
		salt '*' file.chown /etc/passwd root root

	5、file.mkdir
		salt '*' file.mkdir /opt/jetty/context

	6、file.file_exists
		salt '*' file.file_exists /etc/passwd

	7、file.stats
		salt '*' file.stats /etc/passwd
           

PYTHON API(python3版本2018.3)

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

## cmd(tgt, fun, arg=(), timeout=None, tgt_type=u'glob', ret=u'', jid=u'', full_return=False, kwarg=None, **kwargs)
	tgt: minion主機,預設是glob。由tgt_type選項修改
	fun: 子產品
	arg: 要傳遞給遠端函數的參數清單,["arg1","arg2"]傳入兩個參數。
	timeout: 逾時
	tgt_type: glob,list,nodegroup,pcre
		result = client.cmd("group1" ,"cmd.run" ,arg = ["ls -la"] ,tgt_type = "nodegroup")
	full_return:完整傳回,包括退出代碼和其他作業中繼資料。僅輸出作業傳回(預設)
		>>> client.cmd("10.1.1.98", "test.ping", full_return=True)
			{'10.1.1.98': {'jid': '20190218165857946315', 'ret': True, 'retcode': 0}}
           

grains元件,收集被控主機的基本資訊

## 擷取主機的grains資訊。
	salt "*" grains.ls  ## 列出grains所有的項
	salt "*" grains.item os  ## 檢視os項的資訊

## 定義grains資料
	/etc/salt/minion
	default_include: minion.d/*.conf
	自定義鍵值
           

繼續閱讀