Terraform을 사용하여 SQL Server와 데이터베이스를 만들었습니다. 이제 데이터베이스 사용자를 만들고 역할을 할당해야 합니다.
어떻게 할 수 있나요? 저에게 제안해주세요.
답변1
저는 이 작업을 수행할 Terraform 제공업체에서 작업을 시작했습니다.https://github.com/jayway/terraform-provider-mssql. 아직 초기 작업이지만 로컬 SQL Server 인스턴스에서 해당 로그인에 대한 로그인 및 사용자를 프로비전할 수 있었습니다(이미 실행 중이었기 때문에 AzureRM 공급자와 함께 전혀 테스트하지 않았습니다). . 테스트 및 기여는 매우 환영합니다(그러나 아직 프로덕션 시나리오에는 사용하지 마십시오)!
답변2
사용자 및 역할 생성은 Azure 플랫폼이 아닌 SQL Server의 기능입니다. 따라서 Terraforms ARM 공급자는 이를 처리하지 않으며 내가 볼 수 있는 한 Terraform에는 이 작업에 대한 MSSQL 공급자가 없습니다(MYSQL 및 Postgres가 있음). 이 작업은 SQL 스크립트를 사용하여 수행해야 합니다.
답변3
postgres/psql을 사용하여 이 작업을 수행한 방법은 다음과 같습니다.
먼저, 비밀번호에 사용자 이름을 추가하여 md5 비밀번호 해시를 생성합니다.
$ echo -n mypasswordbob|md5sum
fd9c9714184c4ae189ca83f1c21aeeb8
Postgres가 허용하는 암호화된 비밀번호 형식을 얻으려면 결과 해시 앞에 문자열 'md5'를 추가하십시오.
md5fd9c9714184c4ae189ca83f1c21aeeb8
그런 다음 실행하려는 데이터베이스 명령이 포함된 독립형 템플릿 파일을 추가합니다.
data "template_file" "db_roles" {
vars {
username_bob = "bob"
password_bob = "md5fd9c9714184c4ae189ca83f1c21aeeb8"
}
template = <<EOF
create user $${username_bob};
alter user $${username_bob} WITH ENCRYPTED PASSWORD '$${password_bob}';
EOF
}
마지막으로 서버 생성의 일부로 원격 실행 프로비저너를 추가합니다.
provisioner "remote-exec" {
inline = [
"set -x",
"cat > db_roles.sql <<EOL\n${data.template_file.db_roles.rendered}\nEOL",
"psql -U myuser < db_roles.sql",
]
}
답변4
Terraform 파일 프로비저너를 사용하여 SQL을 배포한 다음 원격 실행 프로비저너를 사용하여 SQL Server에 로드합니다.