This content originally appeared on DEV Community and was authored by ryanc
前回のUserData編に続き、達成したい目的は同じく下記のままで、
①(AWS Managed ADではない)ADに参加
②ホスト名を、自分がつけたNameタグの値に揃える
やり方をUserDataではなくもうちょっと柔軟なSystems Manager RunCommandを利用する方法を試していこうと思う。
Systems Managerを利用すると、もちろんできることの幅は非常に広がるのだが、その代わりSSMエージェントのインストールとインスタンスプロファイルの設定等、必要条件を満たす必要はある(Amazon提供のAMIならエージェントは最初から入っているので楽)。
インスタンスプロファイルに必要なIAM権限と、シークレットマネージャーへのADユーザー認証情報の登録等は前回同様なので省略する。
Systems Managerの「ドキュメント」を開き、「Create Document」からCommand or session
タイプを選択する。
ドキュメントの詳細はこんな感じで作成する。
ドキュメントタイプはコマンドドキュメント
になる。
肝心なコマンドのコンテンツだが、前回のPowerShellスクリプトをそのまま流用して、大事そうなパラメータが指定できるようにだけ少し手を入れてYAML形式にしてみた。
---
schemaVersion: "2.2"
description: "Join AD and rename host with instance tag"
parameters:
DomainName:
type: "String"
description: "参加するADドメインのDNS名"
UserCredentialSecretID:
type: "String"
description: "AD参加に利用するユーザー認証情報を保持するSecrets ManagerシークレットID"
HostnameTag:
type: "String"
description: "ホスト名を定義するタグ名(デフォルトはName)"
default: "Name"
mainSteps:
- action: "aws:runPowerShellScript"
name: "example"
inputs:
runCommand:
- $secretManager = Get-SECSecretValue -SecretId {{UserCredentialSecretID}}
- $secret = $secretManager.SecretString | ConvertFrom-Json
- $username = $domainName + "\" + $secret.Account
- $password = $secret.Password | ConvertTo-SecureString -AsPlainText -Force
- $credential = New-Object System.Management.Automation.PSCredential($username,$password)
- $instanceID = Get-EC2InstanceMetadata -Category InstanceId
- $nameTag = Get-EC2Tag -Filter @{Name="resource-id";Value="$instanceID"},@{Name="key";Value="{{HostnameTag}}"}
- $newName = $nameTag.Value
- Add-Computer -DomainName "{{DomainName}}" -NewName "$newName" -Credential $credential -Passthru -Force -Restart
(パラメータ値は{{}}
で囲む)
これで実際にRun Commandで実行する際には、こんな感じでパラメータを指定できるしEC2インスタンスの初回起動時じゃなくてもいつでも実行でき、たくさんのインスタンスに対しても一気に実行できるので一気に柔軟性が増す。
一々パラメータ設定が面倒であれば、デフォルト値をセットしてしまえば良し。
実際にやってみたが問題なく動作した。
今回は以上。次Chef好き向けにOpsWorksでやってみようかと思う。
※イラストはこちらからご提供いただきました:
Computer vector created by macrovector - www.freepik.com
This content originally appeared on DEV Community and was authored by ryanc
ryanc | Sciencx (2021-04-21T02:03:30+00:00) EC2インスタンス作成時にホスト名変更&AD参加する(RunCommand編). Retrieved from https://www.scien.cx/2021/04/21/ec2%e3%82%a4%e3%83%b3%e3%82%b9%e3%82%bf%e3%83%b3%e3%82%b9%e4%bd%9c%e6%88%90%e6%99%82%e3%81%ab%e3%83%9b%e3%82%b9%e3%83%88%e5%90%8d%e5%a4%89%e6%9b%b4%ef%bc%86ad%e5%8f%82%e5%8a%a0%e3%81%99%e3%82%8b-2/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.