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

SaltStack

1 简介

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

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

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

  • SaltStack的核心功能:

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

2 SaltStack的通信机制

SaltStack 采用 C/S模式,minion与master之间通过ZeroMQ消息队列通信,默认监听4505端口。
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第1张图片

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

    Linux企业实战之自动化运维工具(一)——SaltStack(1)_第2张图片

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/

Linux企业实战之自动化运维工具(一)——SaltStack(1)_第3张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第4张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第5张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第6张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第7张图片

  • 步骤二:安装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

Linux企业实战之自动化运维工具(一)——SaltStack(1)_第8张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第9张图片

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

在这里插入图片描述
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第10张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第11张图片

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

Linux企业实战之自动化运维工具(一)——SaltStack(1)_第12张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第13张图片

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

Linux企业实战之自动化运维工具(一)——SaltStack(1)_第14张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第15张图片
在这里插入图片描述
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第16张图片

4 SaltStack远程执行

(1) 远程执行shell命令

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

    salt ‘ [arguments]

Linux企业实战之自动化运维工具(一)——SaltStack(1)_第17张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第18张图片

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

Linux企业实战之自动化运维工具(一)——SaltStack(1)_第19张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第20张图片
在这里插入图片描述
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第21张图片
在这里插入图片描述
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第22张图片

(2)编写远程执行模块

方法一:

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

Linux企业实战之自动化运维工具(一)——SaltStack(1)_第23张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第24张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第25张图片

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

httpd 
  pkg.installed

salt server2 state.sls install

注意:在创建模块文件时,需要添加文件后缀.sls,但是在调用模块时不需要添加文件的后缀名
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第26张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第27张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第28张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第29张图片
在这里插入图片描述
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第30张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第31张图片
刚刚我们所实现的都是在server2和server3上安装相同的软件包,那么如果我们想在server2和server3上安装不同的软件包,并且想要一条命令就能够实现,如何做呢?
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第32张图片
在这里插入图片描述
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第33张图片
在这里插入图片描述
在这里插入图片描述
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第34张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第35张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第36张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第37张图片
在这里插入图片描述
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第38张图片

方法二:

  • 创建模块目录:
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命令
在这里插入图片描述

Linux企业实战之自动化运维工具(一)——SaltStack(1)_第39张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第40张图片

  • 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来进行远程的文件配置呢?
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第41张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第42张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第43张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第44张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第45张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第46张图片
在这里插入图片描述
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第47张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第48张图片
一般在安装完软件后,我们需要开启服务,并且如果修改了配置文件还需要重新启动服务,这就是服务相关的内容了
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第49张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第50张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第51张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第52张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第53张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第54张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第55张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第56张图片
在这里插入图片描述
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第57张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第58张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第59张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第60张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第61张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第62张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第63张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第64张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第65张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第66张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第67张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第68张图片

salt server3 state.sls httpd

Linux企业实战之自动化运维工具(一)——SaltStack(1)_第69张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第70张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第71张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第72张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第73张图片
Linux企业实战之自动化运维工具(一)——SaltStack(1)_第74张图片

(3)了解YAML语法

  • 规则一: 缩进

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

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

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

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

      • eg: - list_value_one
      • eg: - list_value_two

你可能感兴趣的:(自动化运维工具)