无法使用CloudFormation安装CodeDeploy-Agent.msi



我正在尝试将codedeploy-agent.msi部署到EC2实例(WIN 2012)。它在没有NAT gateway的私有子网后面,但是使用S3 endpoint,我测试了此powershell.exe -Command Read-S3Object -BucketName aws-codedeploy-us-west-2 -Key latest/codedeploy-agent.msi -File codedeploy-agent.msi正在工作。代理正在通过EC2实例下载的PowerShell。

但是,在下面的云填充脚本的情况下,实例将创建而没有安装代理。没有c: cfn文件夹和cfn-init.log文件。有什么问题??

"WorkerInstance": {
            "Type": "AWS::EC2::Instance",
            "Metadata": {
                "AWS::CloudFormation::Init": {
                    "config": {
                        "commands": {
                            "00-download-host-agent": {
                                "command": {
                                    "Fn::Join": [
                                        "",
                                        [
                                            "powershell.exe -Command "Read-S3Object ",
                                            "-BucketName aws-codedeploy-us-west-2 ",
                                            "-Key latest/codedeploy-agent.msi ",
                                            "-File codedeploy-agent.msi""
                                        ]
                                    ]
                                },
                                "cwd": "C:/cfn",
                                "waitAfterCompletion" : 0
                            },
                            "01-install-host-agent": {
                                "command": "C:\cfn\codedeploy-agent.msi /quiet /l C:\cfn\host-agent-install-log.txt",
                                "ignoreErrors": "true",
                                "waitAfterCompletion" : 0
                            },
                            "02-signal-ready": {
                                "command": {
                                    "Fn::Join": [
                                        "",
                                        [
                                            ""C:\Program Files\Amazon\cfn-bootstrap\cfn-signal"",
                                            " -e 0 "",
                                            """
                                        ]
                                    ]
                                }
                            }
                        },
                        "services": {
                            "windows": {
                                "codedeploy-agent": {
                                    "enabled": "true",
                                    "ensureRunning": "true",
                                    "commands": [
                                        "01-install-host-agent"
                                    ]
                                }
                            }
                        }
                    }
                }
            },
            "Properties": {
                "DisableApiTermination": "false",
                "InstanceInitiatedShutdownBehavior": "stop",
                "IamInstanceProfile": {
                            "Ref": "IAMRole"
                        },
                "ImageId": "ami-c55089bd",
                "InstanceType": "t2.medium",
                "KeyName": "mykey",
                "Monitoring": "true",
                "Tags": [{
                        "Key": "CodeDeployGroup",
                        "Value": {
                            "Fn::Join": ["-", ["app", {
                                        "Ref": "EnvType"
                                    }, {
                                        "Ref": "EnvVersion"
                                    }, "CodeDeployGroup"
                                ]]
                        }
                    }, {
                        "Key": "Name",
                        "Value": {
                            "Fn::Join": ["-", ["App", {
                                        "Ref": "EnvType"
                                    }, {
                                        "Ref": "EnvVersion"
                                    }, "Worker"
                                ]]
                        }
                    }
                ],
                        "NetworkInterfaces": [{
                        "DeleteOnTermination": "true",
                        "Description": "Primary network interface",
                        "DeviceIndex": 0,
                        "SubnetId": "subnet-70234568",
                        "GroupSet": ["sg-8affd7", "sg-fdffsfsd4"]
                    }
                ]
            }
        }

命令看起来不错。您可以尝试为PowerShell命令指定执行策略。此CFN模板对我有用:

        "WorkerInstance" : {
            "Type" : "AWS::EC2::Instance",
            "Metadata" : {
                "AWS::CloudFormation::Init" : {
                    "config" : {
                        "commands" : {
                            "00-download-host-agent" : {
                                "command" : {"Fn::Join" : [ "", [
                                    "powershell.exe -executionpolicy remotesigned -Command "Read-S3Object ",
                                    "-BucketName aws-codedeploy-us-west-2 ",
                                    "-Key latest/codedeploy-agent.msi ",
                                    "-File codedeploy-agent.msi""
                                ]]},
                                "cwd" : "C:/cfn",
                                "waitAfterCompletion" : 0
                            },
                            "01-install-host-agent" : {
                                "command" : "C:\cfn\codedeploy-agent.msi /quiet /l C:\cfn\host-agent-install-log.txt",
                                "ignoreErrors" : "true",
                                "waitAfterCompletion" : 0
                            },
                            "02-signal-ready" : {
                                "command" : {
                                    "Fn::Join" : [ "", [
                                        ""C:\Program Files\Amazon\cfn-bootstrap\cfn-signal"",
                                        " -e 0 "",
                                        { "Ref" : "WaitHandle" },
                                        """
                                    ]]
                                },
                                "waitAfterCompletion" : 0
                            }
                        },
                        "services" : {
                            "windows" : {
                                "codedeploy-agent" : {
                                    "enabled" : "true",
                                    "ensureRunning" : "true",
                                    "commands" : [ "01-install-host-agent" ]
                                }
                            }
                        }
                    }
                }
            },

我不确定,为什么它可以工作。我终于通过将其列为UserData脚本来工作。

"UserData": {
                    "Fn::Base64": {
                            "Fn::Join": ["", ["<script>n", "mkdir c:\cfnn", "mkdir c:\cfn\logn",
                                "powershell.exe Read-S3Object -BucketName aws-codedeploy-us-west-2/latest -Key codedeploy-agent.msi -File c:\cfn\codedeploy-agent.msin",
                                "c:\cfn\codedeploy-agent.msi /quiet /l c:\cfn\host-agent-install-log.txtn",
                                "c:\"Program Files"\Amazon\cfn-bootstrap\cfn-init.exe -s ", {
                                    "Ref": "AWS::StackName"
                                }, " --region ", {
                                    "Ref": "AWS::Region"
                                }, " > c:\cfn\log\cfn-call-log 2>&1", "</script>"]]                      
                    }
                },

这将安装代理以及启用并启动服务。

相关内容

  • 没有找到相关文章

最新更新