访问saltstack REST api报401 Unauthorized错误,折腾了一个通宵竟是因为…

193次阅读
一条评论

共计 1120 个字符,预计需要花费 3 分钟才能阅读完成。

前言

最近在看《python3 自动化软件发布系统》这本书,书中自动化部署是基于 saltstack 实现的,为了实现整个系统低耦合分开部署,就必须要借助 saltstack 的 REST api 了。

我先说一下我这边的情况,我拿到 token 是没报 401 错误的,我看网上的很多人 token 都拿不到,多半是对 salt REST api 部署工具链不熟,没有在 eauth.conf 授权调用用户,当然也有其它情况,如果你连拿 token 都报 401,那下面的文章不用看了,本文不适合你。

下面贴一下我的报错截图

访问 saltstack REST api 报 401 Unauthorized 错误,折腾了一个通宵竟是因为...

针对这个错误我试过无数次重启 salt-master,salt-api 服务,重启虚拟机,甚至连重启宿主机电脑都没有什么用,我看网上有人说 eauth.conf 这个文件的格式不正确都会导致 401 未授权错误,

于是我调整了这个 conf 文件中每一行距离开头的空格数,从两个调到了四个,又从四个调成了两个,就这样反复了无数遍都没什么卵用,就在我快要放弃的时候,瞎看了一会官方文档,突然发现了我的问题,小小改动了一个地方,没有报 401 错了,这时抬头一看天已经快亮了。

下面是我改动之后没有报错的截图:

访问 saltstack REST api 报 401 Unauthorized 错误,折腾了一个通宵竟是因为...

解决

下面的内容是付费内容,请用支付宝小小破费之后查看哦。

[$]

其实是我疏忽大意了,拿 token 时用的 url 是 https://10.211.55.14:8899/login,完整的命令如下:

curl -sSk https://10.211.55.14:8899/login -H 'Accept: application/x-yaml' -d username='salt-api-client' -d [email protected] -d eauth=pam

而通过拿到的 token 去调 cmd.run 模块时的命令前面部分和上面命令的前面部分一样,于是疏忽大意的我就直接复制粘贴了上面部分的命令的前半部分再加上剩下的就形成了下面的错误命令:

curl -sSk https://10.211.55.14:8899/login -H "Accept: application/x-yaml" -H "X-Auth-Token: 9850af0ab2eabed4b6d8bfeff51f9af4ee4d788e" -d client='local' -d tgt='10.211.55.15' -d fun='cmd.run' -d arg='ip a'

上面命令错误的地方就在这次请求的 url 不应该再带 `/login` 这个路径了,去掉这个 `/login` 再去请求就不会报错了。

[/$]

写在最后

如果你看完收费内容后,发现和你的情况不同,解决不了你的 401 未授权错误,请微信加我好友 Baksmali,我退你一半钱,那一半算是我码字的辛苦费啦😘。

正文完
 
sharp097
版权声明:本站原创文章,由 sharp097 2020-04-03发表,共计1120字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(一条评论)
沧州华菱电器 评论达人 LV.1
2020-05-29 16:31:20 回复

折腾的时候会遇到一个一个的坑

     未知