”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > samwise-CLI:开源 Terraform 模块依赖性跟踪器

samwise-CLI:开源 Terraform 模块依赖性跟踪器

发布于2024-11-07
浏览:637

地形

Terraform 是一种用 Hashicorp 配置语言 (HCL) 编写的基础设施即代码 (IaC) 工具。本文假设读者已经使用过 Terraform 并了解模块的工作原理。

在 Terraform 中编码的每个人都创建了自己的模块,或者至少使用了其他人的模块。

地形模块

模块是一起使用的多个资源的容器。模块由保存在一个目录中的 .tf 和/或 .tf.json 文件的集合组成。

模块是Terraform打包和重用资源配置的主要方式。

模块可以发布到 Terraform 注册表或 GitLab 等注册表。还可以通过提供 HTTPS 或 SSH URL 从 Git 存储库提供模块。这些也可以进行版本控制。例如,

module "consul" {
  source = "github.com/hashicorp/example"
}

版本:

module "consul" {
  source = "github.com/hashicorp/example?ref=1.2.6"
}

挑战

随着您的存储库的增长以及您在其他存储库中引用您的模块,您将合理地对您的模块进行版本控制,以确保源代码中的上游更改不会破坏您的基础设施。然而,跟踪正在使用的模块的所有新版本是很困难的,更难定期进行。如果不加以解决,随着时间的推移,这个问题就会成为技术债务,因为有一天你发现某个核心模块现在已经领先了 3 个主要版本。

解决方案

展示 samwise-cli,这是一个帮助跟踪存储库上游的 Terraform/OpenTofu 依赖项的工具。在存储库中搜索模块的使用情况,并生成具有可用更新的模块的报告以及比当前使用的版本更高级的所有版本。

samwise-CLI: The Open Source Terraform module dependency tracker

目前,只有一个命令,但希望随着工具的开发,很快会有更多命令。

暂时随机回购

samwise-CLI: The Open Source Terraform module dependency tracker 达斯科技 / samwise-cli

一个 CLI 应用程序,陪伴您的 terraform 模块之旅,并分担模块依赖项更新的负担,就像一位勇敢的霍比特人帮助 Frodo 携带他的一样 :)

三智

一个 CLI 应用程序,陪伴您的 terraform 模块之旅,并分担模块依赖项更新的负担,就像一位勇敢的霍比特人帮助 Frodo 携带他的 :)

samwise-CLI: The Open Source Terraform module dependency tracker

%,( "' /%% / Cccc' (cause I couldn't find good enough Samwise Gamgee ASCII art) Frodo by Shanaka Dias">
                       \ : /
                    '-: __ :-'
                    -:  )(_ :--
                    -' |r-_i'-
            ,sSSSSs,   (2-,7
            sS';:'`Ss   )-j
           ;K e (e s7  /  (
            S, ''  SJ (  ;/
            sL_~~_;(S_)  _7
|,          'J)_.-' />'-' `Z
j J         /-;-A'-'|'--'-j\
 L L        )  |/   :    /  \
  \ \       | | |    '._.'|  L
   \ \      | | |       | \  J
    \ \    _/ | |       |  ',|
     \ L.,' | | |       |   |/
    _;-r-<_. __. _ l- l>…
在 GitHub 上查看

检查更新

samwise-CLI: The Open Source Terraform module dependency tracker

要在模块使用私有 GitHub 存储库的情况下运行,.samwise.yaml 配置文件需要作为参数传递或需要出现在用户的主目录中。

.samwise.yaml 格式:

github_key:
github_username:

目前仅支持 GitHub HTTPS 身份验证,很快将支持 SSH 身份验证。

结果

CSV 格式
samwise-CLI: The Open Source Terraform module dependency tracker

JSON 格式
samwise-CLI: The Open Source Terraform module dependency tracker

限制(或者更好地描述为要添加的功能)

  • 用于检索模块源的 SSH 身份验证
  • 跟踪 Hashicorp 的注册表模块(他们有一个 API 可以在此处列出版本)

名称的上下文

我爱指环王:)

版本声明 本文转载于:https://dev.to/thundersparkf/samwise-cli-the-open-source-terraform-module-dependency-tracker-3b1e?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 在Pandas中如何将年份和季度列合并为一个周期列?
    在Pandas中如何将年份和季度列合并为一个周期列?
    pandas data frame thing commans date lay neal and pree pree'和pree pree pree”,季度 2000 q2 这个目标是通过组合“年度”和“季度”列来创建一个新列,以获取以下结果: [python中的concate...
    编程 发布于2025-05-19
  • Java为何无法创建泛型数组?
    Java为何无法创建泛型数组?
    通用阵列创建错误 arrayList [2]; JAVA报告了“通用数组创建”错误。为什么不允许这样做?答案:Create an Auxiliary Class:public static ArrayList<myObject>[] a = new ArrayList<myO...
    编程 发布于2025-05-19
  • Spark DataFrame添加常量列的妙招
    Spark DataFrame添加常量列的妙招
    在Spark Dataframe ,将常数列添加到Spark DataFrame,该列具有适用于所有行的任意值的Spark DataFrame,可以通过多种方式实现。使用文字值(SPARK 1.3)在尝试提供直接值时,用于此问题时,旨在为此目的的column方法可能会导致错误。 df.withCo...
    编程 发布于2025-05-19
  • Android如何向PHP服务器发送POST数据?
    Android如何向PHP服务器发送POST数据?
    在android apache httpclient(已弃用) httpclient httpclient = new defaulthttpclient(); httppost httppost = new httppost(“ http://www.yoursite.com/script.p...
    编程 发布于2025-05-19
  • 为什么使用固定定位时,为什么具有100%网格板柱的网格超越身体?
    为什么使用固定定位时,为什么具有100%网格板柱的网格超越身体?
    网格超过身体,用100%grid-template-columns 为什么在grid-template-colms中具有100%的显示器,当位置设置为设置的位置时,grid-template-colly修复了?问题: 考虑以下CSS和html: class =“ snippet-code”> g...
    编程 发布于2025-05-19
  • 在C#中如何高效重复字符串字符用于缩进?
    在C#中如何高效重复字符串字符用于缩进?
    在基于项目的深度下固定字符串时,重复一个字符串以进行凹痕,很方便有效地有一种有效的方法来返回字符串重复指定的次数的字符串。使用指定的次数。 constructor 这将返回字符串“ -----”。 字符串凹痕= new String(' - ',depth); console.Wr...
    编程 发布于2025-05-19
  • 如何使用Regex在PHP中有效地提取括号内的文本
    如何使用Regex在PHP中有效地提取括号内的文本
    php:在括号内提取文本在处理括号内的文本时,找到最有效的解决方案是必不可少的。一种方法是利用PHP的字符串操作函数,如下所示: 作为替代 $ text ='忽略除此之外的一切(text)'; preg_match('#((。 &&& [Regex使用模式来搜索特...
    编程 发布于2025-05-19
  • 如何解决由于Android的内容安全策略而拒绝加载脚本... \”错误?
    如何解决由于Android的内容安全策略而拒绝加载脚本... \”错误?
    Unveiling the Mystery: Content Security Policy Directive ErrorsEncountering the enigmatic error "Refused to load the script..." when deployi...
    编程 发布于2025-05-19
  • Java中Lambda表达式为何需要“final”或“有效final”变量?
    Java中Lambda表达式为何需要“final”或“有效final”变量?
    Lambda Expressions Require "Final" or "Effectively Final" VariablesThe error message "Variable used in lambda expression shou...
    编程 发布于2025-05-19
  • 如何避免Go语言切片时的内存泄漏?
    如何避免Go语言切片时的内存泄漏?
    ,a [j:] ...虽然通常有效,但如果使用指针,可能会导致内存泄漏。这是因为原始的备份阵列保持完整,这意味着新切片外部指针引用的任何对象仍然可能占据内存。 copy(a [i:] 对于k,n:= len(a)-j i,len(a); k
    编程 发布于2025-05-19
  • 如何使用PHP从XML文件中有效地检索属性值?
    如何使用PHP从XML文件中有效地检索属性值?
    从php PHP陷入困境。使用simplexmlelement :: attributes()函数提供了简单的解决方案。此函数可访问对XML元素作为关联数组的属性: - > attributes()为$ attributeName => $ attributeValue){ echo ...
    编程 发布于2025-05-19
  • PHP未来:适应与创新
    PHP未来:适应与创新
    PHP的未来将通过适应新技术趋势和引入创新特性来实现:1)适应云计算、容器化和微服务架构,支持Docker和Kubernetes;2)引入JIT编译器和枚举类型,提升性能和数据处理效率;3)持续优化性能和推广最佳实践。 引言在编程世界中,PHP一直是网页开发的中流砥柱。作为一个从1994年就开始发展...
    编程 发布于2025-05-19
  • 为什么我的CSS背景图像出现?
    为什么我的CSS背景图像出现?
    故障排除:CSS背景图像未出现 ,您的背景图像尽管遵循教程说明,但您的背景图像仍未加载。图像和样式表位于相同的目录中,但背景仍然是空白的白色帆布。而不是不弃用的,您已经使用了CSS样式: bockent {背景:封闭图像文件名:背景图:url(nickcage.jpg); 如果您的html,css...
    编程 发布于2025-05-19
  • PHP阵列键值异常:了解07和08的好奇情况
    PHP阵列键值异常:了解07和08的好奇情况
    PHP数组键值问题,使用07&08 在给定数月的数组中,键值07和08呈现令人困惑的行为时,就会出现一个不寻常的问题。运行print_r($月)返回意外结果:键“ 07”丢失,而键“ 08”分配给了9月的值。此问题源于PHP对领先零的解释。当一个数字带有0(例如07或08)的前缀时,PHP将其...
    编程 发布于2025-05-19
  • 如何有效地转换PHP中的时区?
    如何有效地转换PHP中的时区?
    在PHP 利用dateTime对象和functions DateTime对象及其相应的功能别名为时区转换提供方便的方法。例如: //定义用户的时区 date_default_timezone_set('欧洲/伦敦'); //创建DateTime对象 $ dateTime = ne...
    编程 发布于2025-05-19

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3