Help us understand the problem. What is going on with this article?

[JAWS-UG CLI]Directory Service:#32-2 ディレクトリの作成(Simple-AD)、スナップショットの取得

More than 5 years have passed since last update.

このハンズオンについて

  • このハンズオンでは、Directory Serviceで作成したディレクトリのユーザでManagement Consoleにログインするまでの作業を実施します。
  • 今回のハンズオンでは、AD-Connectorは対象外とします。
  • 一部の操作はManagement Consoleで実施します。
  • Macをお使いの方は、Windows Serverでリモートデスクトップ接続が出来るアプリをご用意ください。
  • Windows Serverをドメインに参加させるため、SSMを使用します。SSMが利用可能なリージョンを利用してください。この手順ではオレゴンを利用します。

前提条件

バージョン確認

このハンズオンは以下のバージョンで動作確認を行いました。

コマンド
aws --version
結果
aws-cli/1.9.5 Python/2.7.10 Linux/4.1.10-17.31.amzn1.x86_64 botocore/1.3.5

必要な権限

作業にあたっては、以下の権限を有したIAMユーザもしくはIAMロールを利用してください。

  • EC2に対するフルコントロール権限
  • Directory Serviceに関するフルコントロール権限
  • IAMに関するフルコントロール権限
  • SSMに関するフルコントロール権限

0. 準備

リージョンを指定

コマンド
export AWS_DEFAULT_REGION='us-west-2'

資格情報を確認

コマンド
aws configure list
結果
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************PZ4A         iam-role
secret_key     ****************AZ55         iam-role
    region                us-west-2              env    AWS_DEFAULT_REGION

変数の確認

コマンド
cat << ETX

    DS_VPC: "${VPC_ID}"
    DS_SUBNET1: "${SUBNET_A_ID}"
    DS_SUBNET2: "${SUBNET_A_ID}"

ETX
結果
    DS_VPC: "vpc-********"
    DS_SUBNET1: "subnet-********"
    DS_SUBNET2: "subnet-********"

1. ディレクトリの作成

ドメイン名を指定

コマンド
DS_NAME="jawsug.local"
echo ${DS_NAME}

パスワードを指定

(パスワードらしいパスワードを設定してください)
強度の高いパスワードを設定することの重要性はこちら

コマンド
DS_PASSWORD="Passw0rd"
echo ${DS_PASSWORD}

ディレクトリのサイズを指定

コマンド
DS_SIZE="Small"
echo ${DS_SIZE}

パラメータを確認

コマンド
cat << ETX

    DS_VPC: "${VPC_ID}"
    DS_SUBNET1: "${SUBNET_A_ID}"
    DS_SUBNET2: "${SUBNET_A_ID}"
    DS_NAME: "${DS_NAME}"
    DS_PASSWORD: "${DS_PASSWORD}"
    DS_SIZE: "${DS_SIZE}"

ETX
結果
    DS_VPC: "vpc-********"
    DS_SUBNET1: "subnet-********"
    DS_SUBNET2: "subnet-********"
    DS_NAME: "jawsug.local"
    DS_PASSWORD: "Passw0rd"
    DS_SIZE: "Small"

ディレクトリの構築先のVPCを指定

コマンド
VPCSETTINGS_FILE='VPC_Settings.json'
コマンド
cat << EOF > ${VPCSETTINGS_FILE}
{
  "VpcId": "${VPC_ID}",
  "SubnetIds": ["${SUBNET_A_ID}", "${SUBNET_C_ID}"]
}
EOF
cat "${VPCSETTINGS_FILE}"
結果
{
  "VpcId": "vpc-********",
  "SubnetIds": ["subnet-********", "subnet-********"]
}

JSONファイルを検証

コマンド
jsonlint -q ${VPCSETTINGS_FILE}

ディレクトリを作成

コマンド
aws ds create-directory --name "${DS_NAME}" --password "${DS_PASSWORD}" --size "${DS_SIZE}" --vpc-settings file://${VPCSETTINGS_FILE}
結果
{
    "DirectoryId": "d-**********"
}
コマンド
DS_ID=`aws ds describe-directories | jq -r ".DirectoryDescriptions | .[] | .DirectoryId"` && echo ${DS_ID}
結果
ds-**********

ディレクトリの詳細を確認

Activeになるまで数分かかります。
気長に待ちましょう( ´_ノ`)y━~~

コマンド
DS_STAGE=$( \
  aws ds describe-directories \
    --query "DirectoryDescriptions[?Name==\`${DS_NAME}\`].Stage" \
    --output text \
) \
  && echo ${DS_STAGE}
結果
Active

ディレクトリ数の確認

コマンド
aws ds get-directory-limits
結果
{
    "DirectoryLimits": {
        "ConnectedDirectoriesLimitReached": false,
        "CloudOnlyDirectoriesLimit": 10,
        "ConnectedDirectoriesCurrentCount": 0,
        "CloudOnlyDirectoriesCurrentCount": 1,
        "ConnectedDirectoriesLimit": 10,
        "CloudOnlyDirectoriesLimitReached": false
    }
}

2. スナップショットの確認

スナップショットの確認

コマンド
aws ds describe-snapshots --directory-id ${DS_ID}
結果
{
    "Snapshots": []
}

スナップショットの取得

ディレクトリの作成中はスナップショットを作成できません。
数分お待ちください。

コマンド
aws ds create-snapshot --directory-id ${DS_ID}
結果
{
    "SnapshotId": "s-**********"
}

スナップショットの確認

コマンド
aws ds describe-snapshots --directory-id ${DS_ID}
結果
{
    "Snapshots": [
        {
            "Status": "Completed",
            "DirectoryId": "d-**********",
            "Type": "Manual",
            "StartTime": 1444552262.026,
            "SnapshotId": "s-**********"
        }
    ]
}

スナップショット数の確認

コマンド
aws ds get-snapshot-limits --directory-id ${DS_ID}
結果
{
    "SnapshotLimits": {
        "ManualSnapshotsCurrentCount": 1,
        "ManualSnapshotsLimit": 5,
        "ManualSnapshotsLimitReached": false
    }
}

3. DHCPオプションの作成

管理用のインスタンスがドメインに参加する際、名前解決が必要となるためDHCPでDNSサーバが自動で設定されるようにします。

DNSサーバのIPアドレスを取得

コマンド
DNS_IP1=`aws ds describe-directories --directory-ids ${DS_ID} | jq -r ".[] | .[].DnsIpAddrs | .[]" | sed -n '1,1p'`
DNS_IP2=`aws ds describe-directories --directory-ids ${DS_ID} | jq -r ".[] | .[].DnsIpAddrs | .[]" | sed -n '2,2p'`

echo ${DNS_IP1}
echo ${DNS_IP2}

DHCPオプションを作成

コマンド
DHCPOPTIONS_FILE='DHCP_Options.json'
コマンド
cat << EOF > ${DHCPOPTIONS_FILE}
[
  {
    "Key": "domain-name",
    "Values": ["${DS_NAME}"]
  },
  {
    "Key": "domain-name-servers",
    "Values": ["${DNS_IP1}", "${DNS_IP2}"]
  }
]
EOF
cat "${DHCPOPTIONS_FILE}"
結果
[
  {
    "Key": "domain-name",
    "Values": ["jawsug.local"]
  },
  {
    "Key": "domain-name-servers",
    "Values": ["10.0.0.150", "10.0.1.216"]
  }
]

JSONファイルを検証

コマンド
jsonlint -q ${DHCPOPTIONS_FILE}
コマンド
DHCP_ID=`aws ec2 create-dhcp-options --dhcp-configuration file://${DHCPOPTIONS_FILE} | jq -r .DhcpOptions.DhcpOptionsId` && echo ${DHCP_ID}

作成されたDHCPオプションを確認

コマンド
aws ec2 describe-dhcp-options --dhcp-options-ids ${DHCP_ID}
結果
{
    "DhcpOptions": [
        {
            "DhcpConfigurations": [
                {
                    "Values": [
                        {
                            "Value": "jawsug.local"
                        }
                    ],
                    "Key": "domain-name"
                },
                {
                    "Values": [
                        {
                            "Value": "10.0.0.150"
                        },
                        {
                            "Value": "10.0.1.216"
                        }
                    ],
                    "Key": "domain-name-servers"
                }
            ],
            "DhcpOptionsId": "dopt-********"
        }
    ]
}

VPCにDHCPオプションを関連づけます

VPCの状態を確認

コマンド
aws ec2 describe-vpcs --vpc-ids ${VPC_ID}
結果
{
    "Vpcs": [
        {
            "VpcId": "vpc-********",
            "InstanceTenancy": "default",
            "Tags": [
                {
                    "Value": "jawsug-cli",
                    "Key": "Name"
                }
            ],
            "State": "available",
            "DhcpOptionsId": "dopt-********",
            "CidrBlock": "10.0.0.0/16",
            "IsDefault": false
        }
    ]
}

DHCPオプションをVPCに関連づける

コマンド
aws ec2 associate-dhcp-options --dhcp-options-id ${DHCP_ID} --vpc-id ${VPC_ID}
結果
(返値無し)

DHCPオプションがVPCに関連づけられたことを確認

コマンド
aws ec2 describe-vpcs --vpc-ids ${VPC_ID}
{
    "Vpcs": [
        {
            "VpcId": "vpc-********",
            "InstanceTenancy": "default",
            "State": "available",
            "DhcpOptionsId": "dopt-********",
            "CidrBlock": "10.0.0.0/16",
            "IsDefault": false
        }
    ]
}

以上です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away