十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
系统运维 Saltstack介绍
创新互联服务项目包括广南网站建设、广南网站制作、广南网页制作以及广南网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,广南网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到广南省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
Saltstack官方文档: dock.saltstack.com
Saltstack项目:github.com/saltstack
Saltstack中文网:wiki.saltstack.cn
Salt是基础平台管理工具。只需花费数分钟即可运行,扩展性足以支撑管理上万台服务器,数秒钟即可完成数据传递。
Salt可以做什么:
1. 配置管理
2. 远程命令
3. 包管理
应用安装
应用步骤:
本环境假设为离线环境,需要使用离线包安装此服务
参考文档
https://blog.csdn.net/u014703013/article/details/81288969
1. 先使用wget 下载网站的安装包,为了后面离线安装作准备。
以下这个是例子,根据你的发行版是啥而具体选择啥版本:
wget -r -c -np -P c:\\satl https://repo.saltstack.com/yum/redhat/6.0/x86_64/2016.11/
说明:
-r 表示递归下载
-np 不下载旁站连接
-c 断点续传
-nd 递归下载时不创建一层一层的目录,把所有的文件下载到当前目录(不可取,这样不会把该目录下一级目录一并下载出来。)
-P 表示下载那个目录
2. 把下载到的文件导进服务器,做一个本地安装源
4. 编辑repo文件(这边为了方便直接在media的repo上增加本地路径)
5. 这边直接安装salt
服务端:
yum install salt
yum install salt-master -y
/etc/init.d/salt-master start
chkconfig salt-master on
客户端:
yum install –y salt-minion
vi /etc/salt/minion -----编辑配置文件
master: 192.168.24.32 ----- master端地址
cachedir: /etc/salt/modules -----模块目录
log file: /var/log/salt/minion.log -----日志路径
log level: warning -----日志级别
master: 192.168.24.4
cachedir: /etc/salt/modules
log file: /var/log/salt/minion.log
log level: warning
/etc/init.d/salt-minion start
chkconfig salt-minion on
服务和客户端都安装完后允许这些客户端
salt-key list
salt-key -A
测试连通性
[root@localhost ~]# salt \'*\' test.ping
lnmp02:
True
nfs-server:
True
lnmp01:
True
一些简单的即时管理,在服务端对客户机执行命令,无法执行一些例如top的即时命令。
配置 分组管理
编辑/etc/salt/master文件将成员按划分。可以根据系统版本、业务等划分不同的服务器。
vi /etc/salt/master
nodegroups:
group1: \'L@lnmp01,lnmp02\'
group2: \'E@lnmp0[0-9]\'
上面的是两种写法,“group1”可以自定义
执行命令查看一下
定义环境,定义该环境的模板存放在哪个路径下
环境配置:
环境实例测试: 配置模板实现使用salt服务端作为跳机无密码登录客户端 编辑/etc/salt/master
环境配置:
file_roots:
base
-/srv/salt
创建目录,创建mi.py脚本[root@lnmp01 _modules]# ls
mi.py
[root@lnmp01 _modules]# pwd
/srv/salt/_modules
创建ssh公钥与私钥
ssh免密码登录原理:
[root@lnmp01 ~]# ssh-keygen 这个操作一路回车就可以
公钥文件在:
[root@lnmp01 ~]# cat ~/.ssh/id_rsa
id_rsa id_rsa.pub
得出的字符串写入到mi.py上
#!/usr/bin/env python
# Import Python Lib
import os
def sshkey():
\'\'\'
append salt manage machine public ssh-key
CLI Example:
salt \'*\' ssh.sshkey
\'\'\'
local_hostname = \'backup\'
manage_pubkey = \' ssh-rsa /…….省略……== root@backup\\n\'
if not os.path.isfile(\'/root/.ssh/authorized_keys\'):
if not os.path.isdir(\'/root/.ssh/\'):
os.mkdir(\'/root/.ssh/\')
file = open (\'/root/.ssh/authorized_keys\',\'w\')
file.write(manage_pubkey)
file.flush()
file.close()
os.chmod(\'/root/.ssh/authorized_keys\',0600)
return True
else:
file = open (\'/root/.ssh/authorized_key\',\'r\')
if local_hostname not in file.read():
f = open(\'/root/.ssh/authorized_key\',\'a\')
f.write(manage_pubkey)
f.flush()
f.close()
return True
把模块推到客户端处
salt \'*\' saltutil.sync_all(这命令的意思是把所有模块推到客户端处)
执行salt \'*\' mi.sshkey
查看公钥
ssh lnmp01测试能否无密码登录
一键部署好环境 基本原理
1.top.sls定义环境、所匹配的主机、配置什么模块(服务)
2.每个服务目录下有个init.sls,这个定义着这个模块是执行什么行为(推送配置文件、判断操作、执行命令等等)
3.这些准备工作完成后,执行salt命令使之推送到指定的客户端下实现一键群发配置。
创建目录、文件现在/srv/salt目录上创建yum、sysctl 、httpd目录,并且创建top.sls文件
编辑top.sls文件
内容如下
base:
\'lnmp0[1-2],nfs-server\':
- yum
- sysctl
- httpd
- httpd.oldboy
首先编辑yum模块在yum目录创建init.sls文件
将服务端/srv/salt/yum/file/CentOS-Base.repo 推到客户端/etc/yum.repos.d/CentOS-Base.repo这个位置。
/etc/yum.repos.d/2408c7.repo:
file.managed:
- source: salt://yum/file/2408c7.repo
- mode: 644
- owner: root
- group: root
cmd.wait: -----将文件推到客户端的时候会比对文件MD5值,如果不一致会执行以下命令(清理缓存,重新建立缓存)
- name: yum.clean all;yum makecache
- onlyif: test -f /etc/yum.repos.d/2408c7.repo ----测试文件是否存在
- watch: ---判断这个文件是不是改变
- file: /etc/yum.repos.d/2408c7.repo
------------------------------------------------------------------------------------------------
/etc/yum.repos.d/2408c6.repo:
file.managed:
- source: salt://yum/file/2408c6.repo
- mode: 644
- owner: root
- group: root
cmd.wait:
- name: yum.clean all;yum makecache
- onlyif: test -f /etc/yum.repos.d/2408c6.repo
- watch:
- file: /etc/yum.repos.d/2408c6.repo
在服务端/srv/salt/yum/file目录下应该有2408c6.repo文件在里面
salt –N ‘all’ state.sls yum 同步指定的模块
salt –N ‘all’ state.highstate 同步所有的模块