自动化运维介绍、saltstack安装、启动服务、配置认证、远程执行命令

24.1 自动化运维介绍

随着信息时代的持续发展,IT运维已经成为IT服务内涵中重要的组成部分。面对越来越复杂的业务,面对越来越多样化的用户需求,不断扩展的IT应用需要越来越合理的模式来保障IT服务能灵活便捷、安全稳定地持续保障,这种模式中的保障因素就是IT运维(其他因素是更加优越的IT架构等)。从初期的几台服务器发展到庞大的数据中心,单靠人工已经无法满足在技术、业务、管理等方面的要求,那么标准化、自动化、架构优化、过程优化等降低IT服务成本的因素越来越被人们所重视。其中,自动化最开始作为代替人工操作为出发点的诉求被广泛研究和应用。

IT运维自动化是一组将静态的设备结构转化为根据IT服务需求动态弹性响应的策略,目的就是实现IT运维的质量,降低成本。

传统运维的缺陷:

传统运维效率低,大多工作人为完成
传统运维工作繁琐,容易出错
传统运维每日重复做相同的事情
传统运维没有标准化流程
传统运维的脚本繁多,不能方便管理

常见自动化运维工具:

Puppet: (www.puppetlabs.com)基于rubby开发,c/s架构,支持多平台,可管理配置文件、用户、cron任务、软件包、系统服务等。 分为社区版(免费)和企业版(收费),企业版支持图形化配置。
Saltstack:(官网 https://saltstack.com,文档docs.saltstack.com )基于python开发,c/s架构,支持多平台,比puppet轻量,在远程执行命令时非常快捷,因为Saltstack有一个消息队列。Saltstack配置和使用比puppet容易,能实现puppet几乎所有的功能。
Ansible: (www.ansible.com )更加简洁的自动化运维工具,不需要在客户端上安装agent,基于python开发。可以实现批量操作系统配置、批量程序的部署、批量运行命令。

24.2 saltstack安装

1、配置hosts文件

服务端:
hostname server
vim /etc/hosts
192.168.222.111 server
192.168.222.112 client

客户端:
hostname client
vim /etc/hosts
192.168.222.111 server
192.168.222.112 client

2、安装saltstack yum源(服务端客户端都需安装)

yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm

3、服务端安装:

yum install -y salt-master salt-minion

4、客户端安装:

yum install -y salt-minion

24.3 启动saltstack服务

  • 编辑配置文件:(服务端、客户端都修改)
vim /etc/salt/minion

# resolved, then the minion will fail to start.
#master: salt
master: server   //添加指定服务端
  • 启动服务
服务端:
[root@server ~]# systemctl start salt-master
[root@server ~]# systemctl start salt-minion
[root@server ~]# ps aux |grep salt
root     13112  1.8  1.8 389144 34380 ?        Ss   16:15   0:01 /usr/bin/python /usr/bin/salt-master
root     13128  0.0  1.0 306180 19396 ?        S    16:15   0:00 /usr/bin/python /usr/bin/salt-master
root     13141  0.0  1.7 469800 32980 ?        Sl   16:15   0:00 /usr/bin/python /usr/bin/salt-master
root     13142  0.0  1.7 388004 32968 ?        S    16:15   0:00 /usr/bin/python /usr/bin/salt-master
root     13145  0.2  1.9 391452 36964 ?        R    16:15   0:00 /usr/bin/python /usr/bin/salt-master
root     13146  0.0  1.8 388772 33812 ?        S    16:15   0:00 /usr/bin/python /usr/bin/salt-master
root     13147  0.0  1.8 503484 33900 ?        Sl   16:15   0:00 /usr/bin/python /usr/bin/salt-master
root     13148  1.4  2.2 401532 42948 ?        S    16:15   0:01 /usr/bin/python /usr/bin/salt-master
root     13149  1.4  2.2 401536 42956 ?        S    16:15   0:01 /usr/bin/python /usr/bin/salt-master
root     13150  0.2  1.8 462876 34308 ?        Sl   16:15   0:00 /usr/bin/python /usr/bin/salt-master
root     13157  1.4  2.2 401532 42956 ?        S    16:15   0:01 /usr/bin/python /usr/bin/salt-master
root     13158  1.4  2.2 401540 42964 ?        S    16:15   0:01 /usr/bin/python /usr/bin/salt-master
root     13159  1.4  2.2 401540 42972 ?        S    16:15   0:01 /usr/bin/python /usr/bin/salt-master
root     13248  2.1  0.9 313772 16956 ?        Ss   16:16   0:00 /usr/bin/python /usr/bin/salt-minion
root     13560  3.2  1.1 407656 22168 ?        Dl   16:17   0:00 /usr/bin/python /usr/bin/salt-minion
root     13600  0.0  1.0 403992 19820 ?        S    16:17   0:00 /usr/bin/python /usr/bin/salt-minion
root     13640  1.0  0.0 112720   560 pts/0    D+   16:17   0:00 grep --color=auto salt
[root@server ~]# netstat -lntp |grep python
tcp        0      0 0.0.0.0:4505            0.0.0.0:*               LISTEN      13141/python        
tcp        0      0 0.0.0.0:4506            0.0.0.0:*               LISTEN      13147/python
客户端:客户端不监听端口

[root@client ~]# systemctl start salt-minion
[root@client ~]# ps aux |grep salt
root      1199  0.5  2.1 313624 21396 ?        Ss   16:14   0:00 /usr/bin/python /usr/bin/salt-minion
root      1202  1.7  4.2 571412 42592 ?        Sl   16:14   0:00 /usr/bin/python /usr/bin/salt-minion
root      1210  0.0  1.9 406696 20036 ?        S    16:14   0:00 /usr/bin/python /usr/bin/salt-minion
root      1300  0.0  0.0 112676   984 pts/0    S+   16:15   0:00 grep --color=auto salt
  • 4505端口是用来发布消息的,4506端口则是与客户端通信、传输数据的。

24.4 saltstack配置认证

  • minion在第一次启动时会在/etc/salt/pki/minion/下生成minion.pem和minion.pub,其中.pub为公钥,我们需要把公钥传输给master
[root@client ~]# ls /etc/salt/pki/minion/
minion.pem  minion.pub

master第一次启动时也会在/etc/salt/pki/master下生成密钥对,当master通过salt-key工具接收到minion传过来的公钥后,就会在/etc/salt/pki/master/minions/目录里存放刚刚接受的公钥,同时客户端也会接收master传过去的公钥,把它放在/etc/salt/pki/minion目录下,并命名为minion_master.pub。

[root@server ~]# ls /etc/salt/pki/master
master.pem  master.pub  minions  minions_autosign  minions_denied  minions_pre  minions_rejected
  • salt-key工具实现认证:
[root@server ~]# salt-key -a client
The following keys are going to be accepted:
Unaccepted Keys:
client
Proceed? [n/Y] y
Key for minion client accepted.
[root@server ~]# ls /etc/salt/pki/master/minions    //接收的公钥会存放在这个目录下
client
客户端:
[root@client ~]# ls /etc/salt/pki/minion
minion_master.pub  minion.pem  minion.pub
  • salt-key命令可以查看所有状态下的主机(客户端)
[root@server ~]# salt-key
Accepted Keys:
client
server
Denied Keys:
Unaccepted Keys:
Rejected Keys:

salt-key命令用法:

-a 后面跟主机名,认证指定主机
-A 认证所有主机
-r 跟主机名,拒绝指定主机
-R 拒绝所有主机
-d 跟主机名,删除指定主机认证
-D 删除全部主机认证
-y 省略掉交互,相当于直接按了y

24.5 saltstack远程执行命令

1、test.ping用于测试能否ping通minion端,测试已认证的minion端是否存活;*表示测试所有已经认证的minion端

[root@server ~]# salt '*' test.ping
client:
    True
server:
    True
[root@server ~]# salt 'client' test.ping //测试指定minion
client:
    True

2、cmd.run可以执行系统的命令,例如让所有机器都执行hostname命令:(如果是普通用户的话,只能执行普通用户能够执行的命令)

[root@server ~]# salt '*' cmd.run "hostname"
client:
    client
server:
    server

说明: 这里的必须是在master上已经被接受过认证的客户端,可以通过salt-key查到,通常是我们已经设定的id值。关于这部分内容,它支持通配、列表以及正则。 比如两台客户端aming-01,aming-02, 那我们可以写成salt 'aming-', salt 'aming-0[12]' salt -L 'aming-01,aming-02' salt -E 'aming-(01|02)'等形式,使用列表,即多个机器用逗号分隔,而且需要加-L,使用正则必须要带-E选项。 它还支持grains,加-G选项,pillar 加-I选项,下面会介绍到。

  • 支持正则表达式:
[root@server ~]# salt 'cli*' test.ping
client:
    True
[root@server ~]# salt 'cli[a-z]*' test.ping
client:
    True
  • -L选项指定使用的是列表,需要用逗号进行分割
[root@server ~]# salt -L 'server,client' cmd.run "hostname"
server:
    server
client:
    client
  • 有些正则表达式的使用需要加上-E来指定,不然不支持
[root@server ~]# salt -E 'cl(i|e|n|t)*' cmd.run "hostname"
client:
    client

猜你喜欢

转载自blog.csdn.net/xou6363/article/details/82355968