自动化运维之SaltStack

hostnamectl set-hostname master.saltstack.com
hostnamectl set-hostname web01.saltstack.com
hostnamectl set-hostname web02.saltstack.com

vi /etc/hosts
192.168.80.102 master.saltstack.com
192.168.80.103 web01.saltstack.com
192.168.80.104 web02.saltstack.com
重启
systemctl stop firewalld
分别为三台机器添加epel源,本地有官方源。
yum install -y epel-release 安装epel源

服务器安装:(主控端)
yum -y install salt-master salt-minion
两台客户端安装
yum -y install salt-minion

服务端和客户端都要配置
[root@saltstack ~]# vi /etc/salt/minion
master: 192.168.80.102

分别修改三台机器minion文件中的的id为自己的主机名
vi /etc/salt/minion
id: master
vi /etc/salt/minion
id: web01
vi /etc/salt/minion
id: web02
启动服务:
服务端:systemctl start salt-master
两台客户端:systemctl start salt-minion
salt-key -L 查看待认证的服务器
在这里插入图片描述
手动添加认证:
认证的方式是salt-key -a 客户端id
salt-key -A
在这里插入图片描述
说明:-a :accept ,-A:accept-all,-d:delete,-D:delete-all。可以使用 salt-key 命令查看到已经签名的客户端。此时我们在客户端的 /etc/salt/pki/minion 目录下面会多出一个minion_master.pub 文件。

在主控端
测试与被控端的通信状态!
salt ‘’ test.ping
在这里插入图片描述
salt '
’ cmd.run ‘df -hT’ //远程执行命令

salt-key //查看在 master 上已经被接受过的客户端

在master服务器:
vi /etc/salt/master
file_roots: //416行
base:
- /srv/salt //saltstack文件根目录位置,目录需要创建

nodegroups: //710行组分类
group1: ‘web01.saltstack.com
group2: ‘web02.saltstack.com

pillar_opts: True //552行,开启pillar功能
pillar_roots: //529行
base:
- /srv/pillar //pillar的主目录,需要创建
cat /etc/salt/master | grep -v ^$ | grep -v ^# //查看对主配置文件做的更改
systemctl restart salt-master
netstat -anpt | egrep ‘4505|4506’

查看被控主机上grains所有值:(每次minion在启动是都会获取客户端信息)
salt ‘client1’ grains.ls // 列出所有的 grains 项目名字
salt ‘web01’ grains.items (静态数据)
salt ‘web01’ pillar.items (动态数据)
这里单引号内的内容与前面在配置文件内id的要一致。
自定义 grains的方法有两种(客户端自定义配置和服务端写脚本定义):
1.客户端配置(缺点:每台都得去配置,机器多了配置起来不方便)
vi /etc/salt/minion +12 //去掉这行内容的注释
default_include: minion.d/*.conf

cd /etc/salt/minion.d/
vi custom_grains.conf // 添加下面内容
grains:
role:
nginx
env:
test
myname:
primum est

重启minion服务

服务端获取 grains
salt ‘web*’ grains.item role env myname // 列出多个
在这里插入图片描述
salt ‘web*’ grains.get myname // 列出单个
在这里插入图片描述
salt ‘web*’ grains.item myname

grains 在远程执行命令时很方便。我们可以按照 grains 的一些指标来操作。比如把所有的 web 服务器的 grains 的 role 设置为 nginx,那这样我们就可以批量对 nginx 的服务器进行操作了:
salt -G role:nginx cmd.run ‘hostname’
salt -G os:CentOs cmd.run ‘hostname’
在这里插入图片描述
2.服务端写Python脚本
mkdir -p /srv/salt/grains
cd /srv/salt/grains/
vi mytest.py
插入测试脚本:
#!/usr/bin/env python
#
*
coding:utf-8 *
import os
def my_test():
grains = {}
grains[‘say’] = ‘hello world’
return grains
def my_test1():
grains = {}
with os.popen(‘free -m’) as f:
grains[‘mem_usage’] = f.read()
return grains
salt ‘*’ saltutil.sync_all //同步文件到客户端

在被控端查看同步效果:
[root@web01 ~]# ll /var/cache/salt/minion/extmods/grains/
salt ‘’ sys.reload_modules //刷新模板
在这里插入图片描述
检测效果:
salt '
’ grains.item say
在这里插入图片描述
salt ‘*’ grains.item mem_usage

配置管理安装Apache,下面进行的演示是远程通过 yum 方式安装 Apache。步骤如下:
修改配置文件
注意:环境: base、dev(开发环境)、test(测试环境)、prod(生产环境)。
vi /srv/salt/top.sls
base:
’:
- apache
注意:上面的 '
’,表示在所有的客户端执行 apache 模块。

vi /srv/salt/apache.sls
apache-service:
pkg.installed:
- names:
- httpd
- httpd-devel
service.running:
- name: httpd
- enable: True
重启服务
systemctl restart salt-master
执行命令: salt ‘*’ state.highstate

出现这些上面图片中的内容说明安装Apache成功,并且被控端已经运行了httpd服务。
网址测试:访问被控端ip地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值