Ansible:从自定义模块中访问主机/组变量
有没有办法通过自定义书写模块访问主机/组变量? 我想避免将所有必需的变量作为模块参数传递。
我的模块是用Python编写的,我使用样板。 我检查了几乎所有可用的变量,但它们不存储在任何地方:
def main():
pprint(dir())
pprint(globals())
pprint(locals())
for name in vars().keys():
print(name)
现在我唯一的希望就是它们可以通过未公开的模块应用来访问。
我猜这是不可能的,因为模块在目标机器上运行,事实/主机/组变量可能不会随模块一起传输......
编辑:现在找到模块实用程序,它看起来没有前途。
我认为你在这里用你的想法几乎击倒了你的头脑:
我猜这是不可能的,因为模块在目标机器上运行,事实/主机/组变量可能不会随模块一起传输......
然而,话虽如此,如果你真的需要这样做,那么可能会有一点点混乱的做法。 从Ansible 1.8开始,您可以设置事实缓存,它使用redis来缓存游戏之间的事实。 由于redis非常易于使用,并且拥有大多数常用编程语言的客户端,因此您可以让您的模块在redis服务器上查询您需要的任何事实。 这不完全是最干净的方式,但它可能工作。
有没有办法通过自定义书写模块访问主机/组变量?
不是内置的。
你将不得不以某种方式通过他们:
pickle
或yaml.dump()
或json
或...)并发送文件。 不幸的是,你不能直接发送完整的host / groupvar文件,因为你必须实现变量范围/优先级解析算法,这个算法是不确定的(这不是禅定哲学中可以定义这种小东西的哲学: P)。
链接地址: http://www.djcxy.com/p/84095.html上一篇: Ansible: Access host/group vars from within custom module