SaltStack 批量管理&安裝使用

CentOs 下安裝,master&minion


1.添加epel源
	# yum -y install epel 

2.安裝 master
	# yum -y install salt-master
	# salt-master的配置文件是/etc/salt/master
配置:
	interface: 0.0.0.0  #綁定到本地的0.0.0.0地址
	publish_port: 4505  #管理端口,命令發送
	user: root      #運行salt進程的用戶
	worker_threads: 5  #salt運行線程數,線程越多處理速度越快,不要超過cpu個數
	ret_port: 4506  #執行結果返回端口
	pidfile: /var/run/salt-master.pid #pid文件位置
	log_file: /var/log/salt/master  #日誌文件地址

	auto_accept: False	#自動接收minion的key

# 配置開機啓動
	# chkconfig salt-master on

# 啓動服務
	# service salt-master start

3.被管理端安裝minion
	# yum -y install salt-minion 

# salt-minion的配置文件是/etc/salt/minion
	# 指定master(salt服務端,主機名或者IP)
	master: master 
	master_port: 4506
	user: root
	id: slave
	acceptance_wait_time: 10
	log_file: /var/log/salt/minion


# 配置開機啓動
	# chkconfig salt-monion

# 啓動salt minion
	# service salt-minion start

############## 實戰1 salt minion 主機名修改 ############
	1. salt master 將要修改主機名的機器 -d 掉
	2. slat minion 刪除key 修改主機名 重啓服務
	3. slat master 重新認證

############## 實戰2 salt master 遷移 #################
	1. 打包salt pki路徑
	2. 新salt master 服務器解包 pki 啓動
	3. 舊salt master 更新 salt minion 配置(服務端地址)



# 插件
	Grains   --  靜態採集
	Grains 是saltstack組件中非常重要之一,在配置部署時候回經常使用,Grains記錄minion的靜態信息,比如常用屬性,CPU、內存、磁盤、網絡信息等。
	Minions的Grains信息是Minion啓動時採集彙報給Master的
	Grains是以 key  value形式存儲的數據庫,可以看做Host的元數據(metadata)
	Grains保存着收集到的客戶端的詳細信息

# 如果slave機器數據變化,grains就過期了
# 在生產環境中需要自定義Grains,可以通過
	Minion配置文件
	Grains相關模塊定義
	Python腳本定義

# Pillar   -- 加密數據
	在SaltStack中主要的作用是存儲和定義配置管理中需要的一些數據,比如軟件版本號,用戶賬號密碼等,保證敏感數據不被其他minion看到

# Grains 與 Pillar 對比
	類型     數據採集方式   應用場景                   定義位置
	Grains   靜態         minion啓動時收集  數據查詢  目標選擇  配置管理   minion
	Pillar   動態         master進行自定義  目標選擇  配置管理  敏感數據   master

# Python API 調用SaltStack
# 介紹:
	/usr/bin/salt默認使用的接口是LocalClient,該接口只能在salt master上使用
	[root@master  ~]$python
	Python 2.7.5 (default, Jul 13 2018, 13:06:57)
	[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2
	Type "help", "copyright", "credits" or "license" for more information.
	>>> import salt.client
	>>> local = salt.client.LocalClient()  #<salt.client.LocalClient object at 0x7f886dbdd850>
	>>> local.cmd('*','cmd.run',['hostname'])#向所有minion發送命令
	{'slave': 'slave'}
	逐條返回結果,local.cmd_iter()

	>>> ret=local.cmd_iter('*','test.ping')
	>>> ret
	<generator object cmd_iter at 0x7f886d455c80>
	>>> for i in ret:
	...     print i
	...
	{'slave': {'retcode': 0, 'ret': True}}
	菲波那切數列

	>>> local.cmd('*','test.fib',[10])
	{'slave': [[0, 1, 1, 2, 3, 5, 8], 2.1457672119140625e-06]}
	檢查minion服務器信息

	>>> local.cmd('*','cmd.run',['hostname'])
	{'slave': 'slave'}
	>>> local.cmd('*','cmd.run',['ifconfig'])
	>>> local.cmd('*','cmd.run',['crontab -l'])
	>>> local.cmd('*','cmd.run',['df -h'])
	啓停minion的服務,如nginx

	>>> local.cmd('*','service.stop',['nginx'])
	{'slave': True}
	>>> local.cmd('*','service.status',['nginx'])
	{'slave': False}
	>>> local.cmd('*','service.start',['nginx'])
	{'slave': True}

# SaltStack proxy
# Syndic







 

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