saltstack获取token时报错401

最近在用 saltstack 获取 token 的时候总是出现 401 认证失败,百度谷歌查了很多资料都没能解决,嗯,这次基本上该出的错都出来了,这次也怪自己没太仔细,加上最近事情较多,看到报错的时候就有些心态爆炸,但是这一步不走通又没法完成后面的内容,放置了一天后,今早上过来又重新看到 saltstack 在 github 上的一篇 issue,之后成功获取,看到结果的时候还是有些小激动的,遂赶紧记录下来。

一、环境配置

1、api.conf 

[root@V1 salt]# cat /etc/salt/master.d/api.conf 
rest_cherrypy:
  port: 8000
  disable_ssl: True

2. eauth.conf

[root@V1 salt]# cat /etc/salt/master.d/eauth.conf 
external_auth:
  pam:
    saltapi:
      - .*
      - '@wheel'
      - '@runner'

3、salt-api --versions

[root@V1 salt]# salt-api --versions
Salt Version:
           Salt: 2018.3.2
 
Dependency Versions:
           cffi: 1.11.5
       cherrypy: 3.6.0
       dateutil: Not Installed
      docker-py: Not Installed
          gitdb: Not Installed
      gitpython: Not Installed
          ioflo: Not Installed
         Jinja2: 2.9.6
        libgit2: Not Installed
        libnacl: Not Installed
       M2Crypto: 0.21.1
           Mako: Not Installed
   msgpack-pure: Not Installed
 msgpack-python: 0.5.1
   mysql-python: Not Installed
      pycparser: 2.18
       pycrypto: 2.6.1
   pycryptodome: Not Installed
         pygit2: Not Installed
         Python: 2.7.5 (default, Apr 11 2018, 07:36:10)
   python-gnupg: Not Installed
         PyYAML: 3.11
          PyZMQ: 14.3.1
           RAET: Not Installed
          smmap: Not Installed
        timelib: Not Installed
        Tornado: 4.2.1
            ZMQ: 3.2.5
 
System Versions:
           dist: centos 7.4.1708 Core
         locale: UTF-8
        machine: x86_64
        release: 3.10.0-693.21.1.el7.x86_64
         system: Linux
        version: CentOS Linux 7.4.1708 Core

嗯,排错的过程中我把 salt 版本也给升级了一下,不得不说官网的安装升级操作真的非常友好,附上链接如下

a. BOOTSTRAP - MULTI-PLATFORM

Salt Bootstrap 是一个 shell 脚本,可检测目标平台并选择最佳安装方法(取自谷歌翻译 . PS认真脸)

b. 安装最新版本

安装最新版本。 即使是新的主要版本,更新也会安装最新版本。

此种方式提供了三种版本的安装,分别为 REDHAT / CENTOS 7 PY2、REDHAT / CENTOS 7 PY3、REDHAT / CENTOS 6 PY2,我两种方式都试了下,真的敲方便。

细节不多说,直接上思路,多亏了那位老哥的思路排除401,干看着知道是认证失败,然后又不知道从哪验证内心还是有些难受的。

[root@salt ~]# cat /etc/salt/master             # 查看 master 主配置文件
external_auth:
 pam:
   salt:
    - .*
    - '@wheel' # to allow access to all wheel modules
    - '@runner' # to allow access to all runner modules
    - '@jobs' # to allow access to the jobs runner and/or wheel module
[root@salt ~]# systemctl start salt-master salt-minion          # 重启 master 和 minion
[root@salt ~]# useradd -m salt                                  # 添加账户
[root@salt ~]# echo testpass | passwd --stdin salt              # 给账户添加一个密码
Changing password for user salt.
passwd: all authentication tokens updated successfully.
[root@salt ~]# salt-key -Ay                                     # 更新未接受的 keys
The following keys are going to be accepted:
Unaccepted Keys:
salt
Key for minion salt accepted.
[root@salt ~]# sleep 10                                         # 等待 10 s
[root@salt ~]# salt -a pam --username=salt --password=testpass \* test.ping # 尝试使用pam对minion进行验证
salt:
    True

当我把依照上述步骤把验证文件放置到 master 主配置文件之后,重启 master 服务(试错过程好几次master、minion 和 api 都有起不来的情况,安装了一些包(如 PyZMQ 等),更新了一下内容(如 pip install CherryPy==3.6.0 等),后面终于调回了报 401,尴尬 ),再用 postman 调用获取token的接口就成功了。

[root@V1 salt]#  curl -k http://127.0.0.1:8000/login -H "Accept: application/json"  -d username='saltapi' -d password='saltapi' -d eauth='pam'
{"return": [{"perms": [".*", "@wheel", "@runner"], "start": 1530760488.001925, "token": "4235157b6841803df754ec2b554e002c0fcb5592", "expire": 1530803688.001926, "user": "saltapi", "eauth": "pam"}]}

后来寻思,如果只是把配置加进了主配置文件就可以了的话,说明在主配置文件的 default_include 应该是没有生效的,没成功之前的配置是这样的

# Per default, the master will automatically include all config files
# from master.d/*.conf (master.d is a directory in the same directory
# as the main master config file).
default_include : master.d/*.conf

在重试的时候加了当前目录

default_include : ./master.d/*.conf

然后 OK 了。

在成功获取到 token 后,我又把配置文件改成了原来的,重启了各项服务,,,尴尬的是并没能重现问题。。。重启了 minion 都没能刷新 key 。。。

大致就是这样,排错的过程中多找找资料,多尝试,最好看官方的 doc 和 issue ,一定要官方(血泪史)。

拿到 token 的我终于可以进行下一步了。

 

 

参考资料

1. salt-api is not working. "Authentication failure of type "eauth" occurred"

转载于:https://my.oschina.net/u/3314358/blog/1840604

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值