ホームページ  >  記事  >  バックエンド開発  >  Golang スクリプトで Terraform (HCL 形式) ファイルの値を変更するにはどうすればよいですか?

Golang スクリプトで Terraform (HCL 形式) ファイルの値を変更するにはどうすればよいですか?

WBOY
WBOY転載
2024-02-09 12:06:28907ブラウズ

如何让 Golang 脚本修改 Terraform(HCL 格式)文件中的值?

php Xiaobian Youzi は、Golang スクリプトを使用して Terraform (HCL 形式) ファイルの値を変更する方法を説明します。 Terraform は、クラウド インフラストラクチャの管理と自動化に役立つコードとしてのインフラストラクチャ ツールです。ただし、Terraform ファイル内の特定の値を頻繁に変更する必要がある場合、手動操作は非常に面倒になります。したがって、Golang スクリプトを使用して Terraform ファイルの値を変更する方が効率的な方法になります。この記事では、この目標を達成するために Golang を使用してスクリプトを作成し、Terraform ファイルの値を簡単に変更できるようにする方法を説明します。

質問の内容

Azure ネットワーク セキュリティ グループを定義する手持ちの terraform ファイルに対して、少量の自動化を実行しようとしています。基本的に、Web サイトと SSH アクセスを持っています。icanhazip.com から取得できるパブリック IP アドレスを許可したいだけです。 golang スクリプトを使用して、.tf ファイルの関連部分に IP を書き込みたいと考えています (本質的に security_rule.source_address_prefixes の値を設定します)。

golang で hclsimple ライブラリを使用しようとして、gohclhclwrite などを試しましたが、本質的には hcl ファイルを golang に変換していますが、進歩はありませんでした構造上。

私の terraform ファイル (hcl 形式だと思います) は次のとおりです:

リーリー

これは、上記のデータを構造として表現し、.tf ファイル自体をデコードしようとした golang スクリプトで得られたものです (次のようにするために、hclsimple からいくつかのメソッドをローカルにコピーしました)ドキュメントの推奨事項に従って、.tf ファイルをデコードします。

リーリー

コードを実行すると、基本的に networksecuritygroup.securityrule を定義しようとしており、上記のコードを使用すると次のエラーが発生します。

リーリー

いかなる提案も大歓迎です

回避策

したがって、現時点では https://www.php.cn/link/f56de5ef149cf0aedcc8f4797031e229 は不可能です (ここを参照https://www.php.cn/link/f56de5ef149cf0aedcc8f4797031e229/issues/50 - この提案hclwrite自体は便宜上変更する必要があります)

@martin atkins が提案したように解決しました:

locals 変数を含む locals.tf ファイルを作成し、nsg セキュリティ ルールで参照しました。 リーリー

ここで、IP を取得し、sed を使用して locals.tf ファイルの値を更新します

リーリー

以上がGolang スクリプトで Terraform (HCL 形式) ファイルの値を変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。