首页 > 代码库 > SaltStack基础入门

SaltStack基础入门

目录

1:自动化运维可以实现的功能-----------------------------------------1

2:自动化发展的阶段-------------------------------------------------2

3:saltstack三大功能------------------------------------------------3

4:salt三种运行模式-------------------------------------------------4

5:salt支持的系-----------------------------------------------------5

6:安装配置saltstack(master端)------------------------------------6

7:安装配置saltstack(monion端)------------------------------------7

8:salt-key命令的使用-----------------------------------------------8

9:saltstack远程执行命令--------------------------------------------9


1:自动化运维可以实现的功能

0)需求分析

1)机房设备上下架

2)系统初始化

3)应用环境初始化

4)应用的部署调试  配置……………….saltstack

5)代码的发布(jenkins + ant + svn

6)服务监控应用

7)数据备份

虚拟化的优势:弹性,扩展性,充分利用硬件资源。

 

2:自动化发展的阶段

1、标准化的制定,软件环境版本的统一。

如果想做自动化必须要制定标准化,不然会产生很多问题。

2文档化:将搭建文档进行标准化

2工具化:使用统一的工具进行管理

3web

4平台化

5服务化

6智能化

 

3:saltstack三大功能

1.远程执行

2.配置管理

3.云管理

 

4:salt三种运行模式

1local(本地,一台机器玩耍,不建议)

2MasterMinion(通过server/agent的方式进行管理)1000台机器 25秒搞定

3Salt SSH (通过SSH方式进行管理,效率很低)1000台机器 83秒搞定

  在这里有必要提一下salt的云管理,salt拥有强大的云管理功能,更支持如阿里云、亚马逊等一系列公有云的管理,so以后在创建阿里云主机的时候,就可以不需要登录相关账号密码,只需要一条命令即可创建。此外saltopenstack支持的也相当不错,同样能够管理openstack创建的虚拟机

 

5:salt支持的系统

从官网来看salt支持的系统有很多,如下所示

CentoSRedHatFedoraGentooDebianMAC OS XUbutunsusefreeBSDOpenBSD

技术分享

                           

不过有必要提一点saltWindows支持可能不太好,并且没有Windowsmaster端,因此十分不建议大家在windows上使用salt

 

6:安装配置saltstack(master端)


1.安装saltstack需要配置epel

wget -O /etc/yum.repos.d/epel.repo 

技术分享

http://mirrors.aliyun.com/repo/epel-6.repo

yum repolist


2.安装master管理端

yum install salt-master -y

rpm -qa salt-master


3.设置saltstack开机自动启动

chkconfig salt-master on


4.配置/etc/salt/master文件

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

-------#修改位置1

file_roots:        将此处的注释取消     (406行)

 base:         前面必须有两个空格    (407行)

    /srv/salt    前面必须有四个空格    (408行)

-------#修改位置2

pillar_roots:        将此处的注释取消    (529行)

 base:              前面必须有两个空格    (530行)

     - /srv/pillar   前面必须有四个空格


5.saltstack服务启动

[root@m01 ~]# /etc/init.d/salt-master start

Starting salt-masterdaemon:                  [  OK  ]

 

7:安装配置saltstack(monion端)


1.安装saltstack需要配置epel

wget -O /etc/yum.repos.d/epel.repo 

技术分享

http://mirrors.aliyun.com/repo/epel-6.repo

yum repolist


2.安装minion客户端

yum install salt-minion -y

rpm -q salt-minion


3.配置/etc/salt/minion文件

[root@nfs01 /]# vim /etc/salt/minion

# Set the location of the salt master server. Ifthe
master server cannot be

# resolved, then the minion will fail to start.

master: 172.16.1.61 将此行取消注释,并填写master管理端的IP地址(16行),冒号前必须空格


# Explicitly declare the id for this minion to use,
if left commented the id

# will be the hostname as returned by the python
call: socket.getfqdn()

# Since salt uses detached ids it is possible torun
multiple minions on the

# same machine but with different ids, this can be
useful for salt compute

# clusters.  

id: web01     将此行取消注释,这里是本机在管理端显示的名称(第78行 冒号前必须空格


当然要想简单也可以采用如下方法

sed -i ‘17i master: 172.16.1.61‘ /etc/salt/minion

sed -i ‘78i id: web01‘ /etc/salt/minion


4.设置saltstack客户端开机自启动

chkconfig salt-minion on

chkconfig --list salt-minion


5.minion服务进行启动

[root@web01 ~]# /etc/init.d/salt-minion start

Starting salt-miniondaemon:                      [  OK  ]


6.当我们回到master管理端执行salt-key命令就可以看到被找到的客户端

[root@m01 ~]# salt-key

Accepted Keys:

Denied Keys:

Unaccepted Keys:

web01

Rejected Keys:


以上结果显示,等待管理的主机有web01

 

8:salt-key命令的使用


常见参数:

参数

解释

-A

同意并接受全部主机

-a

指定接收的主机,支持通配符操作

-D

删除全部已被管理主机(但是不建议这么做)

-d

指定主机,不在管理的指定主机


这里我们使用-A参数,同意并管理saltstack的所有客户端的主机

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

The following keys are going to be accepted:

Unaccepted
Keys:

web01

Proceed? [n/Y] Y         这里配置选择同意

Key for minion web01 accepted.


[root@m01 ~]# salt-key     当我们再次查看的时候就会发现已经被管理

Accepted
Keys:

web01                 表示已经被saltstack

master端管理

Denied Keys:

Unaccepted Keys:

Rejected Keys:

状态说明:

主机状态

中文解释

Unaccepted Keys:

未被接受或同意的主机key

Denied Keys:

已经被拒绝的主机key

Rejected Keys:

明确拒绝的key,主接收任何通信

Accepted Keys:

已经同意被管理的主机key

 

9:saltstack远程执行命令


命令简单语法:salt “目标” 模块.方法 “命令”


--------增加一台机器,web02


一:检查主机存活状态

下面我们来执行第一个远程命令(利用test模块来ping以下是否成功管理)

[root@m01 ~]# sasalt "*" test.ping

web01:

    True

web02:

    True


salt“*” test.ping    #注意这里支持通配符哦,*表示所有,当然依旧也可以指定主机,在这里面test表示模块而ping则是方法。注意这里面的ping可不是Linux里面ICMP协议的pingsalt自己独有的东西,True表示成功 


二:批量执行命令

查看所有被管理端的磁盘利用率(批量执行命令)

 [root@m01/]# salt "*" cmd.run "df -h"

web01:

Filesystem      Size  Used   Avail  Use%  Mounted on

/dev/sda3      6.2G  1.5G4   4G    26%    /

tmpfs           242M  12K    242M   1%   /dev/shm

/dev/sda1      190M  36M    145M   20%   /boot

web02:

Filesystem      Size   Used  Avail   Use%   Mounted on

/dev/sda3      6.2G   1.5G  4.4G    26%    /

tmpfs           242M   12K   242M    1%     /dev/shm

/dev/sda1      190M   36M   145M    20%    /boot


通过远程执行命令查看客户端的内存使用情况

 [root@m01/]# salt "*" cmd.run "free -h"

web01:

         total    used    free   shared    buffers     cached

Mem:       475M     313M    161M    236K     19M       198M

-/+ buffers/cache:     95M     379M

Swap:     767M     0B     767M

web02:

         total    used     free   shared    buffers     cached

Mem:       475M     316M     159M    236K      22M       198M

-/+ buffers/cache:     95M      379M 

Swap:      767M     0B      767M


salt"*" cmd.run "free -h"  #其中cmd为模块,而run是方法df -h则是传入的参数.此时就能够返回各个主机的磁盘使用情况。cmd下的run方法后面可以接任何shell参数。因此这个模块非常之强大。


二:批量传输复制文件

[root@m01 /]# salt-cp "*" /test.txt /

 ‘web01‘:{‘/test.txt‘: True},

 ‘web02‘:{‘/test.txt‘: True}}


 salt-cp "*" /test.txt /  #这是批量执行拷贝传输文件的命令,是将master的test.txt文件复制到所有monion端的根(/)下‘/test.txt‘: True 表示成功


----------------------------------------------------------------------

# 针对cmd.run这个模块这个缺点,不支持交互式的命令

[root@m01 ~]# salt * cmd.run vim /etc/hosts

本文出自 “土豆” 博客,请务必保留此出处http://zhaoyulin.blog.51cto.com/11665101/1843104

SaltStack基础入门