【问题标题】:How to collect a grep and use it in a aws configset如何收集 grep 并在 aws configset 中使用它
【发布时间】:2017-10-21 12:48:07
【问题描述】:

在我的 aws Cloud Formation cfn configset 中,我有一个命令将环境密钥设置为 apache 所属用户组的名称,因为它可能是 apache 或 www-data,具体取决于发行版。

类似这样的:

Metadata:
  AWS::CloudFormation::Init:
    configSets:
      joomla:
        - "set_permissions"
        - "and_some_more..."

    configure_cfn:
      files:
        /etc/cfn/hooks.d/cfn-auto-reloader.conf:
          content: !Sub |
            [cfn-auto-reloader-hook]
            triggers=post.update
            path=Resources.EC2.Metadata.AWS::CloudFormation::Init
            action=/opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource EC2 --configsets joomla --region ${AWS::Region}
          mode: "000400"
          owner: root
          group: root

.....

    set_permissions:  
      commands:
        01_01_get_WebServerGroup:
          env:
          #webserver group might be apache or www-data depending on the distro
            WebServerGp: 
              command: "ps -ef | egrep '(httpd|apache2|apache)' | grep -v `whoami` | grep -v root | head -n1 | awk '{print $1}'"

但是,当我启动此堆栈时,configsets 进程在此时停止,并且我在 cfn_init.log 中收到如下所示的错误:

文件 “/usr/lib/python2.7/dist-packages/cfnbootstrap/command_tool.py”,行 80,在申请 raise ToolError(u"%s 没有指定 'command' 属性,这是必需的"% name) ToolError: 01_01_get_WebServerGroup 确实 不指定'command'属性,这是必需的

这是在 configset 命令中捕获和使用 grep 结果的首选方法吗?有没有更好的办法?如何解决 cfn_init.log 中抛出的错误?

好的,我想我可以创建参数和映射元素以在启动时捕获发行版类型,然后相应地设置网络服务器组,但我真的想了解如何设置 env: 来自 cli 的响应的键。

【问题讨论】:

    标签: amazon-web-services grep yaml amazon-cloudformation


    【解决方案1】:

    你代码的问题是WebServerGp这一行。

    command 行必须与env 在同一级别,在commands 名称下,在您的情况下为01_01_get_WebServerGroup。所以,它必须是这样的:

    commands:
        01_01_get_WebServerGroup:
          env: ..
          command: ..
    

    如果你想使用 grep 的结果,你可以把它们放在变量上,以后再使用。 您可以使用\n 在该command 行下指定多个命令来执行该命令。

    请检查下面的代码。

    command: "result=(ps ef | grep ...)\n echo $result\n ..."
    

    如果你有很长的命令,你可以使用Fn::Join作为command的值。

    【讨论】:

      猜你喜欢
      • 2014-04-02
      • 1970-01-01
      • 2020-08-25
      • 1970-01-01
      • 1970-01-01
      • 2016-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多