繁体   English   中英

Ansible Tower-如何获取环境变量列表

[英]Ansible Tower - How to get a list of the environment variables

在Tower中,有很多选项可以在执行之前添加环境变量。 我设置了一些变量,将它们放入python目录脚本中。 但是,脚本以错误响应。 我认为python代码未获取值或值的格式不正确。

我想看看环境变量如何暴露给python脚本。 有没有办法将这些添加到作业日志的调试输出中?

只要使用调试与“ENV”沿着lookup.Below home是环境变量。

- name: Show env variable
  debug:
    msg: "{{ lookup('env','HOME') }}"

https://docs.ansible.com/ansible/latest/plugins/lookup/env.html

问题是我没有执行剧本。 我正在执行一个自定义的python库存脚本,我需要能够看到Ansible如何加载变量,以便能够解决脚本为何不加载变量的问题。 我在python脚本中添加了一些代码,向我发送了一封包含环境变量列表的电子邮件。 您也可以将其写入驱动器上的文件,但是如果您使用的是塔式硬盘,则必须在管理设置->作业->要公开的路径下公开文件夹位置。 我认为在测试时只收到一封电子邮件会更容易。

import smtplib
import datetime
import time
ts = time.time()
st = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
output = ""
output +=('Time Start {} \r\n '.format(st))
for a in os.environ:
output +=('Var: {} Value: {} \r\n'.format(a, os.getenv(a)))
def send_email(addr_from, addr_to, contents):
svr = smtplib.SMTP('smtp.mail.local', 25)

msg = 'Subject: Subject goes here.\n\n{0}'.format(contents)
svr.sendmail(addr_from, addr_to, msg) 
send_email('addr_from@mail.com','addr_to@mail.com',output)

这是变量的图片

塔架环境变量

然后是脚本的图片。

错误的剧本

但这没有用。 这是起作用的代码。

好代码

问题是,当您在python中查询环境变量时,如果它是字典,它将返回单引号,并且您必须将其转换为双引号并json.loads以使其作为字典加载。

解决了多个问题。 我希望这可以帮助其他需要使用Ansible进行故障排除的人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM