

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 클러스터 생성
<a name="tutorials_05_multi-user-ad-step3"></a>

Amazon EC2 인스턴스를 종료하지 않았다면 지금 종료하세요.

환경은 Active Directory(AD)에 대해 사용자를 인증할 수 있는 클러스터를 생성하도록 설정되어 있습니다.

간단한 클러스터 구성을 만들고 AD 연결과 관련된 설정을 제공합니다. 자세한 내용은 [`DirectoryService`](DirectoryService-v3.md)(을)를 참조하세요.

다음 클러스터 구성 중 하나를 선택하고 `ldaps_config.yaml`, `ldaps_nocert_config.yaml` 또는 `ldap_config.yaml`이라는 이름의 파일에 복사합니다.

인증서 검증이 있는 LDAPS 구성을 선택하는 것이 좋습니다. 이 구성을 선택하는 경우 부트스트랩 스크립트도 `active-directory.head.post.sh`로 이름이 지정된 파일에 복사해야 합니다. 그리고 구성 파일에 표시된 대로 Amazon S3 버킷에 저장해야 합니다.

## 인증서 검증 구성이 포함된 LDAPS(권장)
<a name="tutorials_05_multi-user-ad-step3-ldaps"></a>

**참고**  
`KeyName`: Amazon EC2 키페어 중 하나입니다.
`SubnetId / SubnetIds`: CloudFormation 빠른 생성 스택(자동 자습서) 또는 python 스크립트(수동 자습서)의 출력에 제공된 서브넷 ID 중 하나입니다.
`Region`: AD 인프라를 생성한 리전입니다.
`DomainAddr`: 이 IP 주소는 AD 서비스의 DNS 주소 중 하나입니다.
`PasswordSecretArn`: `DomainReadOnlyUser`의 암호가 포함된 보안 암호의 Amazon 리소스 이름(ARN)입니다.
`BucketName`: 부트스트랩 스크립트가 들어 있는 버킷의 이름입니다..
`AdditionalPolicies`/`Policy`: 읽기 도메인 인증 정책 ReadCertExample의 Amazon 리소스 이름(ARN)입니다.
`CustomActions`/`OnNodeConfigured`/`Args`: 도메인 인증 정책을 보유하는 보안 암호의 Amazon 리소스 이름(ARN).
더 나은 보안 태세를 위해 `HeadNode` / `Ssh` / `AllowedIps` 구성을 사용하여 헤드 노드에 대한 SSH 액세스를 제한하는 것이 좋습니다.  
에 지정된 인증서는 모든 클러스터 노드에서 액세스할 수 있어야 `LdapTlsCaCert` 합니다.

**하드 요구 사항**  
에 지정된 인증서는 모든 클러스터 노드에서 액세스할 수 있어야 `LdapTlsCaCert` 합니다.  
인증서에 액세스할 수 없는 노드는 디렉터리에서 사용자를 확인할 수 없습니다.

```
Region: region-id
Image:
  Os: alinux2
HeadNode: 
  InstanceType: t2.micro
  Networking:
    SubnetId: subnet-abcdef01234567890
  Ssh:
    KeyName: keypair
  Iam:
    AdditionalIamPolicies:
      - Policy: arn:aws:iam::123456789012:policy/ReadCertExample
    S3Access:
      - BucketName: amzn-s3-demo-bucket
        EnableWriteAccess: false
        KeyName: bootstrap/active-directory/active-directory.head.post.sh
  CustomActions:
    OnNodeConfigured:
      Script: s3://amzn-s3-demo-bucket/bootstrap/active-directory/active-directory.head.post.sh
      Args:
        - arn:aws:secretsmanager:region-id:123456789012:secret:example-cert-123abc
        - /opt/parallelcluster/shared/directory_service/domain-certificate.crt
Scheduling:
  Scheduler: slurm
  SlurmQueues:
    - Name: queue0
      ComputeResources:
        - Name: queue0-t2-micro
          InstanceType: t2.micro
          MinCount: 1
          MaxCount: 10         
      Networking:
        SubnetIds:
          - subnet-abcdef01234567890
DirectoryService:
  DomainName: corp.example.com
  DomainAddr: ldaps://corp.example.com
  PasswordSecretArn: arn:aws:secretsmanager:region-id:123456789012:secret:ADSecretPassword-1234
  DomainReadOnlyUser: cn=ReadOnlyUser,ou=Users,ou=CORP,dc=corp,dc=example,dc=com
  LdapTlsCaCert: /opt/parallelcluster/shared/directory_service/domain-certificate.crt
  LdapTlsReqCert: hard
```

부트스트랩 스크립트****

부트스트랩 파일을 생성한 후 S3 버킷에 업로드하기 전에를 실행`chmod +x active-directory.head.post.sh`하여 AWS ParallelCluster 실행 권한을 부여합니다.

```
#!/bin/bash
set -e

CERTIFICATE_SECRET_ARN="$1"
CERTIFICATE_PATH="$2"

[[ -z $CERTIFICATE_SECRET_ARN ]] && echo "[ERROR] Missing CERTIFICATE_SECRET_ARN" && exit 1
[[ -z $CERTIFICATE_PATH ]] && echo "[ERROR] Missing CERTIFICATE_PATH" && exit 1

source /etc/parallelcluster/cfnconfig
REGION="${cfn_region:?}"

mkdir -p $(dirname $CERTIFICATE_PATH)
aws secretsmanager get-secret-value --region $REGION --secret-id $CERTIFICATE_SECRET_ARN --query SecretString --output text > $CERTIFICATE_PATH
```

## 인증서 확인 구성이 없는 LDAPS
<a name="tutorials_05_multi-user-ad-step3-ldaps-no-cert"></a>

**참고**  
`KeyName`: Amazon EC2 키페어 중 하나입니다.
`SubnetId / SubnetIds`: CloudFormation 빠른 생성 스택(자동 자습서) 또는 python 스크립트(수동 자습서)의 출력에 있는 서브넷 ID 중 하나입니다.
`Region`: AD 인프라를 생성한 리전입니다.
`DomainAddr`: 이 IP 주소는 AD 서비스의 DNS 주소 중 하나입니다.
`PasswordSecretArn`: `DomainReadOnlyUser`의 암호가 포함된 보안 암호의 Amazon 리소스 이름(ARN)입니다.
보안 태세를 강화하려면 HeadNode/Ssh/AllowedIps 구성을 사용하여 헤드 노드에 대한 SSH 액세스를 제한하는 것이 좋습니다.

```
Region: region-id
Image:
  Os: alinux2
HeadNode: 
  InstanceType: t2.micro
  Networking:
    SubnetId: subnet-abcdef01234567890
  Ssh:
    KeyName: keypair
Scheduling:
  Scheduler: slurm
  SlurmQueues:
    - Name: queue0
      ComputeResources:
        - Name: queue0-t2-micro
          InstanceType: t2.micro
          MinCount: 1
          MaxCount: 10         
      Networking:
        SubnetIds:
          - subnet-abcdef01234567890
DirectoryService:
  DomainName: corp.example.com
  DomainAddr: ldaps://corp.example.com
  PasswordSecretArn: arn:aws:secretsmanager:region-id:123456789012:secret:ADSecretPassword-1234
  DomainReadOnlyUser: cn=ReadOnlyUser,ou=Users,ou=CORP,dc=corp,dc=example,dc=com
  LdapTlsReqCert: never
```

## LDAP 구성
<a name="tutorials_05_multi-user-ad-step3-ldap"></a>

**참고**  
`KeyName`: Amazon EC2 키페어 중 하나입니다.
`SubnetId / SubnetIds`: CloudFormation 빠른 생성 스택(자동 자습서) 또는 python 스크립트(수동 자습서)의 출력에 제공된 서브넷 ID 중 하나입니다.
`Region`: AD 인프라를 생성한 리전입니다.
`DomainAddr`: 이 IP 주소는 AD 서비스의 DNS 주소 중 하나입니다.
`PasswordSecretArn`: `DomainReadOnlyUser`의 암호가 포함된 보안 암호의 Amazon 리소스 이름(ARN)입니다.
보안 태세를 강화하려면 HeadNode/Ssh/AllowedIps 구성을 사용하여 헤드 노드에 대한 SSH 액세스를 제한하는 것이 좋습니다.

```
Region: region-id
Image:
  Os: alinux2
HeadNode: 
  InstanceType: t2.micro
  Networking:
    SubnetId: subnet-abcdef01234567890
  Ssh:
    KeyName: keypair
Scheduling:
  Scheduler: slurm
  SlurmQueues:
    - Name: queue0
      ComputeResources:
        - Name: queue0-t2-micro
          InstanceType: t2.micro
          MinCount: 1
          MaxCount: 10         
      Networking:
        SubnetIds:
          - subnet-abcdef01234567890
DirectoryService:
  DomainName: dc=corp,dc=example,dc=com
  DomainAddr: ldap://192.0.2.254,ldap://203.0.113.237
  PasswordSecretArn: arn:aws:secretsmanager:region-id:123456789012:secret:ADSecretPassword-1234
  DomainReadOnlyUser: cn=ReadOnlyUser,ou=Users,ou=CORP,dc=corp,dc=example,dc=com
  AdditionalSssdConfigs:
    ldap_auth_disable_tls_never_use_in_production: True
```

다음 명령을 사용하여 클러스터를 생성합니다.

```
$ pcluster create-cluster --cluster-name "ad-cluster" --cluster-configuration "./ldaps_config.yaml"
{
  "cluster": {
    "clusterName": "pcluster",
    "cloudformationStackStatus": "CREATE_IN_PROGRESS",
    "cloudformationStackArn": "arn:aws:cloudformation:region-id:123456789012:stack/ad-cluster/1234567-abcd-0123-def0-abcdef0123456",
    "region": "region-id",
    "version": 3.15.0,
    "clusterStatus": "CREATE_IN_PROGRESS"
  }
}
```