Saltstack_使用指南01_部署
1. 主机规划
|
服务器名称 |
操作系统版本 |
内网IP |
外网IP(模拟) |
Hostname |
部署模块 |
|
salt100 |
CentOS7.5 |
172.16.1.100 |
10.0.0.100 |
salt100 |
salt-master、salt-minion |
|
salt01 |
CentOS7.5 |
172.16.1.11 |
10.0.0.11 |
salt01 |
salt-minion |
|
salt02 |
CentOS7.5 |
172.16.1.12 |
10.0.0.12 |
salt02 |
salt-minion |
|
salt03 |
CentOS7.5 |
172.16.1.13 |
10.0.0.13 |
salt03 |
salt-minion |
Saltstack文档
https://docs.saltstack.com/en/latest/contents.html
1.1. 机器hosts文件修改
salt100、salt01、salt02、salt03的hosts文件都追加如下信息。
这样主机名相互之间可以解析。
[root@salt100 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
:: localhost localhost.localdomain localhost6 localhost6.localdomain6 172.16.1.11 salt01
172.16.1.12 salt02
172.16.1.13 salt03
172.16.1.14 salt04
172.16.1.15 salt05
172.16.1.100 salt100
2. 添加用户账号
说明:
1、 运维人员使用的登录账号;
2、 所有的业务都放在 /app/ 下「yun用户的家目录」,避免业务数据乱放;
3、 该用户也可用于后期salt-ssh使用,因为几乎所有的生产环境都是禁止root远程登录的(因此进行了 sudo 提权)。
# 使用一个专门的用户,避免直接使用root用户
# 添加用户、指定家目录并指定用户密码
useradd -u -d /app yun && echo '' | /usr/bin/passwd --stdin yun
# sudo提权
echo "yun ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
# 让其它普通用户可以进入该目录查看信息
chmod /app/
运维三板斧
监控
执行
配置管理
Saltstack四种运行方式
Local
Minion/Master C/S
Syndic 代理方式
Salt SSH
3. SaltStack部署
3.1. 镜像源安装
官方镜像源查询
https://repo.saltstack.com/

安装镜像源
在salt100、salt01、salt02、salt03机器上执行
yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
3.2. saltstack安装
根据规划在salt100安装salt的master和minion,在其他机器安装salt的minion。
在salt100上操作
yum install -y salt-master salt-minion
在salt01、salt02、salt03上操作
yum install -y salt-minion
版本查看
[root@salt100 ~]# salt --version # master版本查看
salt 2018.3. (Oxygen)
[root@salt100 ~]# salt-minion --version # minion版本查看
salt-minion 2018.3. (Oxygen)
4. 服务端启动
在salt100上执行,无需任务配置修改
[root@salt100 ~]# systemctl start salt-master.service
5. 客户端启动
在salt100、salt01、salt02、salt03上操作
5.1. 修改minion配置文件
配置修改原因:
1、 minion端指向的master是哪个
2、 minion端的ID是什么
[root@salt100 salt]# pwd
/etc/salt
[root@salt100 salt]# vim minion
………………
# 可以是IP或者hostname
# 如果是hostname那么必须能够解析【最佳实践配置为 主机名】
master: salt100
………………
# 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 to run multiple minions on the
# same machine but with different ids, this can be useful for salt compute
# clusters.
# 如果id不配置,那么默认为hostname
# 如果下次要更改该配置,那么要把 /etc/salt/minion_id 也给删除掉,并重启客户端【会生成一个新的minion_id】
#id:
………………
5.2. 启动minion服务
[root@salt100 ~]# systemctl start salt-minion.service
6. 加入开机自启动
master开机自启动
systemctl enable salt-master.service
minion开机自启动
systemctl enable salt-minion.service
7. master接受minion
7.1. master和minion启动后生成的pki信息
salt100上的信息
[root@salt100 salt]# pwd
/etc/salt
[root@salt100 salt]# ll
total
-rw-r----- root root Oct : cloud
drwxr-xr-x root root Oct : cloud.conf.d
drwxr-xr-x root root Oct : cloud.deploy.d
drwxr-xr-x root root Oct : cloud.maps.d
drwxr-xr-x root root Oct : cloud.profiles.d
drwxr-xr-x root root Oct : cloud.providers.d
-rw-r----- root root Oct : master
drwxr-xr-x root root Oct : master.d
-rw-r----- root root Nov : minion
drwxr-xr-x root root Oct : minion.d
-rw-r--r-- root root Nov : minion_id
drwxr-xr-x root root Nov : pki
-rw-r----- root root Oct : proxy
drwxr-xr-x root root Oct : proxy.d
-rw-r----- root root Oct : roster
[root@salt100 salt]# tree pki/
pki/
├── master
│ ├── master.pem
│ ├── master.pub
│ ├── minions
│ ├── minions_autosign
│ ├── minions_denied
│ ├── minions_pre # master还未进一步认证【接受或拒绝】,minion的公钥都先放在这里
│ │ ├── salt01
│ │ ├── salt02
│ │ ├── salt03
│ │ └── salt100
│ └── minions_rejected
└── minion
├── minion.pem
└── minion.pub directories, files
salt03上的信息
[root@salt03 salt]# pwd
/etc/salt
[root@salt03 salt]# ll
total
-rw-r----- root root Oct : cloud
drwxr-xr-x root root Oct : cloud.conf.d
drwxr-xr-x root root Oct : cloud.deploy.d
drwxr-xr-x root root Oct : cloud.maps.d
drwxr-xr-x root root Oct : cloud.profiles.d
drwxr-xr-x root root Oct : cloud.providers.d
-rw-r----- root root Oct : master
drwxr-xr-x root root Oct : master.d
-rw-r----- root root Nov : minion
drwxr-xr-x root root Oct : minion.d
-rw-r--r-- root root Nov : minion_id
drwxr-xr-x root root Nov : pki
-rw-r----- root root Oct : proxy
drwxr-xr-x root root Oct : proxy.d
-rw-r----- root root Oct : roster
[root@salt03 salt]# tree pki/
pki/
├── master
└── minion
├── minion.pem
└── minion.pub directories, files
salt100上的salt-key信息
[root@salt100 salt]# salt-key
Accepted Keys:
Denied Keys:
Unaccepted Keys:
salt01
salt02
salt03
salt100
Rejected Keys:

7.2. master接受minion
7.2.1. 单个接受
[root@salt100 salt]# salt-key -a salt01 # 单个接受
The following keys are going to be accepted:
Unaccepted Keys:
salt01
Proceed? [n/Y] y
Key for minion salt01 accepted.
[root@salt100 salt]# salt-key
Accepted Keys:
salt01
Denied Keys:
Unaccepted Keys:
salt02
salt03
salt100
Rejected Keys:

7.2.2. 通配符接受
[root@salt100 salt]# salt-key -a salt0*
The following keys are going to be accepted:
Unaccepted Keys:
salt02
salt03
Proceed? [n/Y] y
Key for minion salt02 accepted.
Key for minion salt03 accepted.
[root@salt100 salt]# salt-key
Accepted Keys:
salt01
salt02
salt03
Denied Keys:
Unaccepted Keys:
salt100
Rejected Keys:

7.2.3. 接受所有minion
[root@salt100 salt]# salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
salt100
Proceed? [n/Y] y
Key for minion salt100 accepted.
[root@salt100 salt]# salt-key
Accepted Keys:
salt01
salt02
salt03
salt100
Denied Keys:
Unaccepted Keys:
Rejected Keys:

7.3. master接受minion之后的pki信息
salt100上的信息
[root@salt100 salt]# pwd
/etc/salt
[root@salt100 salt]# tree pki/
pki/
├── master
│ ├── master.pem
│ ├── master.pub
│ ├── minions # minion的公钥从minions_pre 移到了此目录
│ │ ├── salt01
│ │ ├── salt02
│ │ ├── salt03
│ │ └── salt100
│ ├── minions_autosign
│ ├── minions_denied
│ ├── minions_pre
│ └── minions_rejected
└── minion
├── minion_master.pub # 接受了来自master的公钥
├── minion.pem
└── minion.pub directories, files
salt03上的信息
[root@salt03 salt]# tree pki/
pki/
├── master
└── minion
├── minion_master.pub # 接受了来自master的公钥
├── minion.pem
└── minion.pub directories, files
8. 测试结果
[root@salt100 salt]# salt '*' test.ping # 看master可以控制哪些minion
salt02:
True
salt03:
True
salt01:
True
salt100:
True
完毕!
Saltstack_使用指南01_部署的更多相关文章
- Saltstack_实战指南01_系统规划
1. 实战项目GitHub地址 之前<Saltstack_使用指南>详细讲解了saltstack的使用.那么从这节开始实战讲解,当然不会再像之前那样详细说明了.只是讲一些系统规划之类的信息 ...
- Saltstack_使用指南17_salt-ssh
1. 主机规划 salt 版本 [root@salt100 ~]# salt --version salt (Oxygen) [root@salt100 ~]# salt-minion --versi ...
- Saltstack_使用指南16_syndic
1. 主机规划 salt 版本 [root@salt100 ~]# salt --version salt (Oxygen) [root@salt100 ~]# salt-minion --versi ...
- Saltstack_使用指南12_配置管理-jinja模板
1. 说明 下文的案例是根据上一篇文章进行的修改.因此请优先读取上一章博文内容<Saltstack_使用指南11_配置管理-状态之间依赖关系> 2. 主机规划 salt 版本 [root@ ...
- Saltstack_实战指南02_各主机Pillar信息指定
1. 实战项目GitHub地址 该项目已经放在了GitHub上,地址如下: https://github.com/zhanglianghhh/salt-example-lnmp 2. 主机规划 3. ...
- Saltstack_使用指南03_配置管理
1. 主机规划 注意事项 修改了master或者minion的配置文件,那么必须重启对应的服务. 2. 了解YAML 具体地址 https://docs.saltstack.com/en/latest ...
- Saltstack_使用指南18_API
1. 主机规划 salt 版本 [root@salt100 ~]# salt --version salt (Oxygen) [root@salt100 ~]# salt-minion --versi ...
- Saltstack_使用指南11_配置管理-状态之间依赖关系
1. 说明 下文的案例是根据上一篇文章进行的修改.因此请优先读取上一篇文章内容<Saltstack_10_配置管理-状态模块> 并且目录进行了变化,从 /srv/salt/lamp 变为了 ...
- Saltstack_使用指南10_配置管理-状态模块
1. 主机规划 salt 版本 [root@salt100 ~]# salt --version salt (Oxygen) [root@salt100 ~]# salt-minion --versi ...
随机推荐
- .NET Core实战项目之CMS 第五章 入门篇-Dapper的快速入门看这篇就够了
写在前面 上篇文章我们讲了如在在实际项目开发中使用Git来进行代码的版本控制,当然介绍的都是比较常用的功能.今天我再带着大家一起熟悉下一个ORM框架Dapper,实例代码的演示编写完成后我会通过Git ...
- Redis学习——Linux环境下Redis的安装(一)
一.关于Redis Redis最为一款开源的key-value存储系统,自推出到现在一直受到编程人员的喜爱.它支持存储多种value类型,String .List .Set .Zset .Hash.这 ...
- 【朝花夕拾】Android性能篇之(三)Java内存回收
在上一篇日志([朝花夕拾]Android性能篇之(二)Java内存分配)中有讲到,JVM内存由程序计数器.虚拟机栈.本地方法栈.GC堆,方法区五个部分组成.其中GC堆是一块多线程的共享区域,它存在的作 ...
- webpack 2 系列
webpack 2 系列 webpack 是一个强大的工具,学会通过工具来解决开发效率问题,是每一个 工程师都必备的技能之一. 那么我们来从零开始搭建一个 基于webpack 2 到 开发架子,来提升 ...
- SpringBoot入门教程(十二)DevTools热部署
devtools模块,是为开发者服务的一个模块.主要的功能就是代码修改后一般在5秒之内就会自动重新加载至服务器,相当于restart成功.与JRebel不同的是,JRebel是一款商业插件,devto ...
- MySQL 的性能(上篇)—— SQL 执行分析
简介 文中内容均为阅读前辈的文章所整理而来,参考文章已在最后全指明 本文分为上下两篇: 上篇:MySQL 的 SQL 执行分析 下篇:MySQL 性能优化 后端开发必然会接触到数据库,数据层的优劣会影 ...
- Spring系列(七) Spring MVC 异常处理
Servlet传统异常处理 Servlet规范规定了当web应用发生异常时必须能够指明, 并确定了该如何处理, 规定了错误信息应该包含的内容和展示页面的方式.(详细可以参考servlet规范文档) 处 ...
- iframe跨域通信实战
"长时间不写文章,开头的方式总是那么出奇的相似",最近很忙,好久没写博客了啊(是不是?). 更换工作已经有三个月有余,这段三个月把过去三年没加过的班都加了一次.收获挺多,发现的问题 ...
- 程序员如何描述清楚线上bug
案例 一个管理后台的bug,把操作记录中的操作员姓名,写成了该操作员的id.原因是修改了一个返回操作人姓名的函数,返回了操作人的id.但是还有其他地方也用这个函数,导致其他地方把姓名字段填写成了操作员 ...
- Python迭代和解析(4):自定义迭代器
解析.迭代和生成系列文章:https://www.cnblogs.com/f-ck-need-u/p/9832640.html 本文介绍如何自定义迭代器,涉及到类的运算符重载,包括__getitem_ ...