【问题标题】:AWSCloudFormation - cfn-init failed to run command `ruby`AWSCloudFormation - cfn-init 无法运行命令“ruby”
【发布时间】:2015-09-02 22:10:35
【问题描述】:

我有一个简单的 cloudformation 脚本,我试图在启动时将 ruby​​ 脚本作为后台进程运行。

脚本的相关部分是

"AWS::CloudFormation::Init" : {
                    "config" : {
                        "sources" : {
                            "/etc/scripts" : "http://bootstrap-artifacts.s3.amazonaws.com/scripts.zip"
                        },
                        "commands" : {
                          "1" : {
                            "command" : "cd /etc/scripts/agent"
                          },
                          "2-start" : {
                            "command" : "nohup ruby agent.rb &"
                          }
                        }
                    }
                }

只是为了确认 zip 文件已下载并且脚本存在于正确的目录中。我的 AMI 还为所有用户安装了 ruby 2.0.0

我不断在 \var\log\cfn-init.log 文件中获取nohup: failed to run command 'ruby': No such file or directory

感谢您的帮助!

【问题讨论】:

    标签: ruby bootstrapping amazon-cloudformation


    【解决方案1】:

    AWS::CloudFormation::Init 在堆栈创建或更新操作期间默认以 root 用户身份运行。可能包含 ruby​​ 2.0 的 bin 目录(通常是 AMI 由亚马逊提供的情况)不是在 PATH 中获取的,或者使用 ruby​​ 的完整位置,例如 /usr/local/bin/ruby。

    【讨论】:

    • 我稍后手动尝试登录实例并切换到 root 用户。脚本运行良好,这表明还有其他问题..
    【解决方案2】:

    问题是孤立地执行命令的结果。您的第一个命令正在更改目录,但这与您的第二个命令无关。解决方案是对第二个命令使用“cwd”键。例如:

    "AWS::CloudFormation::Init" : {
                        "config" : {
                            "sources" : {
                                "/etc/scripts" : "http://bootstrap-artifacts.s3.amazonaws.com/scripts.zip"
                            },
                            "commands" : {
                              "2-start" : {
                                "command" : "nohup ruby agent.rb &",
                                "cwd" : "/etc/scripts/agent"
                              }
                            }
                        }
                    }
    

    更多信息:http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-init.html#aws-resource-init-commands

    【讨论】:

    • 这救了我的命,我的头永远撞在井上!谢谢你。不过,关于 cfn-init 中的 nohup 的一件事:“命令成功”消息似乎从未出现在 cfg-init.log 中 - 只是停在“运行/无测试..”处。该命令似乎正在运行(我的应用程序正在运行)......但我想知道 cfg-init 是否已完成并且永远挂起。你有什么想法吗?
    • 你有没有发现 cfn-init 中 nohup 的问题?我遇到了类似的挂起问题,下一个命令永远不会运行
    猜你喜欢
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多