2017-10-13 11 views
0

私のaws Cloud Formation cfn configsetには、apacheまたはwww-dataのように、Apacheに属するユーザーグループの名前に環境キーを設定するコマンドがありますディストリビューションに応じて。このようなgrepを収集してaws configsetで使用する方法

何か:私はこのスタックを起動したときに

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:

File "/usr/lib/python2.7/dist-packages/cfnbootstrap/command_tool.py", line 80, in apply raise ToolError(u"%s does not specify the 'command' attribute, which is required" % name) ToolError: 01_01_get_WebServerGroup does not specify the 'command' attribute, which is required

が、これはAでgrepの結果をキャッチし、使用するために好ましい方法でありますconfigsetコマンド?より良い方法がありますか? cfn_init.logにスローされたエラーを解決するにはどうすればよいですか?

OK、起動時にディストリビューションをキャプチャし、それに応じてWebサーバーグループを設定するためのパラメータとマッピング要素を作成できますが、実際にはcliからの応答にenv:キーを設定する方法を理解しようとしています。

答えて

1

あなたのコードの問題はこの行ですWebServerGp

ラインcommandはあなたのケースでは、commands名の下に、envの同じレベルにあることが必要である01_01_get_WebServerGroupです。だから、それはこのようにする必要があり:

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

あなたはgrepの結果を使用する場合は、変数の上に置くと、後でそれを使用することができます。 command行の下に複数のコマンドを指定するには、コマンドを実行するために\nを使用します。

以下のコードを確認してください。あなたは本当に長いコマンドを使用している場合

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

は、あなたがcommandの値になるようにFn::Joinを使用することができます。

関連する問題