diff --git a/CHANGELOG.md b/CHANGELOG.md index c9d2c5b..0a65c46 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -158,3 +158,11 @@ * 1.15.3 -- 2022-04-27 - terraform-state - add r-inf-terraform assumable role for TF operations + +## Version 2.x + +* 2.0.0 -- 2022-05-09 + - tag: tf-upgrade + - ldap-ou-create + - change to use trevx/ldap provider + diff --git a/common/version.tf b/common/version.tf index 01b96da..6b49608 100644 --- a/common/version.tf +++ b/common/version.tf @@ -1,3 +1,3 @@ locals { - _module_version = "1.15.3" + _module_version = "2.0.0" } diff --git a/ldap-ou-create/README.md b/ldap-ou-create/README.md index d3f18bd..146a0f0 100644 --- a/ldap-ou-create/README.md +++ b/ldap-ou-create/README.md @@ -20,22 +20,25 @@ module "ou" { # optional # account_id = "123456789012" - ldap_host = "ldap.e.tco.census.gov" - ldap_port = 389 + ldap_url = "ldaps://ldap.e.tco.census.gov" } ``` ## Requirements -No requirements. +| Name | Version | +|------|---------| +| [terraform](#requirement\_terraform) | >= 0.13 | +| [aws](#requirement\_aws) | > 3.66.0 | +| [external](#requirement\_external) | > 1.0 | +| [ldap](#requirement\_ldap) | > 0.5.4 | ## Providers | Name | Version | |------|---------| -| [aws](#provider\_aws) | n/a | -| [external](#provider\_external) | n/a | -| [ldap](#provider\_ldap) | n/a | +| [aws](#provider\_aws) | > 3.66.0 | +| [ldap](#provider\_ldap) | > 0.5.4 | | [null](#provider\_null) | n/a | | [template](#provider\_template) | n/a | @@ -47,13 +50,12 @@ No modules. | Name | Type | |------|------| -| [ldap_object.ou](https://registry.terraform.io/providers/hashicorp/ldap/latest/docs/resources/object) | resource | +| [ldap_object.ou](https://registry.terraform.io/providers/trevex/ldap/latest/docs/resources/object) | resource | | [null_resource.ou_ldif](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.ec2_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.ldap_provider_bin](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/external) | data source | | [template_file.ou](https://registry.terraform.io/providers/hashicorp/template/latest/docs/data-sources/file) | data source | ## Inputs @@ -64,9 +66,10 @@ No modules. | [account\_id](#input\_account\_id) | AWS Account ID (default will pull from current user) | `string` | `""` | no | | [component\_tags](#input\_component\_tags) | Additional tags for Components (role, policy) | `map(map(string))` |
{
"policy": {},
"role": {}
} | no |
| [enable\_ldap\_creation](#input\_enable\_ldap\_creation) | Flag to enable/disable LDAP object creation for role group (for SAML only). Also requires LDAP credentials. | `bool` | `false` | no |
-| [ldap\_host](#input\_ldap\_host) | LDAP Hostname (default is for eBOCAS) | `string` | `"ldap.e.tco.census.gov"` | no |
| [ldap\_password](#input\_ldap\_password) | LDAP password for ldap\_user for writing data into eDirectory or Active Directory | `string` | `""` | no |
-| [ldap\_port](#input\_ldap\_port) | LDAP port (default is 389 but also using STARTTLS) | `number` | `389` | no |
+| [ldap\_skip\_verify](#input\_ldap\_skip\_verify) | LDAP skip verify of TLS certificates | `bool` | `false` | no |
+| [ldap\_url](#input\_ldap\_url) | LDAP URL in form ldap(s)://hostname:port | `string` | `"ldaps://ldap.e.tco.census.gov"` | no |
+| [ldap\_use\_starttls](#input\_ldap\_use\_starttls) | LDAP use StartTLS (needed only if port is 389, perhaps) | `bool` | `false` | no |
| [ldap\_user](#input\_ldap\_user) | LDAP user for writing data into eDirectory or Active Directory | `string` | `""` | no |
| [override\_prefixes](#input\_override\_prefixes) | Override built-in prefixes by component (efs, s3, ebs, kms, role, policy, security-group). This should be used primarily for common infrastructure things | `map(string)` | `{}` | no |
| [tags](#input\_tags) | AWS Tags to apply to appropriate resources (S3, KMS). Do not include safeguard tags here, use the data\_safeguard field for such things. | `map(string)` | `{}` | no |
diff --git a/ldap-ou-create/main.tf b/ldap-ou-create/main.tf
index fb43c29..3acd237 100644
--- a/ldap-ou-create/main.tf
+++ b/ldap-ou-create/main.tf
@@ -21,8 +21,7 @@
*
* # optional
* # account_id = "123456789012"
-* ldap_host = "ldap.e.tco.census.gov"
-* ldap_port = 389
+* ldap_url = "ldaps://ldap.e.tco.census.gov"
* }
* ```
*/
@@ -36,8 +35,10 @@ locals {
ldap_exists = fileexists(local.ldif_file)
bocappdata_auth = local.account_environment == "gov" ? "Cloud_AWSGovCloud_Auth" : "Cloud_AWS_Auth"
- ldap_provider_exists = data.external.ldap_provider_bin.result.status == "0" ? true : false
- enable_ldap = var.enable_ldap_creation && var.ldap_user != "" && var.ldap_password != "" && local.ldap_provider_exists
+ # ldap_provider_exists = data.external.ldap_provider_bin.result.status == "0" ? true : false
+ # enable_ldap = var.enable_ldap_creation && var.ldap_user != "" && var.ldap_password != "" && local.ldap_provider_exists
+ enable_ldap = var.enable_ldap_creation && var.ldap_user != "" && var.ldap_password != ""
+ use_starttls = length(regexall("ldap://", var.ldap_url)) > 0 ? true : false
base_tags = {
"boc:tf_module_version" = local._module_version
@@ -87,13 +88,13 @@ resource "ldap_object" "ou" {
}
}
-# data.external.ldap_provider_bin.result.path
-# data.external.ldap_provider_bin.result.status
-data "external" "ldap_provider_bin" {
- program = ["bash", "${path.module}/bin/find_binary.sh"]
- query = {
- "program" = "terraform-provider-ldap"
- }
-}
-
-
+## # data.external.ldap_provider_bin.result.path
+## # data.external.ldap_provider_bin.result.status
+## data "external" "ldap_provider_bin" {
+## program = ["bash", "${path.module}/bin/find_binary.sh"]
+## query = {
+## "program" = "terraform-provider-ldap"
+## }
+## }
+##
+##
diff --git a/ldap-ou-create/provider.ldap.tf b/ldap-ou-create/provider.ldap.tf
index a23be2b..7aad122 100644
--- a/ldap-ou-create/provider.ldap.tf
+++ b/ldap-ou-create/provider.ldap.tf
@@ -1,7 +1,10 @@
provider "ldap" {
- ldap_host = var.ldap_host
- ldap_port = var.ldap_port
- use_tls = true
+ url = var.ldap_url
+ use_starttls = local.use_starttls
+ skip_verify = var.ldap_skip_verify
+ # ldap_host = var.ldap_host
+ # ldap_port = var.ldap_port
+ # use_tls = true
bind_user = var.ldap_user
bind_password = var.ldap_password
}
diff --git a/ldap-ou-create/variables.tf b/ldap-ou-create/variables.tf
index 4eb8f14..2c03b51 100644
--- a/ldap-ou-create/variables.tf
+++ b/ldap-ou-create/variables.tf
@@ -4,8 +4,14 @@ variable "enable_ldap_creation" {
default = false
}
+variable "component_tags" {
+ description = "Additional tags for Components (role, policy)"
+ type = map(map(string))
+ default = { "role" = {}, "policy" = {} }
+}
+
#---
-# ldap
+# ldap provider
#---
variable "ldap_user" {
description = "LDAP user for writing data into eDirectory or Active Directory"
@@ -19,20 +25,37 @@ variable "ldap_password" {
default = ""
}
-variable "ldap_host" {
- description = "LDAP Hostname (default is for eBOCAS)"
+#---
+## obsoleted in new trevx/ldap
+#---
+## variable "ldap_host" {
+## description = "LDAP Hostname (default is for eBOCAS)"
+## type = string
+## default = "ldap.e.tco.census.gov"
+## }
+##
+## variable "ldap_port" {
+## description = "LDAP port (default is 389 but also using STARTTLS)"
+## type = number
+## default = 389
+## }
+
+# for trevx/ldap
+variable "ldap_url" {
+ description = "LDAP URL in form ldap(s)://hostname:port"
type = string
- default = "ldap.e.tco.census.gov"
+ default = "ldaps://ldap.e.tco.census.gov"
}
-variable "ldap_port" {
- description = "LDAP port (default is 389 but also using STARTTLS)"
- type = number
- default = 389
+variable "ldap_use_starttls" {
+ description = "LDAP use StartTLS (needed only if port is 389, perhaps)"
+ type = bool
+ default = false
}
-variable "component_tags" {
- description = "Additional tags for Components (role, policy)"
- type = map(map(string))
- default = { "role" = {}, "policy" = {} }
+variable "ldap_skip_verify" {
+ description = "LDAP skip verify of TLS certificates"
+ type = bool
+ default = false
}
+
diff --git a/ldap-ou-create/versions.tf b/ldap-ou-create/versions.tf
new file mode 100644
index 0000000..271117c
--- /dev/null
+++ b/ldap-ou-create/versions.tf
@@ -0,0 +1,17 @@
+terraform {
+ required_providers {
+ aws = {
+ source = "hashicorp/aws"
+ version = "> 3.66.0"
+ }
+ ldap = {
+ source = "trevex/ldap"
+ version = "> 0.5.4"
+ }
+ external = {
+ source = "hashicorp/null"
+ version = "> 1.0"
+ }
+ }
+ required_version = ">= 0.13"
+}