在 EC2 用户数据中设置 Windows 服务器密码

Setting Windows Server Password in EC2 User Data

我想在 AWS EC2 用户数据中设置 Windows Server 2012 R2 管理员密码,但我正在做的一些事情不起作用。

我正在启动具有以下用户数据值的实例:

<powershell>
$user = [adsi]"WinNT://localhost/Administrator,user"
$user.SetPassword("Tm8LgmjBTigXq8PYifGG@RGQaXoqzT")
$user.SetInfo()
</powershell>

我将为产品使用不同的密码,但想确保我现在满足 Windows 密码要求。

就我使用的 AMI 而言,我从一个简单的 Packer 构建开始,该构建基于 Amazon 提供的 Windows Server 2012 R2 AMI。 Packer 构建现在所做的就是添加一个目录,然后输出它创建的 AMI ID。然后我从该 AMI 启动一个新实例。

但是当我通过 RDP 进入实例时,我继续收到错误 The user name or password is incorrect. Try again.

这是来自 EC2 "Get System Log" 的日志:

2015/12/17 02:26:26Z: EC2ConfigMonitorState: 0
2015/12/17 02:26:27Z: Windows sysprep configuration complete.
2015/12/17 02:26:30Z: AMI Origin Version: 2015.10.26
2015/12/17 02:26:30Z: AMI Origin Name: Windows_Server-2012-R2_RTM-English-64Bit-Base
2015/12/17 02:26:30Z: OS: Microsoft Windows NT 6.3.9600
2015/12/17 02:26:30Z: OsVersion: 6.3
2015/12/17 02:26:30Z: OsProductName: Windows Server 2012 R2 Standard
2015/12/17 02:26:30Z: OsBuildLabEx: 9600.18066.amd64fre.winblue_ltsb.150928-1002
2015/12/17 02:26:30Z: Language: en-US
2015/12/17 02:26:30Z: EC2 Agent: Ec2Config service v3.10.442
2015/12/17 02:26:32Z: Message: Waiting for meta-data accessibility...
2015/12/17 02:26:32Z: Message: Meta-data is now available.
2015/12/17 02:26:35Z: AMI-ID: ami-0cd7c86d
2015/12/17 02:26:35Z: Instance-ID: i-9da97047
2015/12/17 02:26:40Z: Driver: AWS PV Network Device v7.3.2.0
2015/12/17 02:26:40Z: Driver: AWS PV Storage Host Adapter v7.3.2.0
2015/12/17 02:26:40Z: Ec2SetPassword: Disabled
2015/12/17 02:26:41Z: RDPCERTIFICATE-SUBJECTNAME: WIN-B5RLUMJ651G
2015/12/17 02:26:41Z: RDPCERTIFICATE-THUMBPRINT: A03F21FCE336140DA63828E3D61FB1274C6CF26E
2015/12/17 02:26:44Z: Message: Windows is Ready to use
2015/12/17 02:26:52Z: Info EC2Config configuration: status:3; region:us-west-2; iam:0; authz:0
2015/12/17 02:26:52Z: SSM Config: status:Inactive; iam:No; ErrorMessage:[[Unable to find credentials]]; RequestId:; ErrorCode:; ErrorType:Sender; StatusCode:0
Close

希望得到 Windows 专家的指导!

更新 #1: 我采用了一种新方法。 AWS 似乎有一项名为 EC2ConfigService 的服务,可用于启用自定义 AMI 的密码生成。使用 Packer,我将文件 C:\Program Files\Amazon\Ec2ConfigService\Settings\config.xml 替换为 Ec2SetPassword 设置为 Enabled 的文件,但它似乎仍然没有什么不同。我会寻找更改此设置的在线示例,看看是否可以找到。

好的,我的同事想通了。我们的 Packer 配置器现在看起来像这样:

"provisioners": [
        {
            "type": "powershell",
            "inline": [
                "# Enable the system password to be retrieved from the AWS Console after this AMI is built and used to launch code",
                "$ec2config = [xml] (get-content 'C:\Program Files\Amazon\Ec2ConfigService\Settings\config.xml')",
                "($ec2config.ec2configurationsettings.plugins.plugin | where {$_.name -eq \"Ec2SetPassword\"}).state = \"Enabled\"",
                "$ec2config.save(\"C:\Program Files\Amazon\Ec2ConfigService\Settings\config.xml\")"
            ]
        }
    ]

我确认这按预期工作。 Packer 构建 AMI,配置它想要的东西,一旦 EC2 实例从该 AMI 启动,密码就会重置,一旦您传入 EC2 密钥对就可以获取密码。