![](/img/trans.png)
[英]Ansible - how to use selectattr with yaml of different keys
[英]How to use my custom yaml tag in Ansible?
我在 Python 中创建了一个 YAML 解析器来使用yaml 标签解密值。
password: !decrypt LS0tLS1CRUdJ...TiBQRS0tCg==
在我的解析器脚本中,我可以添加自定义构造函数来解密这些值。
def get_loader():
loader = yaml.SafeLoader
loader.add_constructor("!decrypt", decrypt_constructor)
return loader
data = yaml.load(open(file, "rb"), Loader=get_loader())
使用 Ansible 解析 YAML 文件时,出现以下错误:
ERROR! We were unable to read either as JSON nor YAML, these are the errors we got from each:
JSON: Expecting value: line 1 column 1 (char 0)
Syntax Error while loading YAML.
could not determine a constructor for the tag '!decrypt'
如何向 Ansible 使用的 YAML 解析器添加构造函数? 我以前见过这些标签,比如!vault
和!unsafe
。
您需要将代码添加到 Ansible 以教它如何解析您的自定义 YAML 标签。
看起来这种东西存在于 Ansible 存储库的lib/ansible/parsing/yaml中。 例如,您可以在objects.py
中找到对!vault
对象的支持:
class AnsibleVaultEncryptedUnicode(Sequence, AnsibleBaseYAMLObject):
'''Unicode like object that is not evaluated (decrypted) until it needs to be'''
__UNSAFE__ = True
__ENCRYPTED__ = True
yaml_tag = u'!vault'
[...]
您最终会维护自己的自定义版本 Ansible。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.