

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 建立叢集
<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 指令碼 （手動教學課程） 輸出中提供的其中一個子網路 IDs。
`Region`：您建立 AD 基礎設施的區域。
`DomainAddr`：此 IP 地址是 AD 服務的其中一個 DNS 地址。
`PasswordSecretArn`：包含 密碼之秘密的 Amazon Resource Name (ARN)`DomainReadOnlyUser`。
`BucketName`：存放引導指令碼的儲存貯體名稱。
`AdditionalPolicies` / `Policy`：讀取網域認證政策 ReadCertExample 的 Amazon Resource Name (ARN)。
`CustomActions` / `OnNodeConfigured` / `Args`：持有網域認證政策之秘密的 Amazon Resource Name (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 指令碼 （手動教學課程） 輸出中的其中一個子網路 IDs。
`Region`：您建立 AD 基礎設施的區域。
`DomainAddr`：此 IP 地址是 AD 服務的其中一個 DNS 地址。
`PasswordSecretArn`：包含 密碼之秘密的 Amazon Resource Name (ARN)`DomainReadOnlyUser`。
為了提高安全性狀態，建議您使用 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 指令碼 （手動教學課程） 輸出中提供的其中一個子網路 IDs。
`Region`：您建立 AD 基礎設施的區域。
`DomainAddr`：此 IP 地址是您 AD 服務的其中一個 DNS 地址。
`PasswordSecretArn`：包含 密碼之秘密的 Amazon Resource Name (ARN)`DomainReadOnlyUser`。
為了提高安全性狀態，建議您使用 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"
  }
}
```