Skip to content

Commit

Permalink
change null_resource to external data
Browse files Browse the repository at this point in the history
  • Loading branch information
badra001 committed Apr 1, 2021
1 parent 5823dd8 commit 3a897c4
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 17 deletions.
4 changes: 2 additions & 2 deletions iam-saml/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ No requirements.
| Name | Version |
|------|---------|
| <a name="provider_aws"></a> [aws](#provider\_aws) | n/a |
| <a name="provider_null"></a> [null](#provider\_null) | n/a |
| <a name="provider_external"></a> [external](#provider\_external) | n/a |

## Modules

Expand All @@ -50,11 +50,11 @@ No modules.
| Name | Type |
|------|------|
| [aws_iam_saml_provider.saml](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_saml_provider) | resource |
| [null_resource.saml_metadata](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) | resource |
| [aws_arn.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/arn) | data source |
| [aws_caller_identity.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) | data source |
| [aws_iam_policy_document.saml_assume](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |
| [aws_region.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/region) | data source |
| [external_external.saml_metadata](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/external) | data source |

## Inputs

Expand Down
41 changes: 41 additions & 0 deletions iam-saml/bin/external_get-saml-metadata.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#!/bin/bash

#set -e
eval "$(jq -r '@sh "AWS_ENVIRONMENT=\(.aws_environment) OUTPUT=\(.output_file) URL_PREFIX=\(.url_prefix)"')"

if [ -z $AWS_ENVIRONMENT ]
then
AWS_ENVIRONMENT="east-west"
fi

if [ -z $URL_PREFIX ]
then
URL_PREFIX="https://id-provider.tco.census.gov/nidp/saml2/metadata?PID="
fi

if [[ $AWS_ENVIRONMENT == "east-west" ]] || [[ $AWS_ENVIRONMENT == "ew" ]]
then
SELECT="urn:amazon:webservices"
fi
if [[ $AWS_ENVIRONMENT == "govcloud" ]] || [[ $AWS_ENVIRONMENT == "gov" ]]
then
SELECT="urn:amazon:webservices:govcloud"
fi

if [ -z $SELECT ]
then
echo "* no URL available for AWS_ENVIRONMENT=$AWS_ENVIRONMENT"
exit 1
fi

if [ -z $OUTPUT ]
then
OUTPUT="metadata.$(date +%s).xml"
fi

URL="${URL_PREFIX}${SELECT}"
curl -q -k $URL > $OUTPUT
status=$?
result=$(cat $OUTPUT)

jq -n --arg output_file "$OUTPUT" --arg value "$result" --arg status "$status" '{"output_file":$output_file,"value":$value,"status":$status}'
3 changes: 1 addition & 2 deletions iam-saml/bin/get-saml-metadata.sh
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,7 @@ then
fi

URL="${URL_PREFIX}${SELECT}"
#OUTFILE="metadata.xml"
echo "# environment=$AWS_ENVIRONMENT command=curl -q -k $URL" >&2
# echo "# environment=$AWS_ENVIRONMENT command=curl -q -k $URL" >&2
curl -q -k $URL
status=$?
exit $status
Expand Down
38 changes: 25 additions & 13 deletions iam-saml/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -47,25 +47,37 @@ locals {
}
}

resource "null_resource" "saml_metadata" {
provisioner "local-exec" {
command = "test -d ${path.root}/setup || mkdir ${path.root}/setup"
}
# resource "null_resource" "saml_metadata" {
# provisioner "local-exec" {
# command = "test -d ${path.root}/setup || mkdir ${path.root}/setup"
# }
#
# provisioner "local-exec" {
# command = "bash ${path.module}/bin/get-saml-metadata.sh > ${path.root}/setup/metadata.xml"
# environment = {
# # AWS_ENVIRONMENT = var.aws_environment
# AWS_ENVIRONMENT = local.account_environment
# }
# }
# }

provisioner "local-exec" {
command = "bash ${path.module}/bin/get-saml-metadata.sh > ${path.root}/setup/metadata.xml"
environment = {
# AWS_ENVIRONMENT = var.aws_environment
AWS_ENVIRONMENT = local.account_environment
}
data "external" "saml_metadata" {
program = ["bash", "${path.module}/bin/external_get_saml_metadata.sh"]
# output {object}.results.{output_file,status,value}
query = {
"aws_environment" = local.account_environment
"output_file" = local.saml_metadata_file
# "url_prefix" = ""
}
# depends_on = [null_resource.saml_metadata]
}

resource "aws_iam_saml_provider" "saml" {
# count = fileexists(local.saml_metadata_file) ? 1 : 0
name = var.saml_provider_name
saml_metadata_document = fileexists(local.saml_metadata_file) ? file(local.saml_metadata_file) : file("${path.module}/empty_metadata.xml")
depends_on = [null_resource.saml_metadata]
name = var.saml_provider_name
# saml_metadata_document = fileexists(local.saml_metadata_file) ? file(local.saml_metadata_file) : file("${path.module}/empty_metadata.xml")
saml_metadata_document = data.external.saml_metadata.result.value
# depends_on = [null_resource.saml_metadata]

# when the provider supports tags, enable this section
# tags = merge(
Expand Down

0 comments on commit 3a897c4

Please sign in to comment.