diff --git a/Makefile b/Makefile index 867a45d..4e8180e 100644 --- a/Makefile +++ b/Makefile @@ -7,6 +7,7 @@ major: NEXT_VERSION = $(shell echo $(LAST_TAG) | awk -F'[v.]' '{$$2++; print $$2 patch minor major: graph @if [ -z "${COMMITS}" ]; then echo "No new commits found after ${LAST_TAG}, aborting."; fi + @if [ -n "$(git ls-files -om graph.svg)" ]; then echo "Uncommited graph.svg detected, aborting."; fi @if [ -n "${COMMITS}" ]; then git tag -s "v${NEXT_VERSION}" -m "Version ${NEXT_VERSION}"; fi release: check @@ -17,4 +18,7 @@ release: check check: @if ! which hub terraform dot > /dev/null; then echo "Missing dependency. Required: hub, terraform, dot." && exit 1; fi; -.PHONY: patch minor major release check +graph: + @terraform graph -module-depth=100 -draw-cycles | dot -Gsplines=ortho -Gconcentrate=true -Grankdir=RL -Tsvg > graph.svg + +.PHONY: patch minor major release check graph diff --git a/README.md b/README.md index 7bd7700..4b83df5 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ See [`variables.tf`](variables.tf) for a list of configurable parameters. To include this module in your Terraform code-base, use the following snippet: -```terraform +```hcl module "dcos" { source = "github.com/jeanmertz/terraform-dcos" @@ -36,9 +36,13 @@ instructions: * clone the repository * create a `terraform.tfvars` file with all the (required) variables -* *optionslly* run `terraform plan -out terraform.plan` +* *optionally* run `terraform plan -out terraform.plan` * run `terraform apply [terraform.plan]` +## Dependency Graph + +[![graph](https://rawgit.com/JeanMertz/terraform-dcos/master/graph.svg)](graph.svg) + ## Origin This module is an implementation of the official "Single Master" diff --git a/graph.svg b/graph.svg new file mode 100644 index 0000000..01dda91 --- /dev/null +++ b/graph.svg @@ -0,0 +1,888 @@ + + + + + + +%3 + + +[root] aws_autoscaling_group.master_server_group + +aws_autoscaling_group.master_server_group + + +[root] aws_launch_configuration.master + +aws_launch_configuration.master + + +[root] aws_autoscaling_group.master_server_group->[root] aws_launch_configuration.master + + + + +[root] aws_autoscaling_group.public_slave_server_group + +aws_autoscaling_group.public_slave_server_group + + +[root] aws_elb.public_slaves + +aws_elb.public_slaves + + +[root] aws_autoscaling_group.public_slave_server_group->[root] aws_elb.public_slaves + + + + +[root] aws_launch_configuration.public_slave + +aws_launch_configuration.public_slave + + +[root] aws_autoscaling_group.public_slave_server_group->[root] aws_launch_configuration.public_slave + + + + +[root] aws_autoscaling_group.slave_server_group + +aws_autoscaling_group.slave_server_group + + +[root] aws_launch_configuration.slave + +aws_launch_configuration.slave + + +[root] aws_autoscaling_group.slave_server_group->[root] aws_launch_configuration.slave + + + + +[root] aws_subnet.private + +aws_subnet.private + + +[root] aws_autoscaling_group.slave_server_group->[root] aws_subnet.private + + + + +[root] aws_elb.dcos + +aws_elb.dcos + + +[root] aws_security_group.admin + +aws_security_group.admin + + +[root] aws_elb.dcos->[root] aws_security_group.admin + + + + +[root] aws_security_group.master_lb + +aws_security_group.master_lb + + +[root] aws_elb.dcos->[root] aws_security_group.master_lb + + + + +[root] aws_subnet.public + +aws_subnet.public + + +[root] aws_elb.dcos->[root] aws_subnet.public + + + + +[root] aws_elb.internal_master + +aws_elb.internal_master + + +[root] aws_elb.internal_master->[root] aws_security_group.admin + + + + +[root] aws_security_group.master + +aws_security_group.master + + +[root] aws_elb.internal_master->[root] aws_security_group.master + + + + +[root] aws_elb.internal_master->[root] aws_security_group.master_lb + + + + +[root] aws_security_group.public_slave + +aws_security_group.public_slave + + +[root] aws_elb.internal_master->[root] aws_security_group.public_slave + + + + +[root] aws_security_group.slave + +aws_security_group.slave + + +[root] aws_elb.internal_master->[root] aws_security_group.slave + + + + +[root] aws_elb.internal_master->[root] aws_subnet.public + + + + +[root] aws_elb.public_slaves->[root] aws_security_group.public_slave + + + + +[root] aws_elb.public_slaves->[root] aws_subnet.public + + + + +[root] aws_iam_access_key.host_keys + +aws_iam_access_key.host_keys + + +[root] aws_iam_user.dcos + +aws_iam_user.dcos + + +[root] aws_iam_access_key.host_keys->[root] aws_iam_user.dcos + + + + +[root] aws_iam_instance_profile.master + +aws_iam_instance_profile.master + + +[root] aws_iam_role.master + +aws_iam_role.master + + +[root] aws_iam_instance_profile.master->[root] aws_iam_role.master + + + + +[root] provider.aws + +provider.aws + + +[root] aws_iam_role.master->[root] provider.aws + + + + +[root] aws_iam_role_policy.master + +aws_iam_role_policy.master + + +[root] aws_iam_role_policy.master->[root] aws_iam_role.master + + + + +[root] aws_s3_bucket.exhibitor + +aws_s3_bucket.exhibitor + + +[root] aws_iam_role_policy.master->[root] aws_s3_bucket.exhibitor + + + + +[root] aws_iam_user.dcos->[root] provider.aws + + + + +[root] aws_iam_user_policy.dcos + +aws_iam_user_policy.dcos + + +[root] aws_iam_user_policy.dcos->[root] aws_iam_user.dcos + + + + +[root] aws_iam_user_policy.dcos->[root] aws_s3_bucket.exhibitor + + + + +[root] aws_instance.nat + +aws_instance.nat + + +[root] aws_key_pair.dcos + +aws_key_pair.dcos + + +[root] aws_instance.nat->[root] aws_key_pair.dcos + + + + +[root] aws_instance.nat->[root] aws_security_group.admin + + + + +[root] aws_instance.nat->[root] aws_security_group.master + + + + +[root] aws_instance.nat->[root] aws_security_group.slave + + + + +[root] aws_instance.nat->[root] aws_subnet.public + + + + +[root] aws_internet_gateway.dcos + +aws_internet_gateway.dcos + + +[root] aws_vpc.dcos + +aws_vpc.dcos + + +[root] aws_internet_gateway.dcos->[root] aws_vpc.dcos + + + + +[root] aws_key_pair.dcos->[root] provider.aws + + + + +[root] aws_launch_configuration.master->[root] aws_iam_instance_profile.master + + + + +[root] aws_launch_configuration.master->[root] aws_key_pair.dcos + + + + +[root] template_file.master_user_data + +template_file.master_user_data + + +[root] aws_launch_configuration.master->[root] template_file.master_user_data + + + + +[root] aws_launch_configuration.public_slave->[root] aws_key_pair.dcos + + + + +[root] template_file.public_slave_user_data + +template_file.public_slave_user_data + + +[root] aws_launch_configuration.public_slave->[root] template_file.public_slave_user_data + + + + +[root] aws_launch_configuration.slave->[root] aws_key_pair.dcos + + + + +[root] template_file.slave_user_data + +template_file.slave_user_data + + +[root] aws_launch_configuration.slave->[root] template_file.slave_user_data + + + + +[root] aws_network_acl.private + +aws_network_acl.private + + +[root] aws_network_acl.private->[root] aws_subnet.private + + + + +[root] aws_network_acl.public + +aws_network_acl.public + + +[root] aws_network_acl.public->[root] aws_subnet.public + + + + +[root] aws_route_table.private + +aws_route_table.private + + +[root] aws_route_table.private->[root] aws_instance.nat + + + + +[root] aws_route_table.public + +aws_route_table.public + + +[root] aws_route_table.public->[root] aws_internet_gateway.dcos + + + + +[root] aws_route_table_association.private + +aws_route_table_association.private + + +[root] aws_route_table_association.private->[root] aws_route_table.private + + + + +[root] aws_route_table_association.private->[root] aws_subnet.private + + + + +[root] aws_route_table_association.public + +aws_route_table_association.public + + +[root] aws_route_table_association.public->[root] aws_route_table.public + + + + +[root] aws_route_table_association.public->[root] aws_subnet.public + + + + +[root] aws_s3_bucket.exhibitor->[root] provider.aws + + + + +[root] aws_security_group.admin->[root] aws_vpc.dcos + + + + +[root] aws_security_group.master->[root] aws_vpc.dcos + + + + +[root] aws_security_group.master_lb->[root] aws_vpc.dcos + + + + +[root] aws_security_group.public_slave->[root] aws_vpc.dcos + + + + +[root] aws_security_group.slave->[root] aws_vpc.dcos + + + + +[root] aws_security_group_rule.admin_egress_all + +aws_security_group_rule.admin_egress_all + + +[root] aws_security_group_rule.admin_egress_all->[root] aws_security_group.admin + + + + +[root] aws_security_group_rule.admin_ingress_all + +aws_security_group_rule.admin_ingress_all + + +[root] aws_security_group_rule.admin_ingress_all->[root] aws_security_group.admin + + + + +[root] aws_security_group_rule.master_egress_all + +aws_security_group_rule.master_egress_all + + +[root] aws_security_group_rule.master_egress_all->[root] aws_security_group.master + + + + +[root] aws_security_group_rule.master_ingress_master + +aws_security_group_rule.master_ingress_master + + +[root] aws_security_group_rule.master_ingress_master->[root] aws_security_group.master + + + + +[root] aws_security_group_rule.master_ingress_master_lb_2181 + +aws_security_group_rule.master_ingress_master_lb_2181 + + +[root] aws_security_group_rule.master_ingress_master_lb_2181->[root] aws_security_group.master + + + + +[root] aws_security_group_rule.master_ingress_master_lb_2181->[root] aws_security_group.master_lb + + + + +[root] aws_security_group_rule.master_ingress_master_lb_5050 + +aws_security_group_rule.master_ingress_master_lb_5050 + + +[root] aws_security_group_rule.master_ingress_master_lb_5050->[root] aws_security_group.master + + + + +[root] aws_security_group_rule.master_ingress_master_lb_5050->[root] aws_security_group.master_lb + + + + +[root] aws_security_group_rule.master_ingress_master_lb_80 + +aws_security_group_rule.master_ingress_master_lb_80 + + +[root] aws_security_group_rule.master_ingress_master_lb_80->[root] aws_security_group.master + + + + +[root] aws_security_group_rule.master_ingress_master_lb_80->[root] aws_security_group.master_lb + + + + +[root] aws_security_group_rule.master_ingress_master_lb_8080 + +aws_security_group_rule.master_ingress_master_lb_8080 + + +[root] aws_security_group_rule.master_ingress_master_lb_8080->[root] aws_security_group.master + + + + +[root] aws_security_group_rule.master_ingress_master_lb_8080->[root] aws_security_group.master_lb + + + + +[root] aws_security_group_rule.master_ingress_master_lb_8081 + +aws_security_group_rule.master_ingress_master_lb_8081 + + +[root] aws_security_group_rule.master_ingress_master_lb_8081->[root] aws_security_group.master + + + + +[root] aws_security_group_rule.master_ingress_master_lb_8081->[root] aws_security_group.master_lb + + + + +[root] aws_security_group_rule.master_ingress_public_slave + +aws_security_group_rule.master_ingress_public_slave + + +[root] aws_security_group_rule.master_ingress_public_slave->[root] aws_security_group.master + + + + +[root] aws_security_group_rule.master_ingress_public_slave->[root] aws_security_group.public_slave + + + + +[root] aws_security_group_rule.master_ingress_slave + +aws_security_group_rule.master_ingress_slave + + +[root] aws_security_group_rule.master_ingress_slave->[root] aws_security_group.master + + + + +[root] aws_security_group_rule.master_ingress_slave->[root] aws_security_group.slave + + + + +[root] aws_security_group_rule.master_lb_egress_all + +aws_security_group_rule.master_lb_egress_all + + +[root] aws_security_group_rule.master_lb_egress_all->[root] aws_security_group.master_lb + + + + +[root] aws_security_group_rule.master_lb_ingress_slave_2181 + +aws_security_group_rule.master_lb_ingress_slave_2181 + + +[root] aws_security_group_rule.master_lb_ingress_slave_2181->[root] aws_security_group.master_lb + + + + +[root] aws_security_group_rule.master_lb_ingress_slave_2181->[root] aws_security_group.slave + + + + +[root] aws_security_group_rule.public_slave_egress_all + +aws_security_group_rule.public_slave_egress_all + + +[root] aws_security_group_rule.public_slave_egress_all->[root] aws_security_group.public_slave + + + + +[root] aws_security_group_rule.public_slave_ingress_0_21_tcp + +aws_security_group_rule.public_slave_ingress_0_21_tcp + + +[root] aws_security_group_rule.public_slave_ingress_0_21_tcp->[root] aws_security_group.public_slave + + + + +[root] aws_security_group_rule.public_slave_ingress_0_21_udp + +aws_security_group_rule.public_slave_ingress_0_21_udp + + +[root] aws_security_group_rule.public_slave_ingress_0_21_udp->[root] aws_security_group.public_slave + + + + +[root] aws_security_group_rule.public_slave_ingress_23_5050_udp + +aws_security_group_rule.public_slave_ingress_23_5050_udp + + +[root] aws_security_group_rule.public_slave_ingress_23_5050_udp->[root] aws_security_group.public_slave + + + + +[root] aws_security_group_rule.public_slave_ingress_5052_65535_udp + +aws_security_group_rule.public_slave_ingress_5052_65535_udp + + +[root] aws_security_group_rule.public_slave_ingress_5052_65535_udp->[root] aws_security_group.public_slave + + + + +[root] aws_security_group_rule.public_slave_ingress_master + +aws_security_group_rule.public_slave_ingress_master + + +[root] aws_security_group_rule.public_slave_ingress_master->[root] aws_security_group.master + + + + +[root] aws_security_group_rule.public_slave_ingress_master->[root] aws_security_group.public_slave + + + + +[root] aws_security_group_rule.public_slave_ingress_public_slave + +aws_security_group_rule.public_slave_ingress_public_slave + + +[root] aws_security_group_rule.public_slave_ingress_public_slave->[root] aws_security_group.public_slave + + + + +[root] aws_security_group_rule.public_slave_ingress_slave + +aws_security_group_rule.public_slave_ingress_slave + + +[root] aws_security_group_rule.public_slave_ingress_slave->[root] aws_security_group.public_slave + + + + +[root] aws_security_group_rule.public_slave_ingress_slave->[root] aws_security_group.slave + + + + +[root] aws_security_group_rule.slave_egress_all + +aws_security_group_rule.slave_egress_all + + +[root] aws_security_group_rule.slave_egress_all->[root] aws_security_group.slave + + + + +[root] aws_security_group_rule.slave_ingress_master + +aws_security_group_rule.slave_ingress_master + + +[root] aws_security_group_rule.slave_ingress_master->[root] aws_security_group.master + + + + +[root] aws_security_group_rule.slave_ingress_master->[root] aws_security_group.slave + + + + +[root] aws_security_group_rule.slave_ingress_public_slave + +aws_security_group_rule.slave_ingress_public_slave + + +[root] aws_security_group_rule.slave_ingress_public_slave->[root] aws_security_group.public_slave + + + + +[root] aws_security_group_rule.slave_ingress_public_slave->[root] aws_security_group.slave + + + + +[root] aws_security_group_rule.slave_ingress_slave + +aws_security_group_rule.slave_ingress_slave + + +[root] aws_security_group_rule.slave_ingress_slave->[root] aws_security_group.slave + + + + +[root] aws_subnet.private->[root] aws_vpc.dcos + + + + +[root] aws_subnet.public->[root] aws_vpc.dcos + + + + +[root] aws_vpc.dcos->[root] provider.aws + + + + +[root] aws_vpc_dhcp_options.dcos + +aws_vpc_dhcp_options.dcos + + +[root] aws_vpc_dhcp_options.dcos->[root] provider.aws + + + + +[root] aws_vpc_dhcp_options_association.dcos + +aws_vpc_dhcp_options_association.dcos + + +[root] aws_vpc_dhcp_options_association.dcos->[root] aws_vpc.dcos + + + + +[root] aws_vpc_dhcp_options_association.dcos->[root] aws_vpc_dhcp_options.dcos + + + + +[root] provider.template + +provider.template + + +[root] template_file.master_user_data->[root] aws_elb.dcos + + + + +[root] template_file.master_user_data->[root] aws_elb.internal_master + + + + +[root] template_file.master_user_data->[root] aws_iam_access_key.host_keys + + + + +[root] template_file.master_user_data->[root] aws_s3_bucket.exhibitor + + + + +[root] template_file.master_user_data->[root] provider.template + + + + +[root] template_file.public_slave_user_data->[root] aws_elb.dcos + + + + +[root] template_file.public_slave_user_data->[root] aws_elb.internal_master + + + + +[root] template_file.public_slave_user_data->[root] aws_iam_access_key.host_keys + + + + +[root] template_file.public_slave_user_data->[root] aws_s3_bucket.exhibitor + + + + +[root] template_file.public_slave_user_data->[root] provider.template + + + + +[root] template_file.slave_user_data->[root] aws_elb.dcos + + + + +[root] template_file.slave_user_data->[root] aws_elb.internal_master + + + + +[root] template_file.slave_user_data->[root] aws_iam_access_key.host_keys + + + + +[root] template_file.slave_user_data->[root] aws_s3_bucket.exhibitor + + + + +[root] template_file.slave_user_data->[root] provider.template + + + + +