2024-04-17 18:53:54 发布
网友
我正在尝试用Python编辑Terraform配置文件。我正在使用pythonhcl2库解析地形文件(.tf),该库返回一个python字典。我想添加新的键/值对或更改字典中的某些值。直接写入文件不是一种好的做法,因为返回的python字典不是Hashicorp配置语言格式。还可以有多个配置文件,如variables.tf等,它们链接在一起。我应该实现自己的序列化程序,将python字典转换为terraform配置文件,还是有更简单的方法
python-hcl2库实现了HCL语法的解析器,但它没有序列化程序,它的API设计用于删除所有HCL细节,只保留基本的Python数据结构,因此它似乎没有保留足够的信息来通过外科手术修改输入,而不会丢失注释、属性排序等细节,等等
python-hcl2
在我写这篇文章的时候,唯一明确支持就地更新现有配置文件的HCL实现是Go包^{}。它允许调用者加载任意HCL源,通过外科手术修改其中的部分,然后重新序列化更新的版本,只需对输入的未更改部分进行少量的空白规范化
原则上,如果您不关心保留未更改的输入,那么可以将hclwrite移植到Python,或者从类似python-hcl2返回的字典中实现序列化程序,但这两个似乎都是一个重要的项目
hclwrite
如果您确实决定这样做,一个值得注意的部分是将字符串序列化为HCL语法,因为所需的转义与任何其他语言都不完全相同。您可能希望从hclwrite中引用the ^{} function,以查看要处理的所有情况,因此您可以在Python中实现兼容逻辑
python-hcl2
库实现了HCL语法的解析器,但它没有序列化程序,它的API设计用于删除所有HCL细节,只保留基本的Python数据结构,因此它似乎没有保留足够的信息来通过外科手术修改输入,而不会丢失注释、属性排序等细节,等等在我写这篇文章的时候,唯一明确支持就地更新现有配置文件的HCL实现是Go包^{} 。它允许调用者加载任意HCL源,通过外科手术修改其中的部分,然后重新序列化更新的版本,只需对输入的未更改部分进行少量的空白规范化
原则上,如果您不关心保留未更改的输入,那么可以将
hclwrite
移植到Python,或者从类似python-hcl2
返回的字典中实现序列化程序,但这两个似乎都是一个重要的项目如果您确实决定这样做,一个值得注意的部分是将字符串序列化为HCL语法,因为所需的转义与任何其他语言都不完全相同。您可能希望从} function ,以查看要处理的所有情况,因此您可以在Python中实现兼容逻辑
hclwrite
中引用the ^{相关问题 更多 >
编程相关推荐