我创建了一个在 EC2 上的 Windows 实例,并进行了 Ansible 的设置,以便进行操作
由于有机会创建适用于Windows的Playbook,所以我在EC2上创建了可通过Ansible操作的Windows实例,以便进行简便的测试。以下是创建的步骤概要。
在AWS上创建一个Windows Server实例
我已经验证了”Microsoft Windows Server 2016 Base – ami-04f188a745c1a5ecb”。
创建实例时需要注意以下三点
-
- 「セキュリティグループの設定」のインバウンド設定で、RDPとWinRM-HTTPSのポートを開けておく。
-
- キーペアの登録は必ず行う。
- 「インスタンスの詳細設定」の「高度な詳細」>「ユーザーデータ」に次の内容をコピペしておく。これにより、インスタンス起動時にpowershellでスクリプトが実行され、AnsibleがWindowsServerと通信するために必要な、WindowsServer側のセットアップが完了する。このスクリプトは、Ansibleの公式ドキュメント Setting up a Windows Host を参考にした。
<powershell>
$url = "https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1"
$file = "$env:temp\ConfigureRemotingForAnsible.ps1"
(New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file)
powershell.exe -ExecutionPolicy ByPass -File $file
</powershell>
顺便提一下,上述的设置并不够安全(启用了基本认证等),在正式环境中最好不要使用这样的设置。
创建库存文件
一旦实例创建成功,可以选择“操作”>“获取Windows密码”来获取公共DNS、用户名和密码。
根据此信息创建库存文件。
[windows2016]
<パブリックDNS> ansible_user=<ユーザー名> ansible_password=<パスワード> ansible_connection=winrm ansible_winrm_server_cert_validation=ignore
确认连接
$ ansible windows2016 -i ./inventory -m win_ping
ec2-13-231-151-252.ap-northeast-1.compute.amazonaws.com | SUCCESS => {
"changed": false,
"ping": "pong"
}
创建启动模板
由于可以确认在上述设置下可以进行通信,因此我们创建了一个使用相同设置的EC2启动模板,以便随时快速创建具有相同设置的Windows Server。