2017-11-08 16 views
1

イムラーニングパペットと現在はtomcatをインストールしようとしています。 execブロックのsedを使用してstartup.shのCatalinaホームを置き換えようとしている間、Imは以下のエラーに直面しています。 startup.shパペットsedと置き換え

export CATALINA_HOME="/home/john" 
export JAVA_HOME="/usr" 
...... 
..... 

の予想される出力

export CATALINA_HOME="/home/john/apache-tomcat-6.0.44" 
export JAVA_HOME="/usr/java/default" 

マイコードスニペット

....... 
    exec { 'modify_file': 
    command => "sed -i 's|export CATALINA_HOME="/home/john"|export CATALINA_HOME="/home/john/apache-tomcat-6.0.44"|g' /home/john/apache-tomcat-6.0.44/bin/startup.sh" 
    path => '/bin', 
} 

Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Syntax error at '|export CATALINA_HOME=' at /etc/puppetlabs/code/environments/production/modules/tomcat/manifests/init.pp:26:58 on node agent

現在の値がすべてのヘルプは本当に事前のおかげで、感謝しています。

また、エグゼクティブブロックのパス属性に関するパペットドキュメントを見ていましたが、なぜそれが使用されているのか、マニフェストファイルのパス値はどういうものなのかよくわかりません。

答えて

2

sedあなたのsedの式は、引用符の不一致のために壊れている可能性があります。

あなたは使用してsedコマンドを簡素化できます。

sed -i '/CATALINA_HOME=/s,/home/john,&/apache-tomcat-6.0.44,;/JAVA_HOME=/s,/usr,&/java/default,' /home/john/apache-tomcat-6.0.44/bin/startup.sh 

を表現はCATALINA_HOMEJAVA_HOMEの両方のための2つのコマンドが含まれています。両方のコマンドは、同じ構文を使用して、必要な文字列を変数宣言に追加します。

/<regex>/sは、<regex>の行に基づいて選挙を行います。

,はコマンドセパレータです。検索するパターンがディレクトリパスでない限り、通常/を使用します。

&は、パターンスペース、すなわち一致パターンを印刷しています。

+0

あなたの入力をありがとう..しかし、まだターゲット・ファイルが変更されません は以下のブロックである 'コマンド=>「のsed「/ CATALINA_HOME =/S、/ホーム/ジョン、/ apache-tomcat-6.0.44、;/JAVA_HOME =/s、/ usr、/ java/default、 '/home/john/apache-tomcat-6.0.44/bin/startup.sh "、 パス=> '/ bin'、 ' 私は何か愚かな行方不明ですか? – Goku

+0

ファイル内で 'sed'コマンドの' -i'オプションを忘れてしまった場合は、再試行してエラーメッセージがあればそれを入力してください。 – oliv

+0

本当にありがとうございました。可能であれば、/ sと、&partを説明することができます。ちょうどそれが何であるかのように。再びありがとうございます。 – Goku

2

execコールを実行するのではなく、すでにpuppetlabs-stdlibモジュールのfile_lineリソースタイプを使用していましたか?

これはどのように動作するか見ることができますhere

Matchパラメータは古い値を受け取り、lineパラメータの値に置き換えられます。たとえば:

file_line { 'catalina': 
    ensure => present, 
    path => '/etc/catalina/startup.sh', 
    line => 'export CATALINA_HOME=\"/home/john/apache-tomcat-6.0.44\"', 
    match => 'export CATALINA_HOME=\"/home/john\"', 
} 
+0

おかげさまであなたの事例がありがとうございました。私はそれを得ました、私はうまくいっていなかったし、エグゼクティブに進みました。 – Goku

+0

あなたは問題を送信できますか? – Mdmansur

+0

あなたの提案を使用して問題を修正しました。ありがとうございます! – Goku

関連する問題