我已经在aws控制台上工作了一段时间,想要使用powershell和winrm在它上面启动一个windows ec2实例和bootsrap。任何人都可以帮我解决这个问题。我已经制作了一个ruby脚本,可以启动它实例,但它无法进入它。
答案 0 :(得分:0)
做了类似于你的要求我可以告诉你,这不是一个非常简单的过程。如果您使用AWS提供的Windows AMI,那么您将需要开发一个userdata脚本,以便在创建实例时为您执行winrm配置。您可以使用ruby脚本在AWS中创建Windows实例并将userdata脚本作为该创建的一部分传递,但userdata脚本本身必须是批处理和/或powershell才能在Windows操作系统内执行。
您可以引用此script,该脚本实际上来自Anisble安装程序,但是您要求的是WinRM配置创建新的自签名证书并使用https进行默认安全端口5986上的连接。不要忘记打开此实例的安全组以允许TCP 5986入站。
启动新AWS实例并运行userdata脚本后,您将能够使用" https://:3986 / winrm"连接到WinRM和远程PowerShell会话。并使用本地Windows" Administartor"进行身份验证;用户。根据您在请求创建实例时提供的证书,每个实例随机生成密码。您可以通过转到EC2控制台获取密码并提供私钥。假设您在ruby中使用aws-sdk gem,您可以使用以下内容请求密码:
# pemPath is the file path of your PEM file
# instance is an AWS::EC2::Instance
ec2 = AWS::EC2.new
encrypted_password = ec2.client.get_password_data(:instance_id => instance.instance_id).password_data
private_key = OpenSSL::PKey::RSA.new(File.read(pemPath))
decoded = Base64.decode64(encrypted_password)
password = private_key.private_decrypt(decoded)