SaltStack安装踩坑之路
一 背景
公司禁用ansible,机器越来越多,想试试 SaltStack到底有多块,如何适合上千台机器
官方centos7安装:http://docs.saltstack.cn/topics/installation/rhel.html
二 安装
网上很多教程使用阿里云 , 估计epel源不能用,报错:
No package salt-master available.
stackover给了答案,原文链接:https://stackoverflow.com/questions/24775841/yum-install-gives-no-package-available
Please follow steps mentioned on link to install salt-master
http://docs.saltstack.com/en/latest/topics/installation/rhel.html # 官方文档
it will not be available in default repository
点进去找到centos7的 文档,网址:https://repo.saltproject.io/#rhel
sudo rpm --import https://repo.saltproject.io/py3/redhat/7/x86_64/latest/SALTSTACK-GPG-KEY.pub
curl -fsSL https://repo.saltproject.io/py3/redhat/7/x86_64/latest.repo | sudo tee /etc/yum.repos.d/salt.repo
sudo yum clean expire-cache
yum install salt-master -y # 我看到中间会安装python36
sudo yum install salt-minion -y
sudo yum install salt-ssh -y
sudo yum install salt-syndic -y
sudo yum install salt-cloud -y
sudo yum install salt-api -y
systemctl start salt-minion
systemctl enable salt-minion
systemctl enable salt-master.service && systemctl restart salt-master.service
安装客户端
sudo rpm --import https://repo.saltproject.io/py3/redhat/7/x86_64/latest/SALTSTACK-GPG-KEY.pub
curl -fsSL https://repo.saltproject.io/py3/redhat/7/x86_64/latest.repo | sudo tee /etc/yum.repos.d/salt.repo
sudo yum clean expire-cache
sudo yum install salt-minion -y
systemctl restart salt-minion
systemctl enable salt-minion
三 使用:
原文: https://www.cnblogs.com/wangyajian/p/11549078.html
# 配置 master 和minion
cat /etc/salt/master
master: 10.0.0.251
user: rootcat /etc/salt/minion | grep -v ^$ | grep -v ^#
master: 10.0.0.251
user: root
id: agent251 # 这个ip不写的话默认使用主机名称作为ip 就配置在cat /etc/salt/minion_id
# 下发密钥
# sudo salt-key --list-all # 查看所有密钥
# salt-key --accept-all -y # 下发所有密钥# 下面是简写
salt-key -L
salt-key -A -y
# 测试
sudo salt '*' test.ping
sudo salt 'agent251' test.ping
sudo salt 'agent252' test.ping
注:
master 秘钥对默认存储在/etc/salt/pki/master/master.pub /etc/salt/pki/master/master.pem
master 端认证的公钥存储在:/etc/salt/pki/master/minions/
minion 秘钥对默认存储在/etc/salt/pki/minion/minion.pub /etc/salt/pki/minion/minion.pem
minion 存放的master公钥/etc/salt/pki/minion/minion_master.pub
minion_id 默认存储在/etc/salt/minion_id #?
四 报错排查
Minion did not return. [No response]The minions may not have all finished running and any remaining minions will return upon completion. To look up the return data for this job later, run the following command:salt-run jobs.lookup_jid 20210517224159109068
1. 查看minion端的日志信息
[root@iZbp150ikdomqe3b32qaubZ salt]# cat /var/log/salt/minion[root@iZbp150ikdomqe3b32qaubZ salt]# systemctl restart salt-minion.service
[root@iZbp150ikdomqe3b32qaubZ salt]# cat /var/log/salt/minion
2018-05-26 18:03:22,963 [salt.utils ][ERROR ][21937] DNS lookup of 'salt' failed.
2018-05-26 18:03:22,963 [salt.minion ][ERROR ][21937] Master hostname: 'salt' not found. Retrying in 30 seconds
2018-05-26 18:03:52,986 [salt.utils ][ERROR ][21937] DNS lookup of 'salt' failed.
2018-05-26 18:07:23,176 [salt.minion ][ERROR ][21937] Master hostname: 'salt' not found. Retrying in 30 seconds
2018-05-26 18:07:30,020 [salt.crypt ][ERROR ][22002] The Salt Master has cached the public key for this node, this salt minion will wait for 10 seconds before attempting to re-authenticate根据报错信息分析:
minion大概的意思就是,minion端拿到的key与master端的不符,验证无法通过。
解决方法是删除minion端的key,再重新与master进行连接和认证。2. 删除minion端的salt-master秘钥信息
[root@salt-slave-node1 minion]# pwd
/etc/salt/pki/minion
[root@salt-slave-node1 minion]# ls
minion_master.pub minion.pem minion.pub
[root@salt-slave-node1 minion]# rm -rf minion_master.pub 3. 重新验证秘钥测试
[root@iZwz9bhan5nqzh979qokrkZ pki]# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
iZbp150ikdomqe3b32qaubZ
izwz9f8xrvty50quc2gq50z
Rejected Keys:
[root@iZwz9bhan5nqzh979qokrkZ pki]# salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
iZbp150ikdomqe3b32qaubZ
izwz9f8xrvty50quc2gq50z
Proceed? [n/Y] Y
Key for minion iZbp150ikdomqe3b32qaubZ accepted.
Key for minion izwz9f8xrvty50quc2gq50z accepted.
[root@iZwz9bhan5nqzh979qokrkZ pki]# salt '*' test.ping
izwz9f8xrvty50quc2gq50z:True
iZbp150ikdomqe3b32qaubZ:True
重新认证:
salt minion 和salt master之间重新建立认证
修改了minion端的id之后 比如修改了hostname之后,
minion端会将minion的id 存放在/etc/salt/minion_id
文件中,重启不会改变。所以要重新认证就需要以下2步:
1、清空minion_id
>/etc/salt/minion_id
2.删除minion存放masterkey的文件pki文件夹下所以的东西
rm -rf /etc/salt/pki/*
3.重启minion
service salt-minion restart
在master端:
删除pki文件之后,重启即可:
rm -rf /etc/salt/pki/*
service salt-master restart
之后就可以salt-key看到新的minion id了。
扩展: Jenkins 集成 saltstack
参考:https://cloud.tencent.com/developer/article/1523261
附录:
salt-master配置文件详解
interface: 192.168.28.141 #绑定到本地的某个网络地址
publish_port: 4505 #默认端口4505,设置master与minion通信端口
user: root #运行salt进程的用户
max_open_files: 100000 #master可以打开的最大句柄数
worker_threads: 5 #启动用来接收或应答minion的线程数
ret_port: 4506 #master用来发送命令或接受minions的命令执行返回信息
pidfile: /var/run/salt-master.pid #指定master的pid文件位置
root_dir: / #该目录为salt运行的根目录,改变它可以使salt从另外一个目录运行,好比chroot
pki_dir: /etc/salt/pki/master #存放pki认证密钥
cachedir: /var/cache/salt #存放缓存信息,salt工作执行的命令信息
verify_env: True #启动验证和设置权限配置目录
keep_jobs: 24 #保持工作信息的过期时间,单位小时
job_cache: True #设置master维护的工作缓存.当minions超过5000台时,它将很好的承担这个大的架构
timeout: 5 #master命令执可以接受的延迟时间
output: nested #salt命令的输出格式
minion_data_cache: True #关于minion信息存储在master上的参数,主要是pilar和grains数据
auto_accept: False #默认值False. master自动接受所有发送公钥的minion
file_recv: False #允许minion推送文件到master上
file_recv_max_size: 100 #默认值100,设置一个hard-limit文档大小推送到master端
state_top: top.sls #状态入口文件
renderer: yaml_jinja #使用渲染器用来渲染minions的状态数据
failhard: False #当单个的状态执行失败后,将会通知所有的状态停止运行
salt命令详解salt "*" sys.list_modules # 查看所有模块# salt -h
Usage: salt [options] '<target>' <function> [arguments]Options(选项):--version : 查看saltstack软件的版本号。--versions-report : 查看saltstack软件以及依赖包的版本号。-h, --help : 查看帮助信息。--saltfile=SALTFILE:指定saltfile的路径。 如果没有通过,将在当前工作目录中搜索一个。-c CONFIG_DIR, --config-dir=CONFIG_DIR:指定配置文件的目录(默认是/etc/salt/)。-t TIMEOUT, --timeout=TIMEOUT:指定超时时间默认是5秒。--hard-crash:捕捉到original异常不退出默认关闭。-s, --static:以组的形式返回所有minion的数据。-p, --progress:显示进度图,需要progressbar的python包。--failhard :在第一个执行错误返回之后停止批处理。--async : 异步执行。--subset=SUBSET : 对目标minions的随机子集执行程序. minions在执行前会先验证是否存在该命名的函数,再去执行-v, --verbose : 打开命令详细,显示jid和活动的工作查询--hide-timeout : 隐藏超时时间。--show-jid : 显示任务的jid。-b BATCH, --batch=BATCH, --batch-size=BATC : 按照百分比执行任务。-a EAUTH, --auth=EAUTH, --eauth=EAUTH, --external-auth=EAUTH : 指定外部认证方式。-T, --make-token : 生成master token.--return=RETURNER : 设置一种替代方法。 默认情况下,salt将从命令将返回数据发送回主服务器,但返回数据可以重定向到任意数量的系统,数据库或应用程序。--return_config=RETURNER_CONF : 指定命令返回的设置文件。-d, --doc, --documentation : 查看指定模式或所有模块文档。--args-separator=ARGS_SEPARATOR : 指定发送命令跟命令参数的分隔符,当用户想把一个命令当作参数发送给另一个命令执行时。--summary : 显示汇总信息。--username=USERNAME : 指定外部认证的用户名。--password=PASSWORD : 指定外部认证的密码。--metadata=METADATA : 将元数据传递给Salt,用于搜索作业。Logging Options(日志相关参数):-l LOG_LEVEL, --log-level=LOG_LEVEL : 指定日志级别。--log-file=LOG_FILE : 指定日志记录文件--log-file-level=LOG_LEVEL_LOGFILE : 日志文件日志记录级别。'all', 'garbage', 'trace', 'debug', 'info', 'warning', 'error','critical', 'quiet'. 默认: 'warning'.Target Options(目标选择选项):-E, --pcre : 正则匹配-L, --list: 列表匹配,目标表达式将被解释为以逗号分隔的列表。-G, --grain: grains匹配。--grain-pcre :grains加正则匹配。-N, --nodegroup:组匹配。-R, --range:范围匹配。-C, --compound : 综合匹配(指定多个匹配,空格隔开)。-I, --pillar : pillar值匹配。-J, --pillar-pcre : pillar加正则匹配。-S, --ipcidr : minions网段地址匹配。Output Options(输出参数):--out=OUTPUT, --output=OUTPUT : 使用指定的输出器从'salt'命令打印输出。 内置的是 'key', 'yaml', 'overstatestage', 'newline_values_only', 'pprint', 'txt', 'raw', 'virt_query', 'compact', 'json', 'highstate', 'nested', 'quiet', 'no_return'.--out-indent=OUTPUT_INDENT, --output-indent=OUTPUT_INDENT : 在空格中打印由提供的值缩进的输出。 负值禁用缩进。 仅适用于支持缩进的输出器。--out-file=OUTPUT_FILE, --output-file=OUTPUT_FILE : 输出到指定文件。--out-file-append, --output-file-append : 输出附加到指定的文件。--no-color, --no-colour : 关闭所有的颜色显示。--force-color, --force-colour : 强制输出颜色显示。--state-output=STATE_OUTPUT, --state_output=STATE_OUTPUT : 覆盖配置的state_output值输出,指定state格式(full, terse, mixed, changes or filter)输出,默认值是full。salt-key命令详解
# salt-key -hActions:-l ARG, --list=ARG:显示指定状态的key(支持正则表达式)-L, --list-all :列出所有公钥。"--list all"已经弃用。-a ACCEPT, --accept=ACCEPT: 接受指定的公钥(除了挂起的密钥之外,使用--include-all匹配拒绝的密钥),支持正则表达式。-A, --accept-all :接收所有等待认证的key。-r REJECT, --reject=REJECT :拒绝指定等待认证的key(支持正则表达式)-R, --reject-all:拒绝所有等待认证的key。--include-all: 显示所有状态的key。-p PRINT, --print=PRINT :打印指定的公钥支持正则表达式。-P, --print-all:打印所有的公钥。-d DELETE, --delete=DELET:删除指定的key。-D, --delete-all:删除所有的key。-F, --finger-all:显示所有key的指纹信息。
查找模块
salt '*' -d|grep ":" |grep disk查找某个模块拥有的方法
salt 'agent1' sys.list_functions test
SaltStack安装踩坑之路相关推荐
- Solid Works安装踩坑之路
SolidWorks安装 为了写专利还得下一个solidworks,痛,太痛了,继续踩雷 参考SolidWorks2016中文破解版 附安装教程 Solidworks版本是Solidworks2016 ...
- jmeter 3版本到5版本踩坑之路
jmeter 3-5版本升级踩坑路 新版本下载安装 踩坑之路 新版本下载安装 下载新版本软件 ,链接: https://jmeter.apache.org/download_jmeter.cgi: 配 ...
- 2021-11-01 富文本编辑器Vue-Quill-Editor 踩坑之路
Vue-Quill-Editor 基于 Quill.适用于 Vue 的富文本编辑器,支持服务端渲染和单页应用. 相对于ssr,spa是通过component进行工作 ssr和spa的区别 1 踩坑之路 ...
- webpack踩坑之路 (2)——图片的路径与打包
webpack踩坑之路 (2)--图片的路径与打包 刚开始用webpack的同学很容易掉进图片打包这个坑里,比如打包出来的图片地址不对或者有的图片并不能打包进我们的目标文件夹里(bundle).下面我 ...
- mybatis mapper.xml dtd_全栈开发踩坑之路4-用MyBatis实现服务
1.前言 上一篇文章介绍了如何设计后端的Mysql数据库:Alex Wang:全栈开发踩坑之路3-MySql数据库设计,本文介绍如何用MyBatis实现后端服务. 本后端项目的Github地址(撰写中 ...
- Android Studio安装踩坑
title: Android Studio安装踩坑 date: 2018-09-07 19:31:32 updated: tags: [Android,Android Studio,坑] descri ...
- anaconda+cuda+cudnn+pytorch安装踩坑大全
windows环境下anaconda+pycharm+cuda+cudnn+pytorch安装踩坑大全 anaconda安装 pycharm安装 cuda cudnn pytorch gym环境安装 ...
- windos下 elasticksearch7.13安装踩坑记
windos下 elasticksearch7.13安装踩坑记 一,环境配置 环境要求 java jdk16下载安装 elasticksearch7.13下载安装 遇到的问题 (待更新) 一,环境配置 ...
- Win 10 + Ubuntu 18.04 双系统安装与深度学习环境配置安装踩坑实录(上篇)
Win 10 + Ubuntu 18.04 双系统安装与深度学习环境配置安装踩坑实录(上篇) 折腾了两三天总算顺利在电脑上完成了装x的双系统安装,一路走来还比较顺利,主要在ubuntu的显卡设置上躺了 ...
最新文章
- iOS 5与iOS 6的 low-memory 处理(转自cocoaChina)
- R堆叠柱状图各成分连线画法:突出展示组间物种丰度变化
- 在同一个文件中定义多个命名空间
- 关于Windows Vista的系统修复
- Windows 系统下.sh文件的运行
- 房子网签后房产局查不到信息_日本房子:1R、1LDK分不清?凶宅如何分辨?
- 机器学习-吴恩达-笔记-6-应用机器学习的建议
- 标准工时分析怎么做?精益生产下的VIOOVI 标准工时分析软件
- labelImg 的pip安装
- Python识别图片中的文字
- C#自定义控件添加到工具箱:
- 【线性代数之一】行列式计算
- 深圳富士康有搞什么啊?又猝死了一个!
- 动态规划系列——原理与思想
- MySQL狂神说笔记数据库笔记详解
- 透过微博回港上市,看中概股如何穿越市场周期变动
- 使用dom4j生成KML文件
- 23 种设计模式的有趣见解
- input取消焦点 vue_vue如何能做到点击其他地方input不失去焦点
- 老潘的AI部署以及工业落地学习之路
热门文章
- 设置了msconfig处理器个数和内存开不了机终极解决办法
- 唯品会怎么样_陕南赤子_新浪博客
- 融系统中PBOC/EMV的TLV的算法实现(含C++/C#)
- php用360浏览器显示不正常,win10系统下360浏览器网页显示不正常的解决方法
- 中职计算机应用基础windows7,中职类计算机应用基础大纲
- 手机恢复出厂设置命令_三星 手机 恢复 出厂 设置 指令 密码 串号
- 云米携手coKiing发布高端AI变频空调,提前卡位5G智能家居市场
- 区块链到底能做什么?这506个备案项目告诉你
- MySQL查询下周一_mysql 查询本周、下周、本月、下个月份的数据
- 上岸算法 -北美求职套路全解析