SALTSTACK自动化运维管理

saltstack简介

saltstack是 一个配置管理系统,能够维护预定义状态的远程节点
saltstack是一个分布式远程执行系统,用来在远程节点上执行命令和查询数据
saltstack是运维人员提高工作效率、规范业务配置与操作的利器
Salt的核心功能
使命令发送到远程系统是并行的而不是串行的
使用安全加密的协议
使用最小最快的网络载荷
提供简单的编程接口

Salt同样引入了更加细致化的领域控制系统来远程执行,使得系统成为目标不止可以通过主机名,还可以通过系统属性。

saltstack通信机制

SaltStack 采用 C/S模式,minion与master之间通过ZeroMQ消息队列通信,默认监听4505端口。

Salt Master运行的第二个网络服务就是ZeroMQ REP系统,默认监听4506端口

实验环境

准备三台虚拟机环境

server1 server2 server3

然后根据官网要求直接安装软件即可

他会生成一个salt的repo文件

然后安装

yum install -y salt-master

同时在server3和server4中也安装saltstack同时安装salt-minion

然后设置开机自启动

然后我们可以看到4505和4506端口均被打开

然后安装一个Python的包

重启salt-master

然后我们给server3添加master

查看server3发给minion的公钥

同样去server3查看

同样的我们给server4也要添加一个master

我们使用正则匹配测试ping的情况

也可以测试我们的指令

saltstack远程执行

Salt命令由三个主要部分构成:

salt '<target>' <function> [arguments]

target指定哪些minion默认的规则是使用glob匹配minion id.

# salt '*' test.ping

Targets也可以使用正则表达式:

# salt -E 'server[1-3]' test.ping

Targets也可以指定列表:

# salt -L 'server2,server3' test.ping

funcation是module提供的功能,Salt内置了大量有效的functions.

# salt '*' cmd.run 'uname -a'

arguments通过空格来界定参数:

# salt 'server2' sys.doc pkg    #查看模块文档

# salt 'server2' pkg.install httpd

# salt 'server2' pkg.remove httpd

salt内置的执行模块列表

http://docs.saltstack.cn/ref/modules/all/index.html

编辑master配置文件

# vim /etc/salt/master

file_roots:

  base:

    - /srv/salt

重启master服务
# systemctl restart salt-master 

调用模块的时候有时候不是我们想要的模块我们也可以自己写

然后把我们写的同步到所有的节点上

我们去节点上查看

然后我们执行

YAML语法

规则一: 缩进

Salt需要每个缩进级别由两个空格组成不要使用tabs。

规则二: 冒号

字典的keys在YAML中的表现形式是一个以冒号结尾的字符串。

my_key: my_value

规则三: 短横杠

想要表示列表项,使用一个短横杠加一个空格。

  - list_value_one

  - list_value_two

配置管理

创建一个sls文件:

# vim /srv/salt/apache.sls

httpd:                   # ID声明

  pkg:                    # 状态声明

    - installed             # 函数声明

指定主机执行
# salt server2 state.sls apache
vim install.sls

让msater能对不同的节点进行不同的操作

我们定义一个top.sls

我们也可以创建两个文件分别是apache和nfs然后将对应的sls文件移到里面

源码编译

测试

我们可以再写一个service.sls用来声明

然后从server4中拷贝conf文件

然后修改init文件添加service文件的关系

然后我们再service中添加一个需求

然后去执行

Salt 状态系统的核心是SLS,或者叫SaLt State 文件

SLS表示系统将会是什么样的一种状态,而且是以一种很简单的格式来包含这些数据,常被叫做配置管理

sls文件命名

sls文件以”.sls”后缀结尾,但在调用是不用写此后缀

使用子目录来做组织是个很好的选择

 init.sls 在一个子目录里面表示引导文件,也就表示子目录本身所以``apache/init.sls`` 就是表示``apache``.

如果同时存在apache.sls 和 apache/init.sls,则 apache/init.sls 被忽略,apache.sls将被用来表示 apache.

grains与pillar详解

Grains是SaltStack的一个组件,存放在SaltStack的minion端

当salt-minion启动时会把收集到的数据静态存放在Grains当中,只有当minion重启时才会进行数据的更新

由于grains是静态数据,因此不推荐经常去修改它

应用场景

信息查询,可用作CMDB

在target中使用,匹配minion

在state系统中使用,配置管理模块

我们可以通过service定义它

然后重启service

在/etc/salt/grains中定义:

# vim /etc/salt/grains:

deployment:  datacenter1

同步数据

# salt server3 saltutil.sync_grains

查询自定义项

# salt server3 grains.item deployment

我们也可以再master端穿件grain

在salt-master端创建_grains目录

mkdir /srv/salt/_grains vim /srv/salt/_grains/my_grain.py

def my_grain():

    grains = {}

    grains['roles'] = 'nginx'

    grains['hello'] = 'world'

    return grains

# salt '*' saltutil.sync_grains 

#同步grains到minion端

pillar简介

pillar和grains一样也是一个数据系统,但是应用场景不同。

pillar是将信息动态的存放在master端,主要存放私密、敏感信息(如用户名密码等),而且可以指定某一个minion才可以看到对应的信息。

pillar更加适合在配置管理中运用

我们定义一个web.sls

然后定义一个top.sls

pillar是动态的不用同步可以直接运行

装包

 

 

 

 

 

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值