RUN echo '[local]\nlocalhost\n' > /etc/ansible/hosts
この行は私のdockerfileにあります。単にansible / hostsファイルにlocalhostを追加することを意味していると思いますか?
[local]\nlocalhost\nが何であるかを詳しく説明できる人はいますか?
答え1
この行はDockerにシェルコマンドを実行するように指示します。echo '[local]\nlocalhost\n' > /etc/ansible/hosts
このシェルコマンドは、ファイルに次のテキストブロックを印刷します/etc/ansible/hosts
。
[local]
localhost
\n
これは、新しいテキスト行の先頭を表す「改行」文字であるために行われます。これはecho
、次のように指示されたことを意味します。テキストを印刷してから新しい行を開始し、[local]
印刷してlocalhost
最後に別の新しい行を開始します。出力は>
特殊文字を使用してリダイレクトされ、リダイレクト先はで指定されます/etc/ansible/hosts
。ファイルに.txt
拡張子がない可能性がありますが、プレーンテキストファイルとして扱うことができます。
このファイルは、Ansibleが他のホスト(この場合はlocalhost)との通信に使用されるために指定できます。在庫機能。
はい。基本的に正しいです。これにより、Ansibleホストファイルにlocalhostが追加されます。このコマンドは/etc/ansible/hosts
。
答え2
問題のある行:
RUN echo '[local]\nlocalhost\n' > /etc/ansible/hosts
コマンドを実行すると、コマンド出力がecho
シェルリダイレクト文字を使用してファイルに転送されるようです。>
echo
/etc/ansible/hosts
ここでは2つの点に注意する必要があります。
echo
コマンドでは、\n
シーケンスは改行(Enterキー)を表します。したがって、[local]
およびはlocalhost
実際に連続した行でファイルにエコーされます。これは、セクションで/etc/ansible/hosts
説明されている正しい形式に対応します。ここ。 (localhost
ここでは、IPアドレスの代わりにホスト名が使用される理由を説明するのに十分なAnsibleについて十分に知りません127.0.0.1
。)シェルリダイレクト文字
>
は書く/etc/ansible/hosts
(つまり、消去して交換します)追加この新しいセクションをファイルの末尾に追加します。 (ファイルをリダイレクトして追加するには、を使用できます>>
。)