Terraform에서 AWS RDS의 DB 사용자 관리
5031 단어 PostgreSQLTerraformAWS
소개
MySQL이나 PostgreSQL의 사용자를 Terraform로 관리할 때의 비망록으로서 이 기사를 남깁니다.
전제 조건
기초는 AWS, DB는 PostgreSQL에서 DB가있는 네트워크는 내부 네트워크에서 인터넷 액세스가 없습니다. Terraform은 로컬 PC(Mac)에서 실행해야 합니다.
실행 방법
Terraform
여기 의 PostgreSQL용 Terraform provider를 사용해 실행합니다.
provider "postgresql" {
scheme = "awspostgres" # AWSを使う場合はこれを指定
host = var.db_host
username = "postgres"
port = 5432
password = var.db_password
superuser = false
}
버전은 다음과 같이 지정합니다.
required_providers {
postgresql = {
source = "cyrilgdn/postgresql"
version = "1.11.2"
}
}
PostgreSQL 사용자를 추가합니다.
resource "postgresql_role" "my_role" {
name = "my_role"
login = true
password = var.my_role_password
}
resource "postgresql_grant" "readonly_my_role" {
database = "test_db"
role = postgresql_role.my_role.name
schema = "public"
object_type = "table"
privileges = ["SELECT"]
}
지역
로컬에서 직접 PostgreSQL을 건드릴 수 없기 때문에, 발판 서버를 경유해 SSH 터널링하는 것으로, 액세스합니다.
ssh 터널링에 대한 명령을 실행합니다.
# ssh -N -L [ローカル側で転送に使用するPort(10000〜60000)]:[DBのHostName]:[DBが解放しているPort] -i [IdentityFile(秘密鍵のパス)] -p [踏み台が解放しているPort] [踏み台のUser]@[踏み台のHostName]
ssh -N -L 5432:test_db.XXX.ap-northeast-1.rds.amazonaws.com:5432 -i ~/.ssh/bastion.pem -p 22 ec2-user@XXX
나중에 설명하는 SSL 인증서 오류로 인해 호스트를 가장합니다.
/etc/hosts
에 localhost 127.0.0.1 test_db.XXX.ap-northeast-1.rds.amazonaws.com
를 추가하십시오.
이제 Terraform을 실행하면 PostgreSQL에 사용자를 추가 할 수 있습니다.
Tips
SSL 인증서 오류
위에서 설명한 ssh 터널링 명령을 실행하고,
ssh -N -L 5432:test_db.XXX.ap-northeast-1.rds.amazonaws.com:5432 -i ~/.ssh/bastion.pem -p 22 ec2-user@XXX
ssh 터널링에서 localhost
의 5432
포트에 액세스하면 PostgreSQL에 액세스할 수 있게 되었으므로 Terraform의 provider 호스트 이름을 locahost
로 지정하여 Terraform을 실행시킵니다.
provider "postgresql" {
scheme = "awspostgres" # AWSを使う場合はこれを指定
host = "localhost"
username = "postgres"
port = 5432
password = var.db_password
superuser = false
}
그러면 SSL 인증서 확인에서 호스트 이름이 다르면 오류가 발생합니다.
Error: error detecting capabilities: error PostgreSQL version: x509: certificate is valid for stg-knew-rds.coh5dxpjppgc.ap-northeast-1.rds.amazonaws.com, not localhost
세션 관리자를 사용한 포트 포워드
세션 관리자를 사용하여 포트 포워드를 할 수 없는지 확인했지만,
결국 포트 포워드는 할 수 없었다.
cf. htps : // v.ぁsss d. jp / arc c ぇ s / port fu rwa r ぢ g ushin g- ws-sys m-ma-na-r-se-shin-s-ma r /
Reference
이 문제에 관하여(Terraform에서 AWS RDS의 DB 사용자 관리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yoshuuua/items/ebeefffc04d966d238e4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
기초는 AWS, DB는 PostgreSQL에서 DB가있는 네트워크는 내부 네트워크에서 인터넷 액세스가 없습니다. Terraform은 로컬 PC(Mac)에서 실행해야 합니다.
실행 방법
Terraform
여기 의 PostgreSQL용 Terraform provider를 사용해 실행합니다.
provider "postgresql" {
scheme = "awspostgres" # AWSを使う場合はこれを指定
host = var.db_host
username = "postgres"
port = 5432
password = var.db_password
superuser = false
}
버전은 다음과 같이 지정합니다.
required_providers {
postgresql = {
source = "cyrilgdn/postgresql"
version = "1.11.2"
}
}
PostgreSQL 사용자를 추가합니다.
resource "postgresql_role" "my_role" {
name = "my_role"
login = true
password = var.my_role_password
}
resource "postgresql_grant" "readonly_my_role" {
database = "test_db"
role = postgresql_role.my_role.name
schema = "public"
object_type = "table"
privileges = ["SELECT"]
}
지역
로컬에서 직접 PostgreSQL을 건드릴 수 없기 때문에, 발판 서버를 경유해 SSH 터널링하는 것으로, 액세스합니다.
ssh 터널링에 대한 명령을 실행합니다.
# ssh -N -L [ローカル側で転送に使用するPort(10000〜60000)]:[DBのHostName]:[DBが解放しているPort] -i [IdentityFile(秘密鍵のパス)] -p [踏み台が解放しているPort] [踏み台のUser]@[踏み台のHostName]
ssh -N -L 5432:test_db.XXX.ap-northeast-1.rds.amazonaws.com:5432 -i ~/.ssh/bastion.pem -p 22 ec2-user@XXX
나중에 설명하는 SSL 인증서 오류로 인해 호스트를 가장합니다.
/etc/hosts
에 localhost 127.0.0.1 test_db.XXX.ap-northeast-1.rds.amazonaws.com
를 추가하십시오.
이제 Terraform을 실행하면 PostgreSQL에 사용자를 추가 할 수 있습니다.
Tips
SSL 인증서 오류
위에서 설명한 ssh 터널링 명령을 실행하고,
ssh -N -L 5432:test_db.XXX.ap-northeast-1.rds.amazonaws.com:5432 -i ~/.ssh/bastion.pem -p 22 ec2-user@XXX
ssh 터널링에서 localhost
의 5432
포트에 액세스하면 PostgreSQL에 액세스할 수 있게 되었으므로 Terraform의 provider 호스트 이름을 locahost
로 지정하여 Terraform을 실행시킵니다.
provider "postgresql" {
scheme = "awspostgres" # AWSを使う場合はこれを指定
host = "localhost"
username = "postgres"
port = 5432
password = var.db_password
superuser = false
}
그러면 SSL 인증서 확인에서 호스트 이름이 다르면 오류가 발생합니다.
Error: error detecting capabilities: error PostgreSQL version: x509: certificate is valid for stg-knew-rds.coh5dxpjppgc.ap-northeast-1.rds.amazonaws.com, not localhost
세션 관리자를 사용한 포트 포워드
세션 관리자를 사용하여 포트 포워드를 할 수 없는지 확인했지만,
결국 포트 포워드는 할 수 없었다.
cf. htps : // v.ぁsss d. jp / arc c ぇ s / port fu rwa r ぢ g ushin g- ws-sys m-ma-na-r-se-shin-s-ma r /
Reference
이 문제에 관하여(Terraform에서 AWS RDS의 DB 사용자 관리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yoshuuua/items/ebeefffc04d966d238e4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
provider "postgresql" {
scheme = "awspostgres" # AWSを使う場合はこれを指定
host = var.db_host
username = "postgres"
port = 5432
password = var.db_password
superuser = false
}
required_providers {
postgresql = {
source = "cyrilgdn/postgresql"
version = "1.11.2"
}
}
resource "postgresql_role" "my_role" {
name = "my_role"
login = true
password = var.my_role_password
}
resource "postgresql_grant" "readonly_my_role" {
database = "test_db"
role = postgresql_role.my_role.name
schema = "public"
object_type = "table"
privileges = ["SELECT"]
}
# ssh -N -L [ローカル側で転送に使用するPort(10000〜60000)]:[DBのHostName]:[DBが解放しているPort] -i [IdentityFile(秘密鍵のパス)] -p [踏み台が解放しているPort] [踏み台のUser]@[踏み台のHostName]
ssh -N -L 5432:test_db.XXX.ap-northeast-1.rds.amazonaws.com:5432 -i ~/.ssh/bastion.pem -p 22 ec2-user@XXX
ssh -N -L 5432:test_db.XXX.ap-northeast-1.rds.amazonaws.com:5432 -i ~/.ssh/bastion.pem -p 22 ec2-user@XXX
provider "postgresql" {
scheme = "awspostgres" # AWSを使う場合はこれを指定
host = "localhost"
username = "postgres"
port = 5432
password = var.db_password
superuser = false
}
Error: error detecting capabilities: error PostgreSQL version: x509: certificate is valid for stg-knew-rds.coh5dxpjppgc.ap-northeast-1.rds.amazonaws.com, not localhost
Reference
이 문제에 관하여(Terraform에서 AWS RDS의 DB 사용자 관리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yoshuuua/items/ebeefffc04d966d238e4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)