Saltstack配置安装apache

同学们好我是MK 简单聊两句salstack

主要是以了解工作原理为主!有想学习的同学可以关注并私信老师,获取学习资料!

 

一、基础介绍
SaltStack简单介绍

SaltStack是一种全新的基础设施管理方式,是一个服务器基础架构集中化管理平台,几分钟内便可运行起来,速度够快,服务器之间秒级通讯,扩展性好,很容易批量管理上万台服务器,显著降低人力与运维成本;它具备配置管理、远程执行、监控等功能,一般可以理解为简化版的puppet和加强版的func;通过部署SaltStack环境,可以在成千上万台服务器上做到批量执行命令,根据不同业务特性进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等,SaltStack是运维人员提高工作效率、规范业务配置与操作的利器。SaltStack基于Python语言实现,结合轻量级消息队列(ZeroMQ)(SaltStack的通信模式总共分为2种模式:ZeroMQ、REAT,鉴于REAT目前还不是太稳定,通常会选择ZeroMQ模式)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建。

Saltstack运行模式

Local:本地,一台机器玩,不建议

Master/Minion:通过server/agent的方式进行管理,效率很高(批量管理1000台机器,25秒搞定)

Salt SSH:通过SSH方式进行管理,效率相对来说比较低(批量管理1000台机器,83秒搞定)

Saltstack三大功能

远程执行(执行远程命令)

配置管理(状态管理)

云管理

Saltstack特征

1)部署简单、方便;

2)支持大部分UNIX/Linux及Windows环境;

3)主从集中化管理;

4)配置简单、功能强大、扩展性强;

5)主控端(master)和被控端(minion)基于证书认证,安全可靠;

6)支持API及自定义模块,可通过Python轻松扩展。

clip_image002

Master与Minion认证

1)minion在第一次启动时,会在/etc/salt/pki/minion/(该路径在/etc/salt/minion里面设置)下自动生成minion.pem(private key)和 minion.pub(public key),然后将 minion.pub发送给master。

2)master在接收到minion的public key后,通过salt-key命令accept minion public key,这样在master的/etc/salt/pki/master/minions下的将会存放以minion id命名的 public key,然后master就能对minion发送指令了。

Master与Minion的连接

1)SaltStack master启动后默认监听4505和4506两个端口。4505(publish_port)为saltstack的消息发布系统,4506(ret_port)为saltstack客户端与服务端通信的端口。如果使用lsof 查看4505端口,会发现所有的minion在4505端口持续保持在ESTABLISHED状态。

clip_image004

2)minion与master之间的通信模式如下

clip_image002[4]

29.2 SaltStack 安装配置过程

服务端:xuegod63:

IP:192.168.0.63

Hostname:xuegod63.com

被控端:xuegod64

IP:192.168.0.64

Hostname:xuegod64.com

1、配置FQDN,让ip和主机名对应

[root@xuegod63 ~]# vim /etc/hosts

192.168.0.63 xuegod63 xuegod63.com

192.168.0.64 xuegod64 xuegod64.com

[root@xuegod64 ~]# cat /etc/hosts

192.168.0.64 xuegod64 xuegod64.com

192.168.0.63 xuegod63 xuegod63.com

2、两台机器都关闭防火墙和Selinux

3、服务组件安装:

[root@xuegod63 ~]# yum install epel-release -y #安装 epel源

[root@xuegod63 ~]# yum install salt-master salt-minion -y #安装服务端和被监控端服务

[root@xuegod64 ~]# yum install epel-release -y && yum install salt-minion –y

#被控端:安装被监控端服务

4、服务启动:

配置主控服务:

[root@xuegod63 ~]# vim /etc/salt/minion

在16行下面增加一行:

master: 192.168.0.63 ##说明服务端的地址

修改python编写的配置文件千万注意缩进(空格)

启动主控端服务:

[root@xuegod63 ~]# systemctl start salt-master

[root@xuegod63 ~]# systemctl start salt-minion

配置被控端服务:

[root@xuegod64 ~]# vim /etc/salt/minion

在16行下面增加一行:

master: 192.168.0.63 ##指定服务端的地址

启动被监控服务:

[root@xuegod64 ~]# systemctl start salt-minion

启动完,可以查看下进程,可以看到相关服务是python来执行运行的

[root@xuegod63 ~]# ps aux|grep salt

root 1772 0.0 2.0 288104 21088 ? S 09:46 0:00 /usr/bin/python2.6 /usr/bin/salt-master –d

root 2166 0.1 2.5 442228 25216 ? S 09:46 0:00 /usr/bin/python2.6 /usr/bin/salt-minion –d

5、配置认证

下面认证操作都是在xuegod63上操作:

salt-key -a xuegod64.com ##增加一个xuegod64的密钥认证

[root@xuegod63 ~]# salt-key -a xuegod64.com

The following keys are going to be accepted:

Unaccepted Keys:

xuegod64.com

Proceed? [n/Y] y

Key for minion xuegod64.com accepted.

查看已经签名的客户端:

[root@xuegod63 ~]# salt-key -A

Accepted Keys:

xuegod64.com

Denied Keys:

Unaccepted Keys:

xuegod63.com

Rejected Keys:

签名完成,可以在被监控端看到生成的密钥minion_master.pub

[root@xuegod64 ~]# cd /etc/salt/pki/minion/

[root@xuegod64 minion]# ls

minion_master.pub minion.pem minion.pub

Saltstack 配置管理服务

配置安装apache

[root@xuegod63 ~]# vim /etc/salt/master

取消406-408行的注释

406 file_roots:

407 base:

408 - /srv/salt/

创建配置文件存储目录

[root@xuegod63 ~]# mkdir /srv/salt

[root@xuegod63 ~]#cd /srv/salt

创建入口配置文件

[root@xuegod63 salt]# vim top.sls

base:

'xuegod64.com':

- apache

意思是指定客户端上执行apache的模块

重启服务:

[root@xuegod63 salt]# systemctl restart salt-master

创建编写apache模块的配置文件

[root@xuegod63 salt]# vim /srv/salt/apache.sls

apache-service:

pkg.installed:

- names:

- httpd

- httpd-devel

service.running:

- name: httpd

- enable: True

注意:行对齐 -有空格

apache-service是ID的名称,自定义的。pkg.installed为包安装函数,下面是要安装的包的名字。service.running也是一个函数,来保证指定的服务启动,enable表示开机启动。

配置好文件,执行

[root@xuegod63 salt]# salt 'xuegod64.com' state.highstate

clip_image002

查看被控端,已经安装成功。

clip_image004

 

注: 大家学习saltstack过程中严格语法标准!

本节主要讲述工作原理!如果想深入学习自动化运维,可以关注并私信老师获取学习资料!

猜你喜欢

转载自blog.51cto.com/xuegod/2324198
今日推荐