有没有办法让我的python脚本获取所有定义的变量,而不将其全部传入?

问题描述

有没有一种方法,myscript.py可以访问我的剧本中的所有这些变量而无需从命令行传递它们?我有一个python脚本,需要大约30个环境变量来呈现模板。我不能使用jinja2,因为在使用set和include时jinja2中存在错误。所以我不得不写一个脚本来完成这项工作。

- name: this is my name
  script: ./roles/jboss/myscript.py --target_hostname "{{ansible_hostname}}" --role_path "{{role_path}}" --is_production "{{is_production}}"  --rel_man "{{release_manifest_file}}" --rm_vendor_type "{{rm_vendor_type}}" --group_name "{{group_names}}"
  args:
    executable: python3
  delegate_to: localhost
  register: build_log_profile_output
  tags: always

解决方法

我不能使用jinja2,因为当您使用集合和包含时jinja2中存在一个错误

听起来像您的实际问题,但回答问题的精神是:我相信环境可能是您从身处到想要成为的最短路径:

- name: this is my name
  script: ./roles/jboss/myscript.py
  args:
    executable: python3
  environment:
    ANSIBLE_JSON: '{{ vars | to_json }}'
  delegate_to: localhost
  register: build_log_profile_output

然后在您的脚本中:

import json
import os
vars = json.loads(os.getenv('ANSIBLE_JSON'))

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...