如何解决PowerShell未执行AWS CloudFormation
这是问题所在:我正在为AWS开发.yaml云形成脚本,目标是部署Windows 2016/2019 Server,并在PowerShell中执行一些命令,但是这些命令都无法执行。
这是完整的脚本:
AWSTemplateFormatVersion: 2010-09-09
Description: |
Plantilla para desplegar una instancia EC2 de Windows Server en eu-west-1.
Parameters:
vpcId:
Description: VPC sobre la que se desplegara el servidor
Type: AWS::EC2::VPC::Id
subnetId:
Description: Listado de subredes disponibles
Type: AWS::EC2::Subnet::Id
apserSecurityGroupId:
Description: Debe llamarse SG-Apser y existir en la VPC seleccionada
Type: AWS::EC2::SecurityGroup::Id
serverType:
Description: Imagen (AMI) del servidor
Type: String
Default: 'WindowsServer2019'
AllowedValues: [WindowsServer2016,WindowsServer2019]
instanceSize:
Description: Tamano de la instancia EC2
Type: String
Default: 't3.large'
AllowedValues: [t3.large,t3.xlarge,t3.2xlarge,m5.large,m5.xlarge,m5.2xlarge]
volumeSize:
Description: Tamano (GiB) del volumen de la instancia
Type: Number
Default: 30
MinValue: 30
MaxValue: 1000
adminPassword:
Description: Contrasena para la cuenta de Administrador
Type: String
NoEcho: true
MinLength: 8
MaxLength: 20
Metadata:
AWS::CloudFormation::Interface:
ParameterGroups:
-
Label:
default: "Configuracion de Red"
Parameters:
- vpcId
- subnetId
- apserSecurityGroupId
-
Label:
default: "Configuracion del servidor"
Parameters:
- serverType
- instanceSize
- volumeSize
- adminPassword
ParameterLabels:
vpcId:
default: "VPC para despliegue"
subnetId:
default: "Subnet para despliegue"
apserSecurityGroupId:
default: "SecurityGroup de Apser"
serverType:
default: "Tipo de servidor (S.O.)"
instanceSize:
default: "Tamano de la instancia"
volumeSize:
default: "Tamano del volumen"
adminPassword:
default: "Contrasena de Administrador"
Mappings:
serverAMI:
WindowsServer2016:
value: "ami-059cafee566b7248c"
WindowsServer2019:
value: "ami-01925800085c95bea"
Resources:
server:
Type: 'AWS::EC2::Instance'
Properties:
InstanceType: !Ref instanceSize
ImageId: !FindInMap
- serverAMI
- !Ref serverType
- value
SubnetId: !Ref subnetId
BlockDeviceMappings:
- DeviceName: /dev/sda1
Ebs:
VolumeSize: !Ref volumeSize
Encrypted: true
CreditSpecification:
CPUCredits: standard
DisableApiTermination: false # DEBE SER SIEMPRE TRUE!
SecurityGroupIds:
- !GetAtt securityGroup.GroupId
- !Ref apserSecurityGroupId
IamInstanceProfile: apser-multirole
UserData:
'Fn::Base64': !Sub |
<powershell>
Rename-Computer -NewName ${AWS::StackName}
net user administrador ${adminPassword}
netsh advfirewall set allprofiles state off
Set-TimeZone -Id "Romance Standard Time" -PassThru
Invoke-WebRequest "https://apserbucket.s3-eu-west-1.amazonaws.com/Recursos/ESET-Windows.zip" -OutFile "C:\Users\Administrador\Desktop\ESET.zip"
Expand-Archive -Path C:\Users\Administrador\Desktop\ESET.zip -DestinationPath C:\Users\Administrador\Desktop -Force
C:\Users\Administrador\Desktop\ESMCAgentInstaller.bat
Get-ChildItem C:\Users\Administrador\Desktop -File -Recurse | Foreach-Object {Remove-Item $_.FullName}
Restart-Computer -Force
</powershell>
Tags:
- Key: Name
Value: !Ref 'AWS::StackName'
- Key: Backup
Value: true
securityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupName: !Join
- ''
- - SG-
- !Ref 'AWS::StackName'
GroupDescription: 'Reglas especificas para este servidor'
VpcId:
Ref: vpcId
Tags:
- Key: Name
Value: !Join
- ''
- - SG-
- !Ref 'AWS::StackName'
elasticIP:
Type: 'AWS::EC2::EIP'
Properties:
InstanceId: !Ref server
Tags:
- Key: Name
Value: !Join
- ''
- - EIP-
- !Ref 'AWS::StackName'
有趣的是,此脚本不久前就可以完美运行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。