AutoScalingを使ってスケールアウトしたWindowsServerを自動でドメイン参加させる

記事タイトルとURLをコピーする

こんにちは。
クラウドインテグレーション部技術4課の山﨑です。
上野公園を散歩した際、すでに早咲きの桜が咲き始めていて、春が近いのを感じました。

さて、前回のブログで、 SSMを利用し、起動したWindowsServerを自動でドメイン参加させる という記事を書きました。
この中で利用しているユーザーデータをAutoScalingの起動設定に設定することで、AutoScalingでスケールインしたWindowsServerを自動でドメイン参加をさせることができますので、今回そちらを実施してみようと思います。
SSMの設定やSSMを利用するためのIAMロールの作成は、こちらのブログでは記載いたしませんので、前回ブログをご参照ください。

<目次>
 ①起動設定
 ②AutoScaling設定
 ③動作確認

<前提条件>
 ①ADサーバーが構築されていること。(今回はEC2上にADサーバーを構築しています) 
 ②DHCPオプションセットでADサーバーをDNSとして指定していること。
 ③AutoScalingで起動するWindowsServer
   ・SSMエージェントが導入済みであること。※1
   ・外部接続できること。(SSMのエンドポイントが外部にあるため)
   ・SSMにアクセスできるIAMロールを作成済みであること。※2
 ④ドメイン参加用のSSMドキュメントを作成済みであること。 ※2

※1 Windows Server 2016 インスタンス、2016 年 11 月以降の Amazon Machine Image (AMI) から作成された Windows Server 2003-2012 R2 インスタンスはデフォルトでSSMエージェントがインストールされています。
※2 SSMドキュメントの作成手順は以下のブログの「②IAMポリシー、IAMロール作成」、「③SSMドキュメント作成」をご参照ください。
SSMを利用し、起動したWindowsServerを自動でドメイン参加させる

<検証環境>
 ADサーバー
 ・OS : WindowsServer2016
 ・管理者名 : Administrator
 ・ドメイン名 : test.local
 ・テスト用OU : OU=test,DC=test,DC=local
 ・機能レベル : Windows Server 2016
クライアント
 ・OS : WindowsServer2016
 ・AMI : Windows_Server-2016-Japanese-Full-Base-2017.01.11 - ami-574f3330

①起動設定

それでは、AutoScalingで利用する起動設定から設定していきます。
基本的な設定部分は割愛して、今回の構成に関係ある部分のみ記載します。

利用したAMI : Windows_Server-2016-Japanese-Full-Base-2017.01.11 - ami-574f3330

 1. [コンソール]-[EC2]-[起動設定]-[起動設定の作成]-[AMIの選択]-[インスタンスタイプの選択] より、起動設定の詳細設定を開きます。

[IAMロール]  : SSMサービスにアクセスできるIAMロールを選択します。
[ユーザーデータ] :  SSMドキュメントをアタッチするpowershellを入力します。<SSM名> の部分は、ご自身で作成したSSMドキュメントの名前を入力してください。

<powershell>
Set-DefaultAWSRegion -Region ap-northeast-1
$instance_id_value=Invoke-Restmethod -uri http://169.254.169.254/latest/meta-data/instance-id
Set-Variable -name instance_id -value $instance_id_value
New-SSMAssociation -InstanceId $instance_id -Name <SSM名>
</powershell>
2.アナウンスに従って起動設定を作成します。

②AutoScaling設定

①で作成した起動設定を指定したAutoScalingの設定を行います。

 1. [コンソール]-[EC2]-[Auto Scaling グループ]-[Auto Scaling グループの作成]より、AutoScalingグループを作成します。

①で作成した起動設定を選択していることを確認します。

2.アナウンスに従ってAutoScalingグループを作成します。

ドメイン参加しているインスタンスだと分かり易いタグをつけておくと便利です。

3.[コンソール]-[EC2]-[インスタンス] より、スケールインしたWindowsServerが起動していることを確認します。

4.[コンソール]-[EC2]-[コマンド履歴]より、コマンドの実行が成功していることを確認します。

③動作確認

WindowsServerがドメイン参加できているかRDP接続して確認します。

1. [スタート]-[コントロールパネル]-[システムとセキュリティ]-[システム]をクリックし、ドメイン参加できているか確認します。

ドメイン参加できていますね!
複数同時にスケールインした場合でも、同様にドメイン参加されていました。

最後に

スケールアウトするWindowsを自動でドメイン参加できるようになるとオペレーションの負荷がかなり下がりますね。
ただ、注意点としまして、スケールインする際ドメイン離脱は自動でできていないので、ADに不要なオブジェクトが残ってしまいます。
対処方として、GPOのシャットダウンポリシーを使い、スケールインするサーバーでSQSにサーバー情報をキューイング、ADサーバーでそのSQSをポーリングして、定期的にスケールインしたサーバーを削除するような方法が考えられるかなと思います。(検証してブログ書きます!)

また、AutoScalingを使ったドメイン参加につきましては、AWS公式ドキュメントもありますので、そちらも参考にしていただけますと幸いです。


EC2インスタンスが自動的にMicrosoft Active Directoryドメインに参加するように構成する方法