EC2 User DataによるActive Directoryドメインへの自動参加
ソリューションアーキテクトの渡邉(@gentaw0)です。
EC2インスタンスでは、User Dataを設定することによりインスタンス起動時に自動的にスクリプトを実行させることが可能になっています。この機能を利用して、AMIからWindowsインスタンスを起動するときにActive Directoryドメインに自動的に参加させることができます。
まず、VPC上のEC2インスタンスにActive Directoryドメインコントローラーをセットアップしておきます。ドメインコントローラーのセットアップが完了したら、VPCのDHCP Option Setを作成します。Domain nameにはActive Directoryのドメイン名を、Domain name serversにはドメインコントローラーのIPアドレスを設定します。NetBIOS名前解決を使用する場合は、NetBIOS name serversとNetBIOS node typeもあわせて設定するようにしておきます。
作成したDHCP Option setをVPCに設定します。これは、起動したEC2インスタンスがActive Directoryドメインの名前解決をおこなうために必要になります。また、Security GroupでActive Directoryのドメインコントローラー通信に必要なポートを許可するように設定しておく必要があります(参考:http://blogs.technet.com/b/jpntsblog/archive/2009/03/04/3208978.aspx)。
EC2インスタンスの起動にカスタムAMIを使用する場合は、あらかじめEC2 Config ServicesでSysprepを実行してからAMIを作成するようにしてください。
Active Directoryドメインにコンピュータを参加させる方法はいくつかありますが、ここではwmic ComputerSystemコマンドとAdd-Computerコマンドレットによる方法についてご紹介したいと思います。EC2インスタンスでは、User Dataに設定するスクリプトとして通常のバッチファイルまたはPowerShellスクリプトを実行可能です。それぞれ、<script></script>タグと<powershell></powershell>タグでかこむことでスクリプトとして認識させることができるようになります。
よって、wmic ComputerSystemを使用してコンピュータをドメインに参加する場合は、以下のようにUser Dataを設定します。UsernameとPasswordの部分は、Active Directoryドメインへコンピュータを参加させる権限のあるアカウントのユーザー名とパスワードを指定します。その他、ドメイン名やOUなどについては環境にあわせてカスタマイズして使用してください。
<script>
wmic.exe ComputerSystem WHERE Name!=null CALL JoinDomainOrWorkgroup FJoinOptions=3 Name="example.com" Password="yourPassword" Username="[email protected]" AccountOU="OU=yourOU;DC=example;DC=com"
</script>
同様に、Windows PowershellのAdd-Computerコマンドレットを利用してドメインにコンピュータを参加させる場合は、以下のようにUser Dataを設定します。こちらも、使用するアカウントやドメイン名、OUなどは環境にあわせてカスタマイズしてください。
<powershell>
$password = ConvertTo-SecureString -AsPlainText -Force "yourPassword"
$credential = New-Object System.Management.Automation.PSCredential "Administrator",$password
Add-Computer -DomainName example.com -OUPath "OU=yourOU,DC=example,DC=com" -Credential $credential
</powershell>
AMIからEC2インスタンスが起動されたらUser Dataに設定されたスクリプトが実行され、Active Directoryドメインへの参加が自動的に完了します。この方法を利用すると、Active Directoryドメイン環境でのWindowsインスタンスの展開が格段に効率化できると思いますので、ぜひおためしいただければと思います!
コメント