728x90
728x90
# 사용한 프로바이더
https://registry.terraform.io/providers/l-with/ldap/latest/docs
terraform {
required_providers {
ldap = {
source = "l-with/ldap"
version = ">= 0.4"
}
}
}
locals {
ad_server_ip = "1.1.1.1"
ad_domain = "honglab.com"
ad_admin_pw = ""
}
provider "ldap" {
host = local.ad_server_ip
port = 389
tls = false
bind_user = "Admin@${local.ds_domain}"
bind_password = local.ds_admin_pw
}
여기서 나는 AWS Directory Service - Microsoft AD 를 사용했다.
이 경우, ad_server_ip
는 tolist(aws_directory_service_directory.this.dns_ip_addresses)[0]
로 작성 가능하다.
# 유저 생성
resource "ldap_entry" "this" {
dn = "CN=user01,OU=Users,OU=honglab,DC=hoglab,DC=com"
data_json = jsonencode({
objectClass = ["user"]
givenName = ["${first name}"]
sn = ["${last name}"]
displayName = ["${display name}"]
sAMAccountName = ["user01"] # user logon name (pre-Windows 2000)
userPrincipalName = ["user01@${upper(local.ad_domain)}"] # user logon name
userAccountControl = ["544"] # ACCOUNTDISABLE 비트가 해제된 값 (유저 활성화)
mail = ["user01@${local.ad_domain}"]
name = ["user01"]
description = ["Created By Terraform"]
})
lifecycle {
ignore_changes = [data_json]
}
}
user01
이란 유저를 만들어 보았다.
data_json
에는 다양한 값들이 들어가는데 시스템에서 업데이트되는 값들도 있어서 필수로 ignore_changes
를 해줘야 한다.
-> 유저 속성 수정이 테라폼으로는 불가하다. 나의 경우는 유저가 생성만 되면 되어서 괜찮다.
userAccountControl
의 경우, 기본값으로 546으로 설정된다.
546이면 512 + 32 + 2 이므로,
- NORMAL_ACCOUNT
(512)
- PASSWD_NOTREQD
(32)
- ACCOUNTDISABLE
(2)
가 활성된 값이다.
참고로 나는 AWS Workspace를 만들기 위해 AD User를 만들고 있었는데, ACCOUNTDISABLE
이 된 상태에서는 password를 reset할 수 있는 메일이 날라오지 않아서 해당 값을 뺀 544를 사용하였다.
추가로, AWS Workspace 콘솔에서 AD User를 생성하는 경우 514로 생성되어 있었다.
728x90
728x90
'공부 > IaC' 카테고리의 다른 글
digitickets/terraform-aws-cli 모듈 기여 (1) | 2024.08.07 |
---|---|
[Terraform] 캐치테이블 테라폼 환경 소개 (4) | 2024.05.18 |
HashiConf 2023 Recap - Terraform 부분 정리 (0) | 2023.11.15 |
[Terraform] Keycloak Provider 구성하기 (Keycloak 21) (0) | 2023.10.29 |
[terraform-provider-kubernetes/Issue] StorageClass ReclaimPolicy 관련 (0) | 2023.09.05 |
댓글