gpt4 book ai didi

python - Python 中的 Ansible 自定义模块 - 如何解析相对角色文件路径?

转载 作者:太空宇宙 更新时间:2023-11-03 17:45:05 28 4
gpt4 key购买 nike

我正在用 Python 编写一个新的 Ansible 自定义模块。

我希望能够解析代码中的路径(以便读取其内容),就像 file 一样和copy模块在接收 src 中的相对路径时执行的操作例如,参数(路径相对于 root-dir/roles/x/files )。

可以这样做吗?如果是这样,怎么办?

由于目前这似乎不可能,我添加了一个功能请求 here .

最佳答案

我已经在“ansible-devel”小组上发布了这个问题,他们给了我一个方向,让我找到了答案。

您可以编写自定义操作插件并将其放置在 root-playbook-dir/action_plugins 下。文件名必须是“your_mod_name.py”

代码如下:

#!/usr/bin/python

from ansible.runner.lookup_plugins.file import LookupModule as FilePlugin
from ansible import utils

class ActionModule(object):

def __init__(self, runner):
self.runner = runner

def run(self, conn, tmp_path, module_name, module_args, inject, complex_args=None, **kwargs):

options = {}
options.update(utils.parse_kv(module_args))

file_plugin = FilePlugin()
files_content = file_plugin.run(terms=options.get('myarg'), inject=inject)
options['myarg'] = files_content[0]

return self.runner._execute_module(conn=conn, tmp="/tmp", module_name="mymod", args=utils.serialize_args(options), inject=inject)

代码使用"file"查找插件读取文件,然后执行自定义模块并返回其结果。

最终,您的自定义模块将接收“myarg”参数中的文件内容(而不是路径)。

关于python - Python 中的 Ansible 自定义模块 - 如何解析相对角色文件路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29938413/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com