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







 

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