目录
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、工具化:使用统一的工具进行管理
3、web化:
4、平台化:
5、服务化:
6、智能化:
3:saltstack三大功能
1.远程执行
2.配置管理
3.云管理
4:salt三种运行模式
(1)local(本地,一台机器玩耍,不建议)
(2)Master、Minion(通过server/agent的方式进行管理)1000台机器 25秒搞定
(3)Salt SSH (通过SSH方式进行管理,效率很低)1000台机器 83秒搞定
在这里有必要提一下salt的云管理,salt拥有强大的云管理功能,更支持如阿里云、亚马逊等一系列公有云的管理,so以后在创建阿里云主机的时候,就可以不需要登录相关账号密码,只需要一条命令即可创建。此外salt对openstack支持的也相当不错,同样能够管理openstack创建的虚拟机
5:salt支持的系统
从官网来看salt支持的系统有很多,如下所示
CentoS,RedHat,Fedora,Gentoo,Debian,MAC OS X,Ubutun,suse,freeBSD,OpenBSD
不过有必要提一点salt对Windows支持可能不太好,并且没有Windows的master端,因此十分不建议大家在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文件
[[email protected] ~]# vim /etc/salt/master
-------#修改位置1
file_roots: 将此处的注释取消 (406行)
base: 前面必须有两个空格 (407行)
–/srv/salt 前面必须有四个空格 (408行)
-------#修改位置2
pillar_roots: 将此处的注释取消 (529行)
base: 前面必须有两个空格 (530行)
- /srv/pillar 前面必须有四个空格
5.将saltstack服务启动
[[email protected] ~]# /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文件
[[email protected] /]# 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服务进行启动
[[email protected] ~]# /etc/init.d/salt-minion start
Starting salt-miniondaemon: [ OK ]
6.当我们回到master管理端执行salt-key命令就可以看到被找到的客户端
[[email protected] ~]# salt-key
Accepted Keys:
Denied Keys:
Unaccepted Keys:
web01
Rejected Keys:
以上结果显示,等待管理的主机有web01
8:salt-key命令的使用
常见参数:
参数 |
解释 |
-A |
同意并接受全部主机 |
-a |
指定接收的主机,支持通配符操作 |
-D |
删除全部已被管理主机(但是不建议这么做) |
-d |
指定主机,不在管理的指定主机 |
这里我们使用-A参数,同意并管理saltstack的所有客户端的主机
[[email protected] ~]# salt-key -A
The following keys are going to be accepted:
Unaccepted
Keys:
web01
Proceed? [n/Y] Y 这里配置选择同意
Key for minion web01 accepted.
[[email protected] ~]# 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以下是否成功管理)
[[email protected] ~]# sasalt "*" test.ping
web01:
True
web02:
True
salt“*” test.ping #注意这里支持通配符哦,*表示所有,当然依旧也可以指定主机,在这里面test表示模块而ping则是方法。注意这里面的ping可不是Linux里面ICMP协议的ping是salt自己独有的东西,True表示成功
二:批量执行命令
查看所有被管理端的磁盘利用率(批量执行命令)
[[email protected]/]# 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
通过远程执行命令查看客户端的内存使用情况
[[email protected]/]# 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参数。因此这个模块非常之强大。
二:批量传输复制文件
[[email protected] /]# 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这个模块这个缺点,不支持交互式的命令
[[email protected] ~]# salt “*” cmd.run “vim /etc/hosts”