码迷,mamicode.com
首页 > 其他好文 > 详细

SaltStack安装与配置

时间:2016-08-03 15:49:47      阅读:306      评论:0      收藏:0      [点我收藏+]

标签:批量执行   自动化管理   远程执行   saltstack   

一、What is Saltstack

1、Salt介绍

Salt,汉语意思是盐。

Salt对于运维攻城狮来说,就像盐对人体体征一样重要;哈哈哈,我是这么意淫的。

SaltStack是一个服务器基础架构集中化管理平台,具有远程执行、配置管理、云管理等功能。

SaltStack是基于Python语言实现的;所以对于熟悉python的运维来说,那非常有亲切感,容易上手,而且yaml格式也类似于python的缩进,并且非常严格,刚入门的时候非常酸爽,因为你一不小心,多一个或者少一个空格,就容易出错,排错还挺费劲。

通过部署SaltStack环境,我们可以做到对成千上万台服务器批量执行命令;可以根据不同的业务线进行配置集中化管理、文件分发、服务器数据采集、操作系统基础以及软件包的管理,总之非常方便。

SaltStack是运维攻城狮们提高工作效率,规范化配置和操作的利器。有了它,你就可以吃着火锅,唱着歌,愉快地工作了。

2、特点

(1)部署简单、方便;

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

(3)主从集中化管理;

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

(5)master和minion基于证书认证,安全;

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

3、四种运行方式

(1)Local,即在本地运行

(2)Master/Minion模式, C/S模式

(3)Syndic 代理模式

(4)Salt SSH模式,这种模式不用安装minion 也可以收集。

二、Salt安装

1、环境准备

IP地址		主机名			操作系统
192.168.56.11	linux-node1		CentOS7
192.168.56.12	linux-node2		CentOS7

2、安装salt

打开http://repo.saltstack.com/,这是SaltStack自己的repo库, 进去后,你可以看到基于各种平台的安装方法

安装SaltStack的repository

yum install https://repo.saltstack.com/yum/redhat/salt-repo-2016.3-1.el7.noarch.rpm

两台机器上都安装repo源。

接下来安装Salt

yum install -y salt-master salt-minion

注:在node1上安装master和minion,在node2上只安装minion

3、配置salt

启动master

systemctl start salt-master

启动minion,先进行配置,让minion知道它的老大是谁,谁在管它

vi /etc/salt/minion
修改
master: 192.168.56.11    #冒号后有空格,切记
id:
每台服务器有一个唯一标识符号;默认可以不做配置,为主机名

启动minion
systemctl start salt-minion

查看minion的id

[root@linux-node1 ~]# cd /etc/salt/
[root@linux-node1 /etc/salt]# ll
total 112
-rw-r----- 1 root root  2626 Jun 11 04:43 cloud
drwxr-xr-x 2 root root     6 Jun 14 04:42 cloud.conf.d
drwxr-xr-x 2 root root     6 Jun 14 04:42 cloud.deploy.d
drwxr-xr-x 2 root root     6 Jun 14 04:42 cloud.maps.d
drwxr-xr-x 2 root root     6 Jun 14 04:42 cloud.profiles.d
drwxr-xr-x 2 root root     6 Jun 14 04:42 cloud.providers.d
-rw-r----- 1 root root 39184 Jul 24 04:41 master
drwxr-xr-x 2 root root    38 Jul 24 04:44 master.d
-rw-r----- 1 root root 31601 Jun 29 09:45 minion
drwxr-xr-x 2 root root    27 Jun 24 19:01 minion.d
-rw-r--r-- 1 root root    23 Jun 24 18:54 minion_id
drwxr-xr-x 4 root root    32 Jun 24 18:42 pki
-rw-r----- 1 root root 26460 Jun 11 04:43 proxy
-rw-r----- 1 root root   344 Jun 11 04:43 roster
[root@linux-node1 /etc/salt]# cat minion_id 
linux-node1.example.com

pki目录是minion第一次启动后创建的目录。
使用tree命令查看pki目录,可以看到minion和master两个目录。
在minion目录下有minion.pem和minion.pub。
minion会把自己的公钥发给master。

查看master下目录情况

cd /etc/salt/master/pki/
在pki下同样有两个目录master和minion
在master目录下,在master同意添加minion之前,minion的公钥是存放在minions_pre目录下的,而且是以minion的ID存放公钥。

纳管minion方法
使用salt-key查看master下有哪些minion

执行salt-key -a linux-node*

然后执行salt-key,查看发生了什么变化
[root@linux-node1 /etc/salt/pki]# salt-key 
Accepted Keys:
linux-node1.example.com
linux-node2.example.com
Denied Keys:
Unaccepted Keys:
Rejected Keys:
再次查看公钥位置,会发现公钥已经被存放到/etc/salt/master/pki/minions


[root@linux-node1 /etc/salt/pki]# tree ../pki/
../pki/
├── master
│   ├── master.pem
│   ├── master.pub
│   ├── minions
│   │   ├── linux-node1.example.com
│   │   └── linux-node2.example.com
│   ├── minions_autosign
│   ├── minions_denied
│   ├── minions_pre
│   └── minions_rejected
└── minion
    ├── minion_master.pub
    ├── minion.pem
    └── minion.pub

注意:minion上也有master的公钥,这样他们就可以通信了。

[root@linux-node2 salt]# cd pki/
[root@linux-node2 pki]# tree
.
├── master
└── minion
    ├── minion_master.pub
    ├── minion.pem
    └── minion.pub

4、远程执行

例1、
salt ‘*‘ test.ping
‘*‘在shell里面是有意义的,所有用引号引起来。此处是master远程执行的目标
test是一个模块
ping是模块里的一个方法,用于master和minion的通信。

[root@linux-node1 /etc/salt/pki]# salt ‘*‘ test.ping
linux-node2.example.com:
    True
linux-node1.example.com:
    True
例2、
[root@linux-node1 /etc/salt/pki]# salt ‘linux-node1*‘ cmd.run ‘w‘
linux-node1.example.com:
     08:03:10 up 10:17,  2 users,  load average: 0.21, 0.14, 0.08
    USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
    root     tty1                      06:56    1:05m  0.18s  0.18s -bash
    root     pts/0    192.168.56.1     07:13    6.00s  1.51s  1.38s /usr/bin/python /usr/bin/salt linux-node1* cmd.run w

例3、
[root@linux-node1 /etc/salt/pki]# salt ‘linux-node1*‘ cmd.run ‘ls -l /tmp‘
linux-node1.example.com:
    total 32
    drwxr-xr-x 2 root   root       6 Jul 17 19:39 hsperfdata_root
    -rw-rw-r-- 1 zabbix zabbix     0 Jul 17 19:33 localhost-mysql_cacti_stats.txt
    -rw------- 1 root   root    1411 May 27 10:35 localhost.crt
    -rw------- 1 root   root    1675 May 27 10:35 localhost.key
    -rw-rw-r-- 1 zabbix zabbix    43 Jul 17 19:35 netstat.tmp
    drwxr-xr-x 3 root   root      17 Jul 19 07:39 pear
    -rw-r--r-- 1 root   root    1188 Jul 24 00:20 php_errors.log
    -rw-rw-r-- 1 zabbix zabbix 16308 Jul 17 17:58 sms.log
    drwx------ 3 root   root      16 Jul 23 21:46 systemd-private-1718f11d5b814680841058906c1429c8-cobblerd.service-x1ZIHQ
    drwx------ 3 root   root      16 Jun 24 11:07 systemd-private-ee2a5374182b40fb83bb256efa24f62b-cobblerd.service-hF5d1q
    drwx------ 3 root   root      16 Jun 24 11:04 systemd-private-ee2a5374182b40fb83bb256efa24f62b-httpd.service-1ehcOR
    drwx------ 3 root   root      16 Jun 24 11:08 systemd-private-ee2a5374182b40fb83bb256efa24f62b-mariadb.service-qOJnmO
[root@linux-node1 /etc/salt/pki]# 

例4、重启zabbix-agent
[root@linux-node1 /etc/salt/pki]# salt ‘linux-node1*‘ cmd.run ‘systemctl restart zabbix-agent‘
linux-node1.example.com:
这里没有返回,其实跟linux差不多,没有消息就是好消息

本文出自 “Jacky鑫” 博客,请务必保留此出处http://jackyxin.blog.51cto.com/1976631/1833762

SaltStack安装与配置

标签:批量执行   自动化管理   远程执行   saltstack   

原文地址:http://jackyxin.blog.51cto.com/1976631/1833762

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!