부록 - AWS 배포 도구 상자

이 항목에는 AWS에서 배포할 때의 참조 아키텍처에 대한 도구 및 대체 배포 옵션이 포함되어 있습니다. 구체적으로, 이 항목에서는 EDG에 설명된 예제 AWS 배포를 자동화하는 방법을 설명합니다.

TabDeploy4EDG 자동 설치 스크립트

TabDeploy4EDG 스크립트(링크가 새 창에서 열림)4부 - Tableau Server 설치 및 구성에 설명되어 있는 4노드 Tableau 배포의 구현을 자동화합니다. 이 가이드에 설명된 예제 AWS 구현을 따르면 TabDeploy4EDG를 실행할 수 있습니다.

요구 사항. 스크립트를 실행하려면 3부 - Tableau Server 엔터프라이즈 배포 준비의 예제 구현에 따라 AWS 환경을 준비 및 구성해야 합니다.

  • VPC, 서브넷 및 보안 그룹이 설명된 대로 구성해야 합니다. IP 주소는 구현 예에 표시된 것과 일치하지 않아도 됩니다.
  • 4개의 EC2 인스턴스가 AWS Linux 2의 최신 업데이트 빌드를 실행해야 합니다.
  • PostgreSQL이 설치되었으며 PostgreSQL 설치, 구성 및 tar 백업 만들기에 설명된 대로 구성되어 있어야 합니다.
  • 1단계 tar 백업 파일은 PostgreSQL 1단계 tar 백업 만들기에 설명된 대로 PostgreSQL이 설치된 EC2 인스턴스에 있습니다.
  • Tableau Server 배포의 노드 1을 실행할 EC2 인스턴스는 4부 - Tableau Server 설치 및 구성에 설명된 대로 PostgreSQL과 통신하도록 구성되어 있어야 합니다.
  • 배스천 호스트의 SSH 세션을 통해 각 EC2 인스턴스에 로그인되어 있어야 합니다.

이 스크립트가 네 개의 Tableau Server를 설치하고 구성하는 데 약 1.5~2시간이 소요됩니다. 이 스크립트는 참조 아키텍처의 지정된 설정에 따라 Tableau를 구성합니다. 스크립트는 다음 동작을 수행합니다.

  • PostgreSQL 호스트의 tar 파일에 대한 경로가 지정된 경우 PostgreSQL 호스트의 1단계 백업을 복원합니다.
  • 모든 노드에서 기존 Tableau 설치를 삭제합니다.
  • 모든 노드에서 sudo yum update를 실행합니다.
  • 각 노드에 Tableau rpm 패키지를 다운로드하고 복사합니다.
  • 종속 항목을 각 노드에 다운로드하고 설치합니다.
  • /app/tableau_server를 만들고 모든 노드에 패키지를 설치합니다.
  • 로컬 ID 저장소와 함께 노드 1을 설치하고 PostgreSQL을 사용하여 외부 리포지토리를 구성합니다.
  • 노드 2 - 노드 4의 부트스트랩 설치와 초기 구성을 수행합니다.
  • TabDeploy4EDG의 부트스트랩 파일 및 구성 파일을 삭제합니다.
  • 참조 아키텍처 사양에 따라 Tableau 클러스터 전체에 서비스를 구성합니다.
  • 설치 유효성을 검사하고 각 노드의 상태를 반환합니다.

배스천 호스트에 스크립트 다운로드 및 복사

  1. TabDeploy4EDG 샘플 페이지(링크가 새 창에서 열림)에서 스크립트를 복사하여 TabDeploy4EDG이라는 파일에 코드를 붙여 넣습니다.
  2. 배스천 호스트 역할을 하는 EC2 호스트의 홈 디렉터리에 파일을 저장합니다.
  3. 다음 명령을 실행하여 파일의 모드를 실행 가능하도록 변경합니다

     sudo chmod +x TabDeploy4EDG

TabDeploy4EDG 실행

배스천 호스트에서 TabDeploy4EDG를 실행해야 합니다. 이 스크립트는 예: AWS의 배스천 호스트에 연결에 설명된 대로 ssh 정방향 에이전트 컨텍스트에서 실행된다는 가정하에 작성되었습니다. ssh 정방향 에이전트 컨텍스트에서 실행하지 않는 경우 설치 프로세스 중에 비밀번호를 입력하라는 메시지가 표시됩니다.

  1. 등록 파일(registration.json)을 만들고 편집하고 저장합니다. 파일은 올바르게 서식이 지정된 json 파일이어야 합니다. 다음 템플릿을 복사하고 사용자 지정합니다.

    {
    	"zip" : "97403",
    	"country" : "USA",
    	"city" : "Springfield",
    	"last_name" : "Simpson",
    	"industry" : "Energy",
    	"eula" : "yes",
    	"title" : "Safety Inspection Engineer",
    	"phone" : "5558675309",
    	"company" : "Example",
    	"state" : "OR",
    	"department" : "Engineering",
    	"first_name" : "Homer",
    	"email" : "homer@example.com"
    }
  2. 다음 명령을 실행하여 템플릿 구성 파일을 생성합니다.

    ./TabDeploy4EDG -g edg.config              
  3. 편집할 구성 파일을 엽니다.

    sudo nano edg.config              

    최소한 각 EC2 호스트의 IP 주소, 등록 파일의 파일 경로 및 유효한 라이선스 키를 추가해야 합니다.

  4. 구성 파일 편집이 완료되면 저장한 다음 닫습니다.

  5. TabDeploy4EDG를 실행하려면 다음 명령을 실행합니다.

    ./TabDeploy4EDG -f edg.config         

예: Terraform을 사용하여 AWS 인프라 배포 자동화

이 섹션에서는 Terraform을 구성하고 실행하여 AWS에서 EDG 참조 아키텍처를 배포하는 방법을 설명합니다. 여기에 나온 예제 Terraform 구성은 3부 - Tableau Server 엔터프라이즈 배포 준비에 설명된 서브넷, 보안 그룹 및 EC2 인스턴스가 포함되어 있는 AWS VPC를 배포합니다.

샘플 Terraform 템플릿은 Tableau Samples 웹 사이트(https://help.tableau.com/samples/en-us/edg/edg-terraform.zip(링크가 새 창에서 열림))에서 사용할 수 있습니다. 해당 조직에 맞게 이 템플릿을 구성하고 사용자 지정해야 합니다. 이 섹션에 제공된 구성 콘텐츠는 배포를 위해 사용자 지정해야 하는 최소 템플릿 변경 사항에 대해 설명합니다.

목표

여기에 제공된 Terraform 템플릿 및 콘텐츠는 개발 테스트 환경에 EDG를 빠르게 배포할 수 있는 작업 샘플을 제공하기 위한 것입니다.

Tableau는 예제 Terraform 배포를 테스트하고 문서화하는 데 최선의 노력을 기울였습니다. 그러나 프로덕션 환경에서 Terraform을 사용하여 EDG를 배포하고 유지 관리하려면 이 예제의 범위를 벗어나는 Terraform 전문 지식이 필요합니다. Tableau는 여기에 문서화되어 있는 예제 Terraform 솔루션에 대한 지원을 제공하지 않습니다.

최종 상태

이 섹션의 절차에 따라 AWS에서 3부 - Tableau Server 엔터프라이즈 배포 준비에 명시된 VPC와 기능적으로 동일한 VPC를 설정합니다.

이 섹션의 샘플 Terraform 템플릿 및 지원 콘텐츠:

  • 탄력적 IP 주소, 가용성 영역 2개 및 위에 표시된 서브넷 조직(IP 주소는 다름)을 사용하여 VPC를 만듭니다.
  • 배스천, 공용, 사설 및 데이터 보안 그룹을 만듭니다.
  • 보안 그룹에 대한 대부분의 수신 및 송신 규칙을 설정합니다. Terraform이 실행된 후 보안 그룹을 편집해야 합니다.
  • 다음과 같은 EC2 호스트(각각 AWS Linux2를 실행)를 만듭니다. 배스천, 프록시 1, 프록시 2, Tableau 노드 1, Tableau 노드 2, Tableau 노드 3, Tableau 노드 4
  • PostgreSQL용 EC2 호스트는 만들어지지 않습니다. 데이터 보안 그룹에 EC2를 수동으로 만든 다음 PostgreSQL 설치, 구성 및 tar 백업 만들기에 설명된 대로 PostgreSQL을 설치하고 구성해야 합니다.

요구 사항

  • AWS 계정 - VPC를 만들 수 있는 AWS 계정에 액세스할 수 있어야 합니다.
  • Windows 컴퓨터에서 Terraform을 실행하는 경우 AWS CLI를 설치해야 합니다.
  • AWS 계정에서 사용할 수 있는 탄력적 IP 주소
  • AWS Route 53에 등록된 도메인 Terraform은 Route 53에 DNS 영역과 관련 SSL 인증서를 만듭니다. 따라서 Terraform을 실행하는 프로필 또한 Route 53에서 적절한 사용 권한을 가지고 있어야 합니다.

시작하기 전에

  • 이 절차의 명령줄 예제는 Apple OS 사용 터미널에 대한 것입니다. Windows에서 Terraform을 실행하는 경우 파일 경로를 사용하여 적절하게 명령을 조정해야 합니다.
  • Terraform 프로젝트는 다수의 텍스트 구성 파일로 구성됩니다(.tf 파일 확장자). 이러한 파일을 사용자 지정하여 Terraform을 구성합니다. 강력한 텍스트 에디터가 없는 경우 Atom 또는 Text++를 설치합니다.
  • Terraform 프로젝트를 다른 사용자와 공유하는 경우 변경 관리를 위해 프로젝트를 Git에 저장하는 것이 좋습니다.

1단계 - 환경 준비

A. Terraform 다운로드 및 설치

https://www.terraform.io/downloads(링크가 새 창에서 열림)

B. 공용-개인 키 쌍 생성

AWS와 결과 VPC 환경에 액세스할 때 사용할 키입니다. Terraform을 실행할 때 공용 키를 포함합니다.

터미널을 열고 다음 명령을 실행합니다.

  1. Create a private key. For example, my-key.pem:

    openssl genrsa -out my-key.pem 1024
  2. 공용 키를 만듭니다. 이 키 형식은 Terraform에 사용되지 않습니다. 이 절차의 나중 부분에서 ssh 키로 변환합니다.

    openssl rsa -in my-key.pem -pubout > my-key.pub
  3. 개인 키에 대한 사용 권한을 설정합니다.

    sudo chmod 0600 my-key.pem

    Windows에서 사용 권한을 설정하려면:

    • Windows Explorer에서 파일을 찾으려면 오른쪽 클릭한 다음 속성을 선택합니다. 보안 탭으로 이동한 다음 고급을 클릭합니다.
    • 소유자를 자신으로 변경하고 상속을 사용하지 않도록 설정한 다음 모든 사용 권한을 삭제합니다. 자신에게 모든 권한을 부여한 다음 저장을 클릭합니다. 파일을 읽기 전용으로 표시합니다.
  4. ssh 공용 키를 만듭니다. 프로세스의 나중 부분에서 이 키를 Terraform에 복사합니다.

    ssh-keygen -y -f my-key.pem >my-key-ssh.pub

C. 프로젝트 다운로드 및 상태 디렉터리 추가

  1. EDG Terraform 프로젝트(링크가 새 창에서 열림)를 다운로드하고 압축을 푼 다음 로컬 컴퓨터에 저장합니다. 다운로드 압축을 풀면 최상위 디렉터리, edg-terraform 및 일련의 하위 디렉터리가 표시됩니다.

  2. state를 디렉터리를 최상위 edg-terraform 디렉터리의 피어로 만듭니다.

2단계: Terraform 템플릿 사용자 지정

해당하는 AWS 및 EDG 환경에 맞게 Terraform 템플릿을 사용자 지정해야 합니다. 여기의 예제에는 대부분의 조직에서 수행해야 하는 최소 템플릿 사용자 지정이 나와 있습니다. 사용하는 특정 환경에 따라 다른 사용자 지정이 필요할 가능성이 높습니다.

이 섹션은 템플릿 이름으로 구성됩니다.

3단계 - Terraform 실행으로 계속하기 전에 모든 변경 내용을 저장하십시오.

versions.tf

There are three instances of versions.tf files where the required_version field must match the version of terraform.exe you're using. Check the version of terraform (terraform.exe -version) and update each of the following instances:

  • edg-terraform\versions.tf
  • edg-terraform\modules\proxy\versions.tf
  • edg-terraform\modules\tableau_instance\versions.tf

key-pair.tf

  1. 1B단계에서 생성한 공용 키를 열고 키를 복사합니다.

     less my-key-ssh.pub

    Windows: 공용 키의 내용을 복사합니다.

  2. 공용 키 문자열을 public_key 인수에 복사합니다. 예를 들면 다음과 같습니다.

    resource "aws_key_pair" "tableau" {
    key_name = "my-key"
    public_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQ (truncated example) dZVHambOCw=="

Ensure that the key_name value is unique in the datacenter or terraform apply will fail.

locals.tf

Update user.owner to your name or alias. The value you enter here will be used for the "Name" tag in AWS on the resources that Terraform creates.

providers.tf

  1. 조직의 요구 사항에 따라 태그를 추가합니다. 예를 들면 다음과 같습니다.

    default_tags {
      tags = {
          
       "Application" = "tableau",
       "Creator" = "alias@example.com",
       "DeptCode" = "8675309",
       "Description" = "EDG",
       "Environment" = "test",
       "Group" = "itcloud@example.com"
      }
    }
  2. If using provider, comment out the assume_role lines:

    /* assume_role {
    role_arn     = "arn:aws:iam::310946706895:role/terraform-backend"
    session_name = "terraform"
    }*/  

elb.tf

Under 'resource "aws_lb" "tableau" {' choose a unique value to use for name and tags.Name.

If another AWS load balancer has the same name in the datacenter, then terraform apply will fail.

Add idle_timeout:

resource "aws_lb" "tableau" {
name                       = "edg-again-alb"
load_balancer_type         = "application"
subnets                    = [for subnet in aws_subnet.public : subnet.id]
security_groups            = [aws_security_group.public.id]
drop_invalid_header_fields = true
idle_timeout               = 400
tags = {
Name = "edg-again-alb"
}
			}

variables.tf

루트 도메인 이름을 업데이트합니다. 이 이름은 Route 53에서 등록한 도메인과 일치해야 합니다.

variable "root_domain_name" {
 default = "example.com"
 }

기본적으로 tableau라는 하위 도메인이 VPC DNS 도메인 이름에 지정됩니다. 이를 변경하려면 subdomain을 업데이트합니다.

variable "subdomain" {
 default = "tableau"
}

modules/tableau_instance/ec2.tf

There are two ec2.tf files in the project. This customization is for the Tableau instance of the ec2.tf in the directory: modules/tableau_instance/ec2.tf.

  • 필요한 경우 태그 blob을 추가합니다.

    tags = { 
     "Name" : var.ec2_name,
     "user.owner" = "ALIAS",
     "Application" = "tableau",
     "Creator" = "ALIAS@example.com",
     "DeptCode" = "8675309",
     "Description" = "EDG",
     "Environment" = "test",
     "Group" = "itcloud@example.com"
     }
    }
  • 필요에 따라 데이터 요구 사항을 처리하도록 저장소를 업데이트합니다.

    루트 볼륨:

    root_block_device {
     volume_size = 100
     volume_type = "gp3"
    }

    응용 프로그램 볼륨:

    resource "aws_ebs_volume" "tableau" {
     availability_zone = data.aws_subnet.tableau.availability_zone
     size              = 500
     type              = "gp3"
    }

3단계: Terraform 실행

A. Terraform 초기화

터미널에서 edg-terraform 디렉터리로 변경하고 다음 명령을 실행합니다.

terraform init

초기화에 성공하면 다음 단계로 계속합니다. 초기화에 실패하면 Terraform 출력의 지침을 따릅니다.

B. Terraform 계획

동일한 디렉터리에서 plan 명령을 실행합니다.

terraform plan

이 명령을 여러 번 실행해도 됩니다. 오류를 수정하는 데 필요한 만큼 여러 번 실행합니다. 이 명령이 오류 없이 실행되면 다음 단계로 계속합니다.

C. Terraform 적용

동일한 디렉터리에서 apply 명령을 실행합니다.

terraform apply

Terraform will prompt you to verify deployment, type Yes.

선택 사항: Terraform 삭제

destroy 명령을 실행하여 전체 VPC를 삭제할 수 있습니다.

terraform destroy

destroy 명령은 이전에 만든 것만 삭제합니다. AWS에서 일부 개체(보안 그룹, 서브넷 등)를 수동으로 변경한 경우 destroy가 실패합니다. destroy 작업이 실패/중단된 경우 종료하려면 Control + C를 입력합니다. 그런 다음 VPC를 Terraform에서 원래 만들 때의 상태로 수동으로 정리해야 합니다. 그런 다음 destroy 명령을 실행할 수 있습니다.

4단계 - 배스천에 연결

모든 명령줄 연결은 TCP 22(SSH 프로토콜)의 배스천 호스트를 통합니다.

  1. AWS에서 배스천 보안 그룹을 만들고(AWS > 보안 그룹 > 배스천 SG > 인바운드 규칙 편집) 터미널 명령을 실행하는 IP 주소 또는 서브넷 마스크의 SSH(TCP 22) 연결을 허용하는 규칙을 만듭니다.

    선택 사항: 배포 중에 사설 및 공용 그룹의 EC2 인스턴스 간 파일 복사를 허용하는 것이 좋을 수 있습니다. 인바운드 SSH 규칙 만들기:

    • 사설: 공용의 SSH를 허용하는 인바운드 규칙 만들기
    • 공용: 사설 및 공용의 SSH를 허용하는 인바운드 규칙 만들기
  2. 1.B단계에서 만든 pem 키를 사용하여 배스천 호스트에 연결합니다.

    Mac 터미널:

    pem 키가 저장된 디렉터리에서 다음 명령을 실행합니다.

    ssh-add —apple-use-keychain <keyName>.pem

    다른 사람이 개인 키에 액세스할 수 있다는 경고가 표시되면 chmod 600 <keyName.pem> 명령을 실행한 다음 ssh-add 명령을 다시 실행합니다.

    ssh -A ec2-user@IPaddress 명령을 사용하여 배스천 호스트에 연결합니다.

    예를 들어 ssh -A ec2-user@3.15.12.112를 사용합니다.

    Windows에서 PuTTY 및 Pageant 사용:

    1. pem 키에서 ppk 만들기: PuTTY 키 생성기를 사용합니다. 1.B 단계에서 만든 pem 키를 로드합니다. 키 가져오기 후에 Save private key(개인 키 저장)를 클릭합니다. 그러면 ppk 파일이 만들어집니다.

    2. PuTTY에서 - 구성을 열고 다음과 같이 변경합니다.

      • Sessions>Host Name: 배스천 호스트의 IP 주소를 추가합니다.
      • Sessions>Port: 22
      • Connection>Data>Auto-login username: ec2-user
      • Connection>SSH>Auth>Allow agent forwarding
      • Connection>SSH>Auth> 개인 키의 경우 찾아보기를 클릭하고 방금 만든 .ppk 파일을 선택합니다.
    3. Pageant를 설치하고 ppk를 응용 프로그램에 로드합니다.

    5단계 - PostgreSQL 설치

    Terraform 템플릿은 외부 리포지토리로 사용할 PostgreSQL을 설치하지 않습니다. 그러나 관련된 보안 그룹과 서브넷은 만들어집니다. PostgreSQL을 실행하는 EC2에 외부 리포지토리를 설치할 예정인 경우 3부 - Tableau Server 엔터프라이즈 배포 준비에 설명된 대로 EC2 인스턴스를 배포해야 합니다.

    그런 다음 4부 - Tableau Server 설치 및 구성에 설명된 대로 PostgreSQL을 설치 및 구성하고 tar 백업을 만듭니다.

    6단계 - (선택 사항) DeployTab4EDG 실행

    TabDeploy4EDG 스크립트는 4부에 설명된 4노드 Tableau 배포의 구현을 자동화합니다. TabDeploy4EDG 자동 설치 스크립트를 참조하십시오.

피드백을 제공해 주셔서 감사합니다!귀하의 피드백이 제출되었습니다. 감사합니다!