2017-10-17 15 views
0

LinuxサーバーでMOTD(今日のメッセージ)を作成するために、私はAncersの役割を果たそうとしています。可能性:パイプを含む複数行変数

このファイルにASCIIアートを追加したいのですが、ASCIIアートは私のテンプレートで使用される変数に定義されています。

私のASCIIアート変数は複数行で、複数の特殊文字を含む必要があります。

私は試してみてください。

motd_asciiart: | 
    _____ _    _      __ _    
    /___| |   | |     /_| |    
    \ `--.| |_ __ _ ___| | _______ _____ _ __| |_| | _____  __ 
    `--. \ __/ _` |/ __| |//_ \ \// _ \ '__| _| |/ _ \ \ /\// 
    /\__//|| (_| | (__| < (_) \ V/__/ | | | | | (_) \ V V/
    \____/ \__\__,_|\___|_|\_\___/ \_/ \___|_| |_| |_|\___/ \_/\_/ 

しかし、私はこのエラーを持っている:

ERROR! Syntax Error while loading YAML.

The error appears to have been in '/Users/ydavid/Devops/ansible2/roles/umanit.motd/defaults/main.yml': line 3, column 9, but may be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

 _____ _    _      __ _ 
    /___| |   | |     /_| | 
    ^here 

は、私が最初と最後の行に「追加しようと、私は別のエラーを持っています

ERROR! Syntax Error while loading YAML.

The error appears to have been in '/Users/ydavid/Devops/ansible2/roles/umanit.motd/defaults/main.yml': line 7, column 74, but may be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

/\__//|| (_| | (__| < (_) \ V/__/ | | | | | (_) \ V V/
    \____/ \__\__,_|\___|_|\_\___/ \_/ \___|_| |_| |_|\___/ \_/\_/ " 
                    ^here 

あなたは私を助けることはできますか?

ブロック全体をエスケープできますか?

同じことをするこの役割(https://github.com/picotrading/ansible-motd)が見つかりましたが、これを避けることができれば、ASCIIアートが一列になっています。

答えて

1

この理由はインデントです.2番目の行は、参照先である最初の行より1つ先にスペースを開始します。

私はきれいな解決策は、別のファイルにアートを保存し、file_contents lookup pluginを使用してコンテンツを読むことであろうと思います。

vars: 
    motd_asciiart: "{{lookup('file', './art.txt')}}" 
+0

提案をありがとう。 このソリューションでは、ホスト用に別のファイルを使用するにはどうすればよいですか? 一般的なファイルが1つ必要ですが、特定のホストには例外がいくつかあります – voidAndAny

+0

私はこれが元の質問にどう関係するかはわかりません。 host_vars、group_varsを使用するか、ホスト名に基づいてファイルを含めることができます。 – techraf

関連する問題