EC2Launch v2 初始化 Windows 磁盘

问题描述 投票:0回答:1

不太清楚 AWS 如何想象工程师从 EC2Launch v1 到 EC2Launch v2...从长远来看,这可能是解决方案,但 atm idk。努力寻找有关如何与 EC2Launch v2 交互的有用文档。我离题了。

上下文: 我正在尝试使用具有多个硬盘的 CloudFormation 脚本启动 WS2022 服务器。我希望使用

AWS::SSM::Document
资源来自动化它的初始化。

问题 当 WS2022 服务器上线时,您必须使用磁盘管理器手动初始化附加硬盘。

想要的结果 具有多个硬盘驱动器的 WS2022 服务器在首次启动时可访问。

我做了什么

  • 尝试使用 GUI
    AWS EC2 Launch
    并初始化 HDD。 (没有成功)
  • 我正在重写一个
    EC2Launch v1
    脚本
    InitializeDisk.ps1
    ,希望可以将其扔进 S3 存储桶并由
    SSMDocument
    稍后执行。

云形成模板代码:

# Don't worry about the Ref Variables as they are pretty generic. 

 #Create Instance
  WindowsServer2022Instance:
    Type: 'AWS::EC2::Instance'
    Properties:
      InstanceType: 'i3.large'
      ImageId:  #WS2022 AMI Image
      IamInstanceProfile: # Some InstanceProfile 
      EbsOptimized: true
      KeyName: 
        Ref: # Some KeyName
      NetworkInterfaces:
        - DeviceIndex: '0'
          SubnetId: # Some Subnet ID
          AssociatePublicIpAddress: true
          GroupSet:
            - Ref: # Some Subnet ID
        
  #EC2 Volume Creation
  AdditionalVolume:
    Type: 'AWS::EC2::Volume'
    Properties:
      Size: 100
      AvailabilityZone:
        Fn::GetAtt:
          - 'WindowsServer2022Instance'
          - 'AvailabilityZone'
      VolumeType: 'gp3'
  #Attach EC2 Volume
  VolumeAttachment:
    Type: 'AWS::EC2::VolumeAttachment'
    Properties:
      InstanceId:
        Ref: 'WindowsServer2022Instance'
      VolumeId:
        Ref: 'AdditionalVolume'
      Device: '/dev/sdf'
windows amazon-web-services powershell amazon-ec2 aws-cloudformation
1个回答
0
投票

对于遇到此问题的任何人,文档中有一个 PowerShell 片段,展示了如何更新 EC2Launch V2 配置。不幸的是,该片段有错误。

来源:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2launch-v2-settings.html#ec2launch-v2-get-agent-config

这是一个经过修改且有效的版本,用于初始化实例存储卷。

$config = &"$env:ProgramFiles/Amazon/EC2Launch/EC2Launch.exe" get-agent-config --format json | ConvertFrom-Json
$initializeVolumeTask =@"
{
   "task": "initializeVolume",
   "inputs": {
      "initialize": "all"
   }
}
"@
$config.config | %{if($_.stage -eq 'postReady'){$_.tasks += (ConvertFrom-Json -InputObject $initializeVolumeTask)}}
$config | ConvertTo-Json -Depth 6 | Out-File -encoding UTF8 $env:ProgramData/Amazon/EC2Launch/config/agent-config.yml
&"$env:ProgramFiles/Amazon/EC2Launch/EC2Launch.exe" get-agent-config --format json
© www.soinside.com 2019 - 2024. All rights reserved.