一、SaltStack简介
salt是一个新的基础平台管理工具, 只需要花费数分钟即可运行起来, 扩展性足以支撑管理上万台服务器, 数秒钟即可完成数据传递. 经常被描述为Func加强版+Puppet精简版. SaltStack采用C/S架构.
简单的说: salt是一种全新的基础设施管理方式, 部署轻松, 在几分钟内可运行起来, 扩展性好. 很容易管理上万台服务器, 速度快, 服务器之间秒级通信. salt底层采用动态的连接总线, 使其可以用于编配, 远程执行, 配置管理等等.
最为重要的一点, salt是开源的. 而且是python实现的自动化运维工具, 这意味着我们可以对其进行一些改动, 在其基础之上加上我们想要的功能, 对其进行二次开发.
二、环境介绍
系统Centos_6.6 x64两台, 一台为master,另一台为minion.
三、SaltStack安装
*** 1. 如果机器内没有epel, 请下载.(2台机器都执行)***
[root@office-vps4051 ~]# rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel-release-6-8.noarch.rpm
*** 2. 由于salt的master和minion包是分开的, 所以机器需要安装相应的包, 通常情况下, 一个master会对应多个minion***
*** 2.1 在master运行***
[root@office-vps4048 ~]# yum -y install salt-master
*** 2.2 在minion上运行***
[root@office-vps4051 ~]# yum -y install salt-minion
四、SaltStack配置
*** 1. 修改master配置文件***
[root@office-vps4048 ~]# vim /etc/salt/master
interface: 192.168.1.48 #服务端ip
[root@office-vps4048 ~]# /etc/init.d/salt-master start
*** 2. 修改被管理端(minion)***
[root@office-vps4051 ~]# vim /etc/salt/minion
master: 192.168.1.48 #master的主机名或ip
id: vps4051 #本机标识符,默认为主机名
[root@office-vps4051 ~]# /etc/init.d/salt-minion start
*** 3. 日志文件默认路径***
[root@office-vps4048 ~]# tail -f /var/log/salt/master #master
[root@office-vps4051 ~]# tail -f /var/log/salt/minion #minion
*** 4. 接受minion的托管请求***
minion向master投诚后, 还需要master接受才行. 这个过程叫做”授信”.
[root@office-vps4048 ~]# salt-key -L
其中Unaccepted Keys是未许可的minion. 可使用下面的命令通过认证
[root@office-vps4048 ~]# salt-key -a vps4051
五、测试
*** 1. 基本操作命令通用格式***
格式: 命令 对象 执行模块 参数
salt ‘*’ cmd.run “ping -c 4 www.baidu.com"
*** 2. 安装配置好之后, 首先要测试一下连通性, salt会列出每个认证过的minion连通状态(true或false).***
[root@office-vps4048 ~]# salt '*' cmd.run "uptime"
*** 3. 批量重启服务***
[root@office-vps4048 ~]# salt '*' cmd.run "/etc/init.d/httpd restart"
*** 4. 批量查看系统时间***
[root@node1 ~]# salt '*' cmd.run "uptime"
注意, 默认情况下master和minion之间使用以下端口进行通信:
4505(publish_port):salt的消息发布系统
4506(ret_port):salt客户端与服务端通信的端口
cmd.run 为模块,又称之为超级命令. 可以执行Linux中的任何命令.
六、Salt States
SLS(代表Salt State文件)是Salt State系统的核心. SLS描述了系统的目标状态, 由格式简单的数据构成. 这经常被称作配置管理.
*** 1. 默认的数据 - YAML***
这些数据确保名为apache的软件包处于已安装状态, 服务进程apache处于运行状态.
第1行是这段数据的ID, 被称作ID声明. 这个ID是要将执行这些命令的名字.
第2行和第4行表示State声明开始, 使用了pkg和service这两个states. pkg使用系统本地的软件包管理器管理将要安装的软件, service管理系统守护进程.
第3行和第5行是要执行的funcation. 这些function定义了名字为ID的软件包和服务的目标状态. 此例中, 软件包应当处于已安装状态, 服务必须运行.
第6行关键字require. 这呗称为必要语句(Requisite), 它确保了apache服务只有在成功安装软件后才会启动.
网友评论