提供一个decorator,它为数据源实现terraform的外部程序协议。

terraform-external-data的Python项目详细描述


关于

提供一个decorator,该decorator为数据源实现terraform的external program protocol

  • stdin读取json。
  • 验证输入。
  • 将json输出到stdout
  • 验证输出。
  • stderr上打印可读的单行错误。
  • 返回错误时的非零状态代码。

这样可以避免修改规范,并且可以轻松编写多个外部数据脚本而无需重复 代码。

包装的函数必须期望其第一个位置参数是查询数据的字典。

有关开发和运行测试的说明,请参见contributing guide

示例用法

  1. 一如既往,创建并激活一个venv

    python -m venv env
    source env/bin/activate
    
  2. 在env中安装terraform_external_data。

    pip install terraform_external_data
    
  3. terraform_external_data(下面的@语法)修饰的数据收集函数编写脚本。函数必须至少接受一个参数,即terraform传入的查询数据。例如,get_cool_data.py

    fromterraform_external_dataimportterraform_external_data@terraform_external_datadefget_cool_data(query):"""
        Dummy function that simulates data collection with a count.
    
        Here you could reach out to an API, inspect local files, etc.
        """count=0foriinrange(3):count+=1# Terraform requires the values you return be strings,# so terraform_external_data will error if they aren't.return{query['thing_to_count']:str(count)}if__name__=='__main__':# Always protect Python scripts from import side effects with# a condition to check the __name__. Not specifically necessary# for terraform_external_data, but it's a best practice in general.get_cool_data()
  4. data资源添加到terraform文件中。例如,terraform.tf

    data "external" "cars_count" {
      program = ["python", "${path.module}/get_cool_data.py"]
    
      query = {
        # This is the query data your function will receive as an argument.
        thing_to_count = "cars"
      }
    }
    
    # Reference the data like any terraform var. This example uses an
    # output so it doesn't modify infrastructure.
    output "cars_count" {
      value = data.external.cars_count.result.cars
    }
    

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java什么数据库最类似于Map,每个用户/id存储无限多个“键”和“值”?   java仅使用super pom进行测试   内存不足如何解析java。OutOfMemoryError:Java堆空间在增加堆大小的情况下将意味着延迟OutOfMemoryError   来自另一个类的mysql和java jdbc调用[运行时应用程序]   java通过下拉菜单更改搜索框搜索的内容   JAVAlang.ClassNotFoundException:sun。jdbc。odbc。JdbcOdbcDriver   java Selenium点击链接   JavaSpringHibernate:从唯一值列表中获取对象列表   java Bing广告与桌面身份验证问题   java如何在没有任何外部SDK的情况下从安卓打印到收据打印机?   未调用java菜单片段类   java在IDEA和PyCharm中同时为同一个项目工作   java我们如何为同一个异常提供不同的海关信息   jakarta ee中是否预定义了“请求”和“响应”变量或值?   java更好地解决“之前和之后”难题?   尝试将数据从Excel添加到Java   发送电子邮件的Java代码只适用于一个电子邮件id?   java如何从资产解析XML?