Linux企业实战之自动化运维工具(一)——SaltStack(1)

SaltStack

1 简介

  • SaltStack是一个配置管理系统,能够维护预定义状态的远程节点。

  • SaltStack是一个分布式远程执行系统,用来在远程节点上执行命令和查询数据。

  • SaltStack是运维人员提高工作效率、规范业务配置与操作的利器。

  • SaltStack的核心功能:

    • 使命令发送到远程系统是并行的而不是串行的;
    • 使用安全加密的协议;
    • 使用最小最快的网络载荷;
    • 提供简单的编程接口。
  • SaltStack同样引入了更加细致化的领域控制系统来远程执行,使得系统成为目标不止可以通过主机名,还可以通过系统属性。

2 SaltStack的通信机制

SaltStack 采用 C/S模式,minion与master之间通过ZeroMQ消息队列通信,默认监听4505端口。
在这里插入图片描述

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

    在这里插入图片描述

3 SaltStack安装与配置

  • 步骤一:直接从阿里云镜像站获取资源
wget https://mirrors.aliyun.com/saltstack/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
yum install -y salt-repo-latest-2.el7.noarch.rpm
sed -i "s/repo.saltstack.com/mirrors.aliyun.com\/saltstack/g" /etc/yum.repos.d/salt-latest.repo
yum repolist
scp salt-latest.repo server1:/etc/yum.repos.d/
scp salt-latest.repo server3:/etc/yum.repos.d/

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 步骤二:安装saltstack,配置minion与master端
yum install -y salt-master					#在server1上安装salt-master
yum install -y salt-minion					#在server2和server3上安装salt-minoin
systemctl enable --now  salt-master			#在server1上启动并设置其为开机自启动
ps ax

在这里插入图片描述
在这里插入图片描述

cd /etc/salt
vim minion								#在server2和server3上修改文件内容
systemctl enable --now salt-minion		#在server2和server3上开启并设置开机自启动
netstat -antlp							

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

lsof -i :4505		
lsof -i :4506
salt-key -L
salt-key -A
salt '*' test.ping						#探测连接是否正常,这里的 '*' 表示所有

在这里插入图片描述
在这里插入图片描述

上述这个允许连接的过程,就是minion和master彼此之间交换公钥的一个过程,这样来做加密解密,具体可看下面的图片

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4 SaltStack远程执行

(1) 远程执行shell命令

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

    salt ‘<target><function> [arguments]

在这里插入图片描述
在这里插入图片描述

salt -L 'server2,server3' test.ping
salt '*' cmd.run hostname 
salt '*' cmd.run 'uname -a'		#在使用带参数的命令时,必须使用‘’将完整的命令括起来,不然会报错
salt '*' pkg.verify httpd
salt server2 pkg.install httpd
salt server2 pkg.remove httpd

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)编写远程执行模块

方法一:

  • 编辑master配置文件:
vim /etc/salt/master
file_roots:
  base:
    - /srv/salt
  • 重启master服务:
systemctl restart salt-master

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

mkdir /srv/salt
cd  /srv/salt
vim install.sls			

httpd 
  pkg.installed

salt server2 state.sls install

注意:在创建模块文件时,需要添加文件后缀.sls,但是在调用模块时不需要添加文件的后缀名
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
刚刚我们所实现的都是在server2和server3上安装相同的软件包,那么如果我们想在server2和server3上安装不同的软件包,并且想要一条命令就能够实现,如何做呢?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

方法二:

  • 创建模块目录:
mkdir /srv/salt/_modules
  • 编写模块文件:
vim /srv/salt/_modules/mydisk.py
def df():
    return __salt__['cmd.run']('df -h')
  • 同步模块:
salt '*'  saltutil.sync_modules

在这里插入图片描述

我们可以看到这里就是使用python定义了一个df函数,真正执行的就是()内的shell命令
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 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。

我们刚刚在上面做的都是安装的过程,那么一个软件安装完之后还需要配置,那么怎样使用saltstack来进行远程的文件配置呢?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一般在安装完软件后,我们需要开启服务,并且如果修改了配置文件还需要重新启动服务,这就是服务相关的内容了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

salt server3 state.sls httpd

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(3)了解YAML语法

  • 规则一: 缩进

    • Salt需要每个缩进级别由两个空格组成,不要使用tabs
  • 规则二: 冒号

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

      • eg: my_key: my_value
  • 规则三: 短横杠

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

      • eg: - list_value_one
      • eg: - list_value_two
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值