これは、なにをしたくて書いたもの?
Terraformを使っていると、自分でモジュールを作ることがあります。
最初は、自前のルートモジュール内にサブモジュールを作り、こんな感じで使うのだと思います。
module "my_module" { source = "./modules/my_module" ... }
ですが、モジュール自体が外部(Terraform RegistryやGitリポジトリ)にあった時に、その中でサブモジュールを使っていた場合に
どういう挙動になるか確認したことがなかったので、1度見ておこうかな、と。
環境
今回の環境は、こちらです。
$ terraform version Terraform v0.12.28 + provider.mysql v1.9.0
Terraform ProviderにはMySQL Providerを使うので、この時に使うMySQLは8.0.20、サーバーは172.17.0.2で動作しているものと
します。
また、モジュールは自前のGitLabで管理することにします。GitLabのバージョンは13.1.4、サーバーは192.168.0.3で動作している
ものとします。
お題
MySQLデータベースとユーザー、権限を作成するモジュールを作り、GitLab上に保存します。この時、ユーザーと権限は
サブモジュールとして構成します。
モジュールのソースとして、汎用Gitリポジトリを使う感じですね。
Module Sources / Generic Git Repository
このモジュールおよびサブモジュールがふつうに使えるかどうかを確認してみたいと思います。
なお、今回利用するGitLabは自前でインストールしたものですが、リポジトリの種類としてはPublicリポジトリを使います。
要するに、リポジトリを参照するのに認証は不要です。
モジュールを作成する
では、最初にモジュールを作成しましょう。
最初に、ルートモジュールから。
main.tf
resource "mysql_database" "this" { name = var.database_name default_character_set = "utf8mb4" default_collation = "utf8mb4_ja_0900_as_cs_ks" } module "user" { source = "./modules/user" database_name = mysql_database.this.name user_name = var.user_name user_password = var.user_password user_host = var.user_host grant_privileges = var.grant_privileges }
mysql_databaseリソースでデータベースを作成し、ユーザーや権限はサブモジュールの構成にしています。
Input Variables。
variables.tf
variable "database_name" { type = string } variable "user_name" { type = string } variable "user_password" { type = string } variable "user_host" { type = string default = "%" } variable "grant_privileges" { type = list(string) default = ["ALL"] }
バージョンの指定。
versions.tf
terraform { required_version = ">= 0.12.28" required_providers { mysql = ">= 1.9.0" } }
続いて、サブモジュールの方へ。
modules/user/main.tf
resource "mysql_user" "user" { user = var.user_name host = var.user_host plaintext_password = var.user_password } resource "mysql_grant" "grant" { user = mysql_user.user.user host = var.user_host database = var.database_name privileges = var.grant_privileges }
Input Variables。
modules/user/variables.tf
variable "user_name" { type = string } variable "user_password" { type = string } variable "user_host" { type = string default = "%" } variable "database_name" { type = string } variable "grant_privileges" { type = list(string) default = ["ALL"] }
これをGitリポジトリ(GitLab)に登録して、準備は完了です。
リポジトリ名は「hello-module-git-source」とします。
モジュールを使ってみる
それでは、このモジュールを使ってみましょう。
別のディレクトリに、Terraformのリソース定義ファイルを用意します。
main.tf
terraform { required_version = "0.12.28" } provider "mysql" { endpoint = "172.17.0.2:3306" username = "root" password = "password" version = "1.9.0" } module "mysql_database_user" { source = "git::http://192.168.0.3/kazuhira/hello-module-git-source.git" database_name = "my_database" user_name = "user" user_password = "password" }
モジュールは、GitLab上のリポジトリを指すようになっています。
module "mysql_database_user" { source = "git::http://192.168.0.3/kazuhira/hello-module-git-source.git" database_name = "my_database" user_name = "user" user_password = "password" }
initしてapplyしてみます。
$ terraform init $ terraform apply
特に何事もなく実行できました。
module.mysql_database_user.mysql_database.this: Creating... module.mysql_database_user.module.user.mysql_user.user: Creating... module.mysql_database_user.module.user.mysql_user.user: Creation complete after 0s [id=user@%] module.mysql_database_user.mysql_database.this: Creation complete after 0s [id=my_database] module.mysql_database_user.module.user.mysql_grant.grant: Creating... module.mysql_database_user.module.user.mysql_grant.grant: Creation complete after 0s [id=user@%:`my_database`] Apply complete! Resources: 3 added, 0 changed, 0 destroyed.
まあ、これでできなかったらどうしよう感はあったので、いいのですが。
どうなっている?
ここで、「.terraform」ディレクトリの中にダウンロードされたモジュールを見てみます。
$ find .terraform/modules/mysql_database_user -type f | grep -v '.git' .terraform/modules/mysql_database_user/versions.tf .terraform/modules/mysql_database_user/main.tf .terraform/modules/mysql_database_user/variables.tf .terraform/modules/mysql_database_user/modules/user/main.tf .terraform/modules/mysql_database_user/modules/user/variables.tf
ふつうにファイルがありますね。
ドキュメントを見ても、git cloneするようなことが書かれています。
Terraform installs modules from Git repositories by running git clone, and so it will respect any local Git configuration set on your system, including credentials.
Module Sources / Generic Git Repository
こう見ると、サブモジュールの方はgit cloneされたディレクトリ内のローカルパスとして動いているような気がします。
合ってるんでしょうか?
サブモジュールを使う
興味が出たので、もうちょっと追ってみましょう。
このGitリポジトリにあるサブモジュールを直接使えるのでしょうか?
使えるようです。
Module Sources / Modules in Package Sub-directories
パスの指定方法はソースごと違いがある(Terraform Registryとそれ以外?)ようですが、Gitリポジトリならこんな感じに。
main.tf
terraform { required_version = "0.12.28" } provider "mysql" { endpoint = "172.17.0.2:3306" username = "root" password = "password" version = "1.9.0" } resource "mysql_database" "this" { name = "my_database2" } module "mysql_database_user" { source = "git::http://192.168.0.3/kazuhira/hello-module-git-source.git//modules/user" database_name = mysql_database.this.name user_name = "user" user_password = "password" }
「//」が2つ付きます。
source = "git::http://192.168.0.3/kazuhira/hello-module-git-source.git//modules/user"
あとはinitしてapply。
$ terraform init $ terraform apply
問題なく実行できます、と。
Terraform Registryからダウンロードした場合の形式は?
今回、Gitリポジトリからモジュールをインストールしました。この場合、git cloneしたと思われる内容が展開されていたわけですが、
Terraform Registryからインストールした場合はどうなるのでしょう?
1番使われるのは、この形態だと思うので。
今回は、内部にサブモジュールを含んでいる、AWSのSecurity Group用のモジュールで確認してみます。
あくまで、initまでの確認です。
動かす気はないので、これくらいを用意して
main.tf
terraform { required_version = "0.12.28" } provider "aws" { version = "2.70.0" } module "security_group" { source = "terraform-aws-modules/security-group/aws" version = "3.12" }
init。
$ terraform init
ファイルがごっそりダウンロードされてくる感じなんですね。まあ、Terraformの内部ディレクトリの話なので変わることも
あるのでしょうが、今の時点だとこうです、と。モジュールのソースをGitリポジトリにしても、Terraform Registryにしても、
同じように使えそうな雰囲気ですね。
$ find .terraform/modules/security_group -type f .terraform/modules/security_group/terraform-aws-security-group-3.12.0/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/rules.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/LICENSE .terraform/modules/security_group/terraform-aws-security-group-3.12.0/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/.editorconfig .terraform/modules/security_group/terraform-aws-security-group-3.12.0/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/.pre-commit-config.yaml .terraform/modules/security_group/terraform-aws-security-group-3.12.0/CHANGELOG.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/update_groups.sh .terraform/modules/security_group/terraform-aws-security-group-3.12.0/.gitignore .terraform/modules/security_group/terraform-aws-security-group-3.12.0/Makefile .terraform/modules/security_group/terraform-aws-security-group-3.12.0/.chglog/CHANGELOG.tpl.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/.chglog/config.yml .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/nfs/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/nfs/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/nfs/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/nfs/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/nfs/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/nfs/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ssh/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ssh/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ssh/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ssh/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ssh/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ssh/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/kafka/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/kafka/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/kafka/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/kafka/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/kafka/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/kafka/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ipsec-4500/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ipsec-4500/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ipsec-4500/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ipsec-4500/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ipsec-4500/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ipsec-4500/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/alertmanager/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/alertmanager/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/alertmanager/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/alertmanager/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/alertmanager/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/alertmanager/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/mssql/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/mssql/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/mssql/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/mssql/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/mssql/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/mssql/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/http-80/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/http-80/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/http-80/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/http-80/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/http-80/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/http-80/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/https-443/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/https-443/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/https-443/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/https-443/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/https-443/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/https-443/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/nomad/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/nomad/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/nomad/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/nomad/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/nomad/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/nomad/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/docker-swarm/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/docker-swarm/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/docker-swarm/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/docker-swarm/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/docker-swarm/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/docker-swarm/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/mysql/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/mysql/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/mysql/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/mysql/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/mysql/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/mysql/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ntp/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ntp/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ntp/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ntp/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ntp/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ntp/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/redis/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/redis/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/redis/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/redis/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/redis/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/redis/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/splunk/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/splunk/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/splunk/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/splunk/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/splunk/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/splunk/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/_templates/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/_templates/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/_templates/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/_templates/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/zipkin/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/zipkin/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/zipkin/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/zipkin/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/zipkin/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/zipkin/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/http-8080/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/http-8080/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/http-8080/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/http-8080/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/http-8080/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/http-8080/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/graphite-statsd/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/graphite-statsd/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/graphite-statsd/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/graphite-statsd/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/graphite-statsd/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/graphite-statsd/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/kibana/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/kibana/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/kibana/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/kibana/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/kibana/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/kibana/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ipsec-500/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ipsec-500/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ipsec-500/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ipsec-500/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ipsec-500/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ipsec-500/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/storm/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/storm/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/storm/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/storm/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/storm/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/storm/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/puppet/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/puppet/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/puppet/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/puppet/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/puppet/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/puppet/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/web/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/web/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/web/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/web/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/web/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/web/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/cassandra/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/cassandra/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/cassandra/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/cassandra/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/cassandra/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/cassandra/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/rdp/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/rdp/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/rdp/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/rdp/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/rdp/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/rdp/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/openvpn/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/openvpn/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/openvpn/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/openvpn/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/openvpn/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/openvpn/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/logstash/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/logstash/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/logstash/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/logstash/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/logstash/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/logstash/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/squid/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/squid/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/squid/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/squid/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/squid/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/squid/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/prometheus/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/prometheus/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/prometheus/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/prometheus/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/prometheus/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/prometheus/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/grafana/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/grafana/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/grafana/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/grafana/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/grafana/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/grafana/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/memcached/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/memcached/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/memcached/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/memcached/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/memcached/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/memcached/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/kubernetes-api/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/kubernetes-api/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/kubernetes-api/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/kubernetes-api/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/kubernetes-api/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/kubernetes-api/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/https-8443/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/https-8443/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/https-8443/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/https-8443/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/https-8443/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/https-8443/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/redshift/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/redshift/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/redshift/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/redshift/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/redshift/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/redshift/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/zookeeper/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/zookeeper/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/zookeeper/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/zookeeper/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/zookeeper/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/zookeeper/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/oracle-db/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/oracle-db/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/oracle-db/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/oracle-db/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/oracle-db/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/oracle-db/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/winrm/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/winrm/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/winrm/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/winrm/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/winrm/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/winrm/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/carbon-relay-ng/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/carbon-relay-ng/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/carbon-relay-ng/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/carbon-relay-ng/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/carbon-relay-ng/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/carbon-relay-ng/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/consul/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/consul/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/consul/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/consul/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/consul/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/consul/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/postgresql/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/postgresql/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/postgresql/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/postgresql/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/postgresql/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/postgresql/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ldaps/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ldaps/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ldaps/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ldaps/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ldaps/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/ldaps/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/rabbitmq/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/rabbitmq/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/rabbitmq/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/rabbitmq/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/rabbitmq/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/rabbitmq/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/activemq/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/activemq/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/activemq/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/activemq/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/activemq/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/activemq/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/mongodb/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/mongodb/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/mongodb/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/mongodb/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/mongodb/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/mongodb/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/minio/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/minio/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/minio/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/minio/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/minio/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/minio/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/elasticsearch/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/elasticsearch/versions.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/elasticsearch/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/elasticsearch/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/elasticsearch/variables.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/modules/elasticsearch/auto_values.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/examples/computed/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/examples/computed/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/examples/computed/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/examples/disabled/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/examples/disabled/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/examples/disabled/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/examples/dynamic/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/examples/dynamic/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/examples/dynamic/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/examples/complete/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/examples/complete/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/examples/complete/main.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/examples/http/outputs.tf .terraform/modules/security_group/terraform-aws-security-group-3.12.0/examples/http/README.md .terraform/modules/security_group/terraform-aws-security-group-3.12.0/examples/http/main.tf