我正在运行Molecule v2.22,我想使用分子启动一个ec2实例,以测试我的ansible剧本。
但是当分子到达Detroy并创建实例阶段时,我遇到了一个错误。
我也不明白为什么分子会跳过 /usr/lib/python2.7/site- packages / molecule / provisioner / ansible / plugins / filters / molecule_core.py 插件,我相信这可能与名为 molecule_from_yaml
的过滤器有关请参阅以下错误:
5.6.0 !== 5.6.4
下面是destroy.yml文件,如果有的话,该文件将销毁先前创建的实例。
5.6.4
下面是create.yml
[WARNING]: Skipping plugin (/usr/lib/python2.7/site-
packages/molecule/provisioner/ansible/plugins/filters/molecule_core.py) as it
seems to be invalid: cannot import name py31compat
PLAY [Destroy] *****************************************************************
TASK [Populate instance config] ************************************************
fatal: [localhost]: FAILED! => {"msg": "template error while templating string: no filter named 'molecule_from_yaml'. String: {{ lookup('file', molecule_instance_config) | molecule_from_yaml }}"}
--> Action: 'create'
[WARNING]: Skipping plugin (/usr/lib/python2.7/site-
packages/molecule/provisioner/ansible/plugins/filters/molecule_core.py) as it
seems to be invalid: cannot import name py31compat
PLAY [Create] ******************************************************************
TASK [Get the ec2 ami(s) by owner and name, if image not set] ******************
fatal: [localhost]: FAILED! => {"msg": "An unhandled exception occurred while templating '{{ lookup('file', molecule_file) | molecule_from_yaml }}'. Error was a <class 'ansible.errors.AnsibleError'>, original
message: template error while templating string: no filter named 'molecule_from_yaml'. String: {{ lookup('file', molecule_file) | molecule_from_yaml }}"}
我希望我已为该问题提供了足够的信息
答案 0 :(得分:1)
我遇到了同样的问题,但是在macOS 10.15.4上本地运行了该问题,并通过brew安装了ansible和Molecular。
卸载两者,然后使用pip3重新安装有帮助:
brew uninstall molecule
brew uninstall ansible
pip3 install ansible --user
pip3 install "molecule[lint]" --user
pip3 install "molecule[docker]" --user
然后,如果您想识别命令,则需要在PATH中添加python包。
就我而言,由于我使用的是python 3.7,因此将其添加到〜/ .bashrc中:
export PATH="/Users/<user>/Library/Python/3.7/bin:$PATH"
确保输入使用的版本。如果要在Mac OS上使用python 3而不是默认2,请在通过brew安装python之后将其添加到.bashrc(或.zshrc或您使用的任何文件)中,例如:
alias python=/usr/local/bin/python3