自动化运维(salt)

 

1.自动化运维

  • 传统运维效率低,大多工作人为完成
  • 传统运维工作繁琐,容易出错
  • 传统运维每日重复做相同的事情
  • 传统运维没有标准化流程
  • 传统运维的脚本繁多,不能方便管理
  • 自动化运维就是要解决上面所有问题

常见的自动化运维工具

Puppet (www.puppetlabs.com
基于rubby开发,c/s架构,支持多平台(win、linux、mac),可管理配置文件、用户、cron任务、软件包、系统服务等。 分为社区版(免费)和企业版(收费),企业版支持图形化配置。

Saltstack(官网 https://saltstack.com,文档docs.saltstack.com
基于python开发,c/s架构,支持多平台,比puppet轻量,在远程执行命令时非常快捷,配置和使用比puppet容易,能实现puppet几乎所有的功能。

Ansible (www.ansible.com

更加简洁的自动化运维工具,不需要在客户端上安装agent,基于python开发。可以实现批量操作系统配置、批量程序的部署、批量运行命令。

 

2.saltstack安装

saltstack介绍https://docs.saltstack.com/en/latest/topics/index.html

可以使用salt-ssh远程执行,类似ansible,也支持c/s模式。

准备两台机器246.128;246.129 。 分别修改hostname和host(两台机器都需要)

[root@chenshi1 ~]# vi /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.246.128 chenshi1
192.168.246.129 chenshi2

如果机器很多可以使用一个内部的dns

两台机器全部安装saltstack yum 源

[root@chenshi1 ~]# yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm

客户端只需要安装salt-minion

作为依赖被升级:
  systemd.x86_64 0:219-57.el7_5.3             systemd-libs.x86_64 0:219-57.el7_5.3       
  systemd-sysv.x86_64 0:219-57.el7_5.3       

[root@chenshi2 ~]# rpm -qa|grep salt
salt-repo-latest-2.el7.noarch
salt-2018.3.2-1.el7.noarch
salt-minion-2018.3.2-1.el7.noarch

在服务端需要安装yum install -y salt-master salt-minion

[root@chenshi1 ~]# yum install -y salt-master salt-minion

 

3.启动salt相关服务

在128上编辑配置文件

[root@chenshi1 ~]# vi /etc/salt/minion


找到maste去掉前面的#



master: chenshi1

在客户端上启动minion

[root@chenshi2 ~]# systemctl start salt-minion
[root@chenshi2 ~]# ps aux|grep minion
root       1699  5.7  1.1 313648 21364 ?        Ss   10:54   0:00 /usr/bin/python /usr/bin/salt-minion
root       1702 10.2  2.2 567076 42388 ?        Sl   10:54   0:00 /usr/bin/python /usr/bin/salt-minion
root       1710  0.0  1.0 403656 19948 ?        S    10:54   0:00 /usr/bin/python /usr/bin/salt-minion
root       1777  0.0  0.0 112720   984 pts/0    R+   10:54   0:00 grep --color=auto minion

在服务器上启动master

[root@chenshi1 ~]# systemctl start salt-master
[root@chenshi1 ~]# ps aux|grep master
root       1156  0.0  0.1  89620  2080 ?        Ss   09:20   0:00 /usr/libexec/postfix/master -w
root       8916 10.8  2.1 388660 40368 ?        Ss   10:55   0:00 /usr/bin/python /usr/bin/salt-master
root       8925  0.0  1.0 305976 19848 ?        S    10:55   0:00 /usr/bin/python /usr/bin/salt-master
root       8930  0.0  1.8 469548 34060 ?        Sl   10:55   0:00 /usr/bin/python /usr/bin/salt-master
。
。
。

查看监听端口

[root@chenshi1 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      888/sshd            
tcp        0      0 0.0.0.0:4505            0.0.0.0:*               LISTEN      8930/python         
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1156/master         
tcp        0      0 0.0.0.0:4506            0.0.0.0:*               LISTEN      8936/python         
tcp6       0      0 :::22                   :::*                    LISTEN      888/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1156/master         

 

4.saltstack配置认证

master端和minion端通信需要建立一个安全通道,传输过程需要加密,所以得配置认证,也是通过密钥对来加密解密的
minion在第一次启动时会在/etc/salt/pki/minion/下生成minion.pem和minion.pub,其中.pub为公钥,它会把公钥传输给master(在发起认证的时候才会传输)
master第一次启动时也会在/etc/salt/pki/master下生成密钥对,当master接收到minion传过来的公钥后,通过salt-key工具接受这个公钥,一旦接受后就会在/etc/salt/pki/master/minions/目录里存放刚刚接受的公钥,同时客户端也会接受master传过去的公钥,把它放在/etc/salt/pki/minion目录下,并命名为minion_master.pub

以上过程需要借助salt-key工具来实现(需要关闭firewalld)

首次执行
[root@chenshi1 ~]# salt-key -a chenshi2
The following keys are going to be accepted:
Unaccepted Keys:
chenshi2
Proceed? [n/Y] y
Key for minion chenshi2 accepted.

再次执行

[root@chenshi1 ~]# salt-key 
Accepted Keys:
chenshi2
Denied Keys:
Unaccepted Keys:
chenshi1
Rejected Keys:

查看已接收的公钥

[root@chenshi1 ~]# ls /etc/salt/pki/master/minions
chenshi2

salt-key用法

-a  后面跟主机名,认证指定主机

• -A 认证所有主机

• -r  跟主机名,拒绝指定主机

• -R  拒绝所有主机

• -d 跟主机名,删除指定主机认证

• -D 删除全部主机认证

• -y 省略掉交互,相当于直接按了y

重启minion端可以让master读取到minion;删除key,然后使用-A和-y来全部通过keys

[root@chenshi1 minions]# rm -rf chenshi2 
[root@chenshi1 minions]# cd 
[root@chenshi1 ~]# salt-key 
Accepted Keys:
Denied Keys:
Unaccepted Keys:
chenshi1
Rejected Keys:
[root@chenshi1 ~]# salt-key 
Accepted Keys:
Denied Keys:
Unaccepted Keys:
chenshi1
chenshi2
Rejected Keys:

----------------------------------------------
[root@chenshi1 ~]# salt-key -A -y
The following keys are going to be accepted:
Unaccepted Keys:
chenshi1
chenshi2
Key for minion chenshi1 accepted.
Key for minion chenshi2 accepted.
[root@chenshi1 ~]# salt-key 
Accepted Keys:
chenshi1
chenshi2
Denied Keys:
Unaccepted Keys:
Rejected Keys:

salt-key操作对象是要在Unaccepted下

 

5.saltstack远程执行命令

这里的*表示所有已经签名的minion端,也可以指定一个

[root@chenshi1 ~]# salt '*' test.ping
chenshi2:
    True
chenshi1:
    True
 说明: 这里的*必须是在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@chenshi1 ~]# salt '*' cmd.run "hostname"
chenshi2:
    chenshi2
chenshi1:
    chenshi1


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


更加简洁的自动化运维工具,不需要在客户端上安装agent,基于python开发。可以实现批量操作系统配置、批量程序的部署、批量运行命令

转载于:https://my.oschina.net/u/3850968/blog/2231234

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值