Python 易读密码\u散列不会&\x27;即使安装了passlib,也要使用bcrypt
我正试图调用Ansible的Python 易读密码\u散列不会&\x27;即使安装了passlib,也要使用bcrypt,python,ansible,bcrypt,Python,Ansible,Bcrypt,我正试图调用Ansible的password\u hash函数 {{ admin_password | password_hash('bcrypt') }} 我尝试了十几种方法来告诉Ansible passlib和Python2.7在哪里,但不管怎样,我一直在得到结果 "AnsibleFilterError: crypt.crypt does not support 'bcrypt' algorithm" 据我所见,ansible过去只使用crypt,但较新的版本(我目前使用的是2.7.9)
password\u hash
函数
{{ admin_password | password_hash('bcrypt') }}
我尝试了十几种方法来告诉Ansible passlib和Python2.7在哪里,但不管怎样,我一直在得到结果
"AnsibleFilterError: crypt.crypt does not support 'bcrypt' algorithm"
据我所见,ansible过去只使用crypt
,但较新的版本(我目前使用的是2.7.9)使用passlib
,据我所知,passlib支持bcrypt(这是有限的)。我已将以下内容添加到我的主机文件中
ansible_python_interpreter = /usr/bin/python2.7
我正在安装PIP和Passlib,就像这样
- name: Install PY stuff...
yum:
name: ['python2-pip','python2-passlib']
state: present
- name: Ensure bcrypt support is installed for python passlib
pip:
name: "passlib[bcrypt]"
executable: pip-2.7
我本以为yum调用可以正确设置passlib,但它不起作用,所以我尝试只通过PIP进行设置,也不起作用,所以我尝试了上面的方法,但仍然不起作用。我不确定passlib在通过yum安装时是否包含bcrypt,因为它似乎在仅使用PIP时不包含bcrypt,所以为了以防万一,我两个都做了。没有快乐
我应该补充一点,我在AmazonLinux2上的AWS中,我已经启用了EPELRepo,等等
编辑:我尝试了一些来自评论的建议(使用passlib 1.6,验证bcrypt是否与python一起工作),虽然我可以验证在python内测试时passlib是否工作,但我仍然从Ansible
AnsibleFilterError:crypt.crypt不支持“bcrypt”算法
我发现的唯一与此相关的东西是:但它描述了默认设置,即查找passlib,只有在crypt.crypt不存在时才回退。那么,为什么python在我手动运行它时会看到passlib,而不是从playbook中看到它呢?首先,验证Ansible是否使用了您认为的python。看看
head-1$(这是ansible)
,您应该会看到如下内容:
#!/usr/bin/python2
确保已将passlib
安装在Python可以找到它的位置:
$ /usr/bin/python2
Python 2.7.15 (default, Oct 15 2018, 15:24:06)
[GCC 8.1.1 20180712 (Red Hat 8.1.1-5)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import passlib
>>>
我使用的是Fedora28,所以我可以简单地yum-y安装
python2密码库
确保passlib
支持bcrypt
:
>>> from passlib.hash import bcrypt
>>> bcrypt.hash('secret')
'$2b$12$3YUj4BgoJ8ba1H4XtH/p3.4DG0lMgaHQ4qYshpj/.COe1eHEU.71K'
>>>
如果上述所有操作都成功,则应使用密码\u哈希
过滤器
工作:
首先,验证Ansible是否正在使用您认为是的Python。看看
head-1$(这是ansible)
,您应该会看到如下内容:
#!/usr/bin/python2
确保已将passlib
安装在Python可以找到它的位置:
$ /usr/bin/python2
Python 2.7.15 (default, Oct 15 2018, 15:24:06)
[GCC 8.1.1 20180712 (Red Hat 8.1.1-5)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import passlib
>>>
我使用的是Fedora28,所以我可以简单地yum-y安装
python2密码库
确保passlib
支持bcrypt
:
>>> from passlib.hash import bcrypt
>>> bcrypt.hash('secret')
'$2b$12$3YUj4BgoJ8ba1H4XtH/p3.4DG0lMgaHQ4qYshpj/.COe1eHEU.71K'
>>>
如果上述所有操作都成功,则应使用密码\u哈希
过滤器
工作:
记录在案。Ubuntu的同样问题也通过安装“PythonPasslib”得到了解决。@VladimirBotka你的意思是代替了
Python2Passlib
?这不适用于较小版本的Python吗?你有我能读到的任何与你的意思相关的链接吗?在Ubuntu 18.04、ansible 2.7.9和python 2.7.15rc1中,报告的“AnsibleFilterError:crypt.crypt不支持'bcrypt'算法”。通过安装“PythonPasslib”解决了这个问题。没有python2 passlib。@VladimirBotka尝试删除passlib 1.7并强制安装“过时的”1.6,但没有区别。将其加入到剧本中,以防图片中没有1.7的新安装可能会带来不同,但不会带来乐趣。Ansible的错误与我在Amazon Linux 2下对“@”larsks.YMMV的评论中描述的相同。我的第一条评论“记录在案”的目的是通知Ubuntu用户谁找到了这个线程。我想你必须把这个问题带到一个合适的亚马逊Linux论坛上。记录在案。Ubuntu的同样问题也通过安装“PythonPasslib”得到了解决。@VladimirBotka你的意思是代替了Python2Passlib
?这不适用于较小版本的Python吗?你有我能读到的任何与你的意思相关的链接吗?在Ubuntu 18.04、ansible 2.7.9和python 2.7.15rc1中,报告的“AnsibleFilterError:crypt.crypt不支持'bcrypt'算法”。通过安装“PythonPasslib”解决了这个问题。没有python2 passlib。@VladimirBotka尝试删除passlib 1.7并强制安装“过时的”1.6,但没有区别。将其加入到剧本中,以防图片中没有1.7的新安装可能会带来不同,但不会带来乐趣。Ansible的错误与我在Amazon Linux 2下对“@”larsks.YMMV的评论中描述的相同。我的第一条评论“记录在案”的目的是通知Ubuntu用户谁找到了这个线程。我想你必须把这个问题带到一个合适的亚马逊Linux论坛上。非常感谢详细的答案和调试手册,我会试一试。所以,在我测试ansible调试时,一切似乎都得到了验证,其中“msg”的值为空。从控制器运行完整的剧本时没有出现错误,但也没有输出。使用-vvv也没有额外的细节,看起来它使用的是正确的python。有什么想法吗?如果对password\u hash
的调用在模板中,会有什么不同吗?这个调用可能是在控制器上而不是在主机上进行的吗?非常感谢详细的回答,调试手册将对此进行尝试。因此,在我测试ansible调试时,一切似乎都得到了验证,其中“msg”的值为空。从控制器运行完整的剧本时没有出现错误,但也没有输出。使用-vvv也没有额外的细节,看起来它使用的是正确的python。有什么想法吗?如果对password\u hash
的调用在模板中,会有什么不同吗?是否可以在控制器而不是主机上进行调用?