AWS :: EC2 :: Instance拒绝启动。以root身份安装错误的驱动器?

时间:2016-09-21 15:39:12

标签: amazon-ec2 amazon-cloudformation

我正在尝试配置一些需要多个EBS驱动器的EC2实例。我试图通过BlockDeviceMappings定义根卷和其他4个卷。

问题: 据我所知,下面的代码符合我在网上看到的任何例子。但是当Windows启动时,它会立即死亡。看一下EC2控制台(screenshot),我可以看到该实例连接了7个EBS卷(而不是5个),并且/ dev / xda设置为root而不是/dev/sda1.

  "Mappings" : {
    "AWSRegionToAMI" : {
      "us-east-1"      : { "Windows2012R2" : "ami-5d1b984a" },
      "us-west-1"      : { "Windows2012R2" : "ami-07713767" },
      "us-west-2"      : { "Windows2012R2" : "ami-241bd844" }
    },
    "VolumeSize" : {
      "DataDrive"      : { "Size" : "50" },
      "LogDrive"       : { "Size" : "50" },
      "TempDrive"      : { "Size" : "400" },
      "BackupDrive"    : { "Size" : "100" }
    },
    "stackmap" : {
      "sqlha" : {
        "Name": "MS SQL Server 2014 Always On",
        "chefjson" : "https://s3.amazonaws.com/[redacted]",
        "os" : "win",
        "bootstrapurl" : "https://s3.amazonaws.com/[redacted]"
      }
    }
  },

"WSFCNode1": {
  "Type": "AWS::EC2::Instance",
  "Properties": {
    "ImageId" : { "Fn::FindInMap" : [ "AWSRegionToAMI", { "Ref" : "AWS::Region" }, "Windows2012R2" ] },
    "InstanceType": { "Ref": "InstanceType" },
    "EbsOptimized": "true",
    "NetworkInterfaces": [
      {
        "DeleteOnTermination": "true",
        "DeviceIndex": 0,
        "SubnetId": { "Ref": "PrivateSubnet1ID" },
        "SecondaryPrivateIpAddressCount": 2,
        "GroupSet": [
            { "Ref": "WSFCSecurityGroup" },
            { "Ref": "WSFCClientSecurityGroup" }
        ]
      }
    ],
    "BlockDeviceMappings": [
      {
        "DeviceName": "/dev/sda1",
        "Ebs" : {"VolumeSize": "60"}
      },
      {
        "DeviceName": "/dev/xvdb",
        "Ebs" : {"VolumeSize": { "Fn::FindInMap" : [ "VolumeSize", "DataDrive", "Size" ]} }
      },
      {
        "DeviceName": "/dev/xvdc",
        "Ebs" : {"VolumeSize": { "Fn::FindInMap" : [ "VolumeSize", "LogDrive", "Size" ]} }
      },
      {
        "DeviceName": "/dev/xvdd",
        "Ebs" : {"VolumeSize": { "Fn::FindInMap" : [ "VolumeSize", "TempDrive", "Size" ]} }
      },
      {
        "DeviceName": "/dev/xvde",
        "Ebs" : {"VolumeSize": { "Fn::FindInMap" : [ "VolumeSize", "BackupDrive", "Size" ]} }
      }
    ],
    "KeyName": { "Ref": "KeyPairName" },
    "UserData"       : { "Fn::Base64" : { "Fn::Join" : ["", [
      "<powershell>\n",

      "# Disable UAC and allow scripts to run\n",
      "New-ItemProperty -Path HKLM:Software\\Microsoft\\Windows\\CurrentVersion\\policies\\system -Name EnableLUA -PropertyType DWord -Value 0 -Force\n",
      "Set-ExecutionPolicy Unrestricted -force\n",
      "c:\\windows\\System32\\WindowsPowershell\\v1.0\\powershell.exe -noninteractive -noprofile Set-ExecutionPolicy unrestricted -force\n",
      "c:\\windows\\syswow64\\windowspowershell\\v1.0\\powershell.exe -noninteractive -noprofile Set-ExecutionPolicy unrestricted -force\n",

      "#Change TimeZone\n",
      "tzutil /s ", {"Ref" : "Timezone"}, "\n",

      "#Run Bootstrap PS1\n",
      "$newname = '", { "Fn::Join" : ["", [{"Ref" : "Environment"}, {"Ref" : "Location"}, {"Ref" : "Stack"}, {"Ref" : "Role"} ]]},"'\n",
      "$region = '", {"Ref" : "VPCRegion"}, "'\n",
      "$role = '", {"Ref" : "Role"}, "'\n",
      "$chef_rb = '", { "Fn::FindInMap" : [ "stackmap", { "Ref" : "Role" }, "chefjson"]}, "'\n",
      "mkdir 'c:\\temp' -force\n",
      "(new-object System.Net.WebClient).DownloadFile( 'https://s3.amazonaws.com/[redacted]', 'c:\\temp\\bootstrap.ps1')\n",
      "powershell c:\\temp\\bootstrap.ps1 -newname $newname -region $region -role $role -chef_rb $chef_rb -logfile c:\\temp\\bootstrap.log -verbose true\n",

      "#Reboot if needed\n",
      "Start-Sleep -s 10\n",
      "Restart-Computer\n",
      "mkdir 'c:\\temp\\cf_reboot_cmd_ran' -force\n",
      "shutdown -r\n",
      "mkdir 'c:\\temp\\cf_shut_cmd_ran' -force\n",
      "Start-Sleep -s 10\n",
      "mkdir 'c:\\temp\\cf_ran_again' -force\n",

      "</powershell>"
      ] ] } 
    },
    "Tags": [
        { "Key": "Name", "Value": "SQL Node 1" }
    ]
  }
},

令人困惑的是,即使我删除了所有额外的驱动器,只是执行一个磁盘的块设备映射

    "BlockDeviceMappings": [
      {
        "DeviceName": "/dev/sda1",
        "Ebs" : {"VolumeSize": "60"}
      }
    ],

...我仍然以三个卷结束,而错误的一个(/ dev / xda)以root身份分配。 Screenshot

这是Windows的事吗?我的块设备映射需要看起来像以root身份正确安装(或者在这种情况下是C:)?

1 个答案:

答案 0 :(得分:0)

没关系。 Root问题出现在我选择的AMI中。一旦我选择了合适的Windows AMI,一切都运行良好。

对于遇到此问题的其他人,请仔细检查您的AMI选择。