一、初识运维
-
运维都做哪些事?
- 1.机房设备上下架
- 2.系统初始化
- 3.应用环境初始化
- 4.应用的部署 调试 配置 --->saltstack
- 5.代码的发部 ---> jenkins
- 6.服务监控(应用监控,系统监控(CPU 内存 硬盘))
- 7.数据备份...
-
自动化发展阶段
- 1,标准化,环境的统一(软件一致,版本一致,位置一致)
- 2,文档化,(比如宕机,通过文档操作)
- 3,工具化,(执行脚本,1,2,3(流程可能乱))
- 4,web 化,(按固定流程执行)
- 5,平台化,(运维平台,API接口(拿日志等),图表形式展示(直观))
- 6,服务化
- 7,智能化,(换硬盘-->机械手臂换)
二、初识saltstack
saltstack(管理工具)
并行机制,python开发,API接口-
主要功能
- 1,远程执行(命令)
- 2,配置管理(配置安装nginx)
- 3,云管理(此处不研究)
-
运行方式
- 1,Local(自己管自己)
- 2,Master、Minion(主从)<-----> 最常见
- 3,Salt SSH
支持系统
CentOS Redhat Fedora Gentoo Debian MAC OS
ubuntu suse freebsd......
Windows(只有Minion,只能被管)运行依赖包,yum安装,一键搞定依赖关系
python
zeromq(saltstack基于RPC
模式完成通信,用到的消息中间件就是zeromq
)
pyzmp
pycrypto(saltstack信息使用AES
方式加密解密,需要用到pycrypto
包)
msgpack-python
yaml
jinja2
三、saltstack操作
-
1、安装,提前准备两台虚拟机,一主一从,提前配好epel源
主(master):yum install salt-master -y
从(minion):yum install salt-minion -y
(Ubuntu执行):sudo apt-get install salt-minion
-
2、设为开机启动
参看链接:https://blog.csdn.net/qq_16743379/article/details/51325587
主:systemctl enable salt-master
从:systemctl enable salt-minion
-
3、配置
主:
- 1,
vim /etc/salt/master
- 2,搜索
file_roots(输入斜杠进行搜索)
- 3,将下面的注释打开(注意空格,2个,4个)
file_roots:(在416行) base: - /srv/salt
- 4,搜索
pillar_roots
- 5,将下面注释打开
pillar_roots:(在529行) base: - /srv/pillar
- 6,保存退出,启动:
systemctl start salt-master
从:(Ubuntu系统编辑内容相同,方式不同)
- 1,
vi /etc/salt/minion
- 2,
:set nu
,找到行号,大概在16行,修改master
的ip
master: 192.168.122.1
冒号后一个空格 - 3,搜索
#id
(没有修改过的),大概在78行。为id做个标识,名字随便起,方便管理。
id: slave-1
冒号后一个空格 - 4,保存退出启动:
systemctl start salt-minion
- 1,
-
4、管理(第一次有一个认证的过程(手动认证↓,自动认证(配置文件)))
主:
salt-key
(显示)
salt-key -A
: 允许所有小弟受管制(一般都是-A)
salt-key -a
: 指定某个小弟受管制[root@master / 02:23:15]# salt-key -A
The following keys are going to be accepted: Unaccepted Keys: slave-1 Proceed? [n/Y] Y Key for minion slave-1 accepted.
-
5、命令组成
命令 :salt
目标 : '*'(支持正则)模块 : -->命令
方法 : -->参数返回
-
6、官网
- saltstack 命令官网:saltstack命令
- saltstack 模块官网:saltstack-models
-
(Ⅰ),检查主机是否存活:
salt '*' test.ping
(*目标,所有)(test,模块)(ping,方法) slave-1: True (返回)
- 查看test其他命令:
salt '*' sys.list_functions test
-
salt --help
#即可查看salt帮助
[root@master 192.168.199.155 ~]$salt --help Usage: salt [options] '<target>' <function> [arguments] salt命令 参数 目标 salt模块的函数 远程执行的参数
- 查看test其他命令:
-
(Ⅱ),检查slave-1是否存活(前提是salt-minion已启动):
salt 'slave-1' test.ping
slave-1: Minion did not return. [No response] (slave关机,测试结果)
-
(Ⅲ),执行命令,返回结果【
cmd.run
】
salt '*' cmd.run 'df -h'
:执行'df -h'命令,交互式办不到,只能执行可以返回结果的
-
(Ⅳ),同步配置文件【文件的分发(
配置文件+命令
/salt-cp
)】
4.1,配置文件(yaml语法
),接下来执行命令先创建一个文件:
mkdir /srv/{salt,pillar}
进入到/srv/salt
下
创建sls文件vim host_file.sls
(文件名随便,后缀必须是sls)
写入:(注意空格,一定手写,不要复制粘贴)/etc/hosts:(文件路径) file.managed:(file模块的managed方法) - source: salt://files/hosts(指定本地文件的路径) - user: root - group: root - mode: 644
进入:cd /srv/salt
创建:mkdir files
进入:cd files
copy:cp /etc/hosts .
4.2,执行命令,同步文件配置:salt '*' state.sls host_file
4.3,或者执行,同样有效(此命令也可执行文件分发):salt-cp '*' /etc/hosts /etc/
返回值:{'slave-1': {'/etc/hosts': True}}
4.4,检测:分别查看主机和从机的hosts文件:cat /etc/hosts
,如果两者一致,证明文件分发成功。
- (Ⅴ),软件的安装【安装nginx】
5.1,
cd /srv/salt
(进入到salt文件夹)5.2,
vim nginx_install.sls
(写配置文件,命名无所谓,后缀必须为sls)-
5.3,写入下面内容:
5.4,执行命令,
salt '*' state.sls nginx_install
(注意下划线和中划线)
因为需要下载,所以会很慢。-
5.5,验证,访问一下:
curl -I 10.0.0.11
返回200即成功,如果失败,检查sls文件、命令、网络是否正常。
也可以使用
salt '*' pkg.install nginx
(只是下载)
salt '*' service.start nginx
(启动)
-
(Ⅵ),计划任务(每一个用户都有自己的计划任务)
查看:salt '*' cron.list_tab root(用户)
- 6.1,进入到salt里,
vim crontab.sls
- 6.2,写入以下内容
前提是从机
里有ntpdate
文件(没有需自创),按路径写入↓
/usr/sbin/ntpdate times.aliyun.com >>/dev/null: cron.present: - user: root(注意空格,否则报错) - minute: '*/5'
(分:minute 时:hour 日:daymonth 月:month 周:dayweek)
-
6.3,执行:
salt '*' state.sls crontab
6.4,验证:主机执行
salt '*' cron.list_tab root
或者 从机执行crontab -l
查看任务6.5,修改任务,直接修改文件,再执行一遍即可。
- 6.1,进入到salt里,
-
(Ⅶ),删除计划任务
- 7.1,进入到salt里,
vim del_cron.sls
- 7.2,写入一下内容
/usr/sbin/ntpdate times.aliyun.com >>/dev/null: cron.absent: - name: /usr/sbin/ntpdate times.aliyun.com >>/dev/null
- 7.3,执行:
salt '*' state.sls del_cron
- 7.4,验证:主机执行
salt '*' cron.list_tab root
或者 从机执行crontab -l
查看任务
- 7.1,进入到salt里,
(Ⅷ),检索静态信息数据
salt '*' grains.items
:(以键值形式展示)
salt '*' grains.item fqdn_ip4
:(只显示某一个数据)
salt '*' grains.item fqdn_ip4 os id
:(显示多个数据)(Ⅸ),其他
查看salt版本:salt-run manage.versions
四、windows安装salt-minion
- 1,下载,安装(自动添加环境变量)
官网安装:https://repo.saltstack.com/#windows - 2,按提示操作(在文件所在位置打开cmd窗口执行):
提示:Salt-Minion-2018.3.3-Py2-AMD64-Setup.exe /S /master=yoursaltmaster /minion-name=yourminionname
操作:Salt-Minion-2018.3.3-Py3-AMD64-Setup.exe /S /master=10.0.0.10 /minion-name=192.168.0.109
(安装,启动(会在服务自动开启,如果没开启,手动开启)) - 3,启动后,查看master端(linux机):
salt-key
- 4,接收,执行命令(windows命令和linux命令不同,有些会没有效果)。
分发文件(成功):salt-cp '192.168.0.109' ./test.py C:/
查看ip(有结果):salt '192.168.0.109' cmd.run 'ipconfig'
打开计算机(没打开):salt '192.168.0.109' cmd.run 'calc'
查看各个salt版本:salt-run manage.versions
五、连接
SaltStack 的通讯及安全机制:SaltStack 的通讯及安全机制
SaltStack 详解:SaltStack 详解博客
SaltStack 常用命令:SaltStack 常用命令1
SaltStack 常用命令:SaltStack 常用命令2
SaltStack 官网:saltstack官网