web-dev-qa-db-ja.com

Puppetで/ etc / hostsファイルにテキストを追加する最良の方法は何ですか?

また、hosts-fileを手動で編集できるように、少なくとも最初の10行は保持したいと思います。

#Public IP's - eth0
192.168.1.103   front-01
192.168.1.106   front-02

#Private IP's - eth1
192.169.40.201  priv0-0
192.169.40.202  priv0-1
192.169.40.207  priv1-0
192.169.40.208  priv1-1

#Virtual IP's - eth0:1
192.169.50.202  vip-01
192.169.50.205  vip-02

これらのホストエントリを/ etc/hostsの下部に配置するのが最適です。これを行う最良の方法は何ですか? 8つのホスト行マニフェストを書くよりも良い方法はありますか?

# create a simple hostname and ip Host entry
Host { 'front-01':
    ip => '192.168.1.103',
}

/ etc/hostsに異なるIPの/ hostnamesを必要とするサーバーグループがある場合があります。テンプレートを使用しますが、テンプレートで上書きされるため、/ etc/hostsを手動で変更することはできなくなります。

8
ujjain

正直なところ、Hostリソースを使用するのが最も簡単な方法です。 puppetで制御するホストを定義するだけで、ファイルの残りの部分を手動で編集できます(Puppetがそのことを通知しないヘッダーにドロップした場合でも)。

augeasモジュールは、Hostリソースの機能を複製するだけなので、hostsファイルには過剰です(「このファイルを編集しない」ヘッダーには追加されません)。

本当にもっと複雑なものが必要な場合、またはファイル内の行の配置を細かく制御したい場合は、フラグメントの1つのローカルソースで concat module を使用します。 concatのドキュメントに、(motdファイルを使用した)そのようなことの例があります。

ただし、実際には、Puppetから定義するホストのHostリソースを使用し、ローカルホストファイルを編集して、他の必要なものを作成します。

また、Puppetでホスト定義をかなりコンパクトに記述できることにも注意してください。

Host {
  # Public IPs - eth0
  'front-01': ip => '192.168.1.103';
  'front-02': ip => '192.168.1.106';

  # Private IPs - eth1
  'priv0-0': ip => '192.169.40.201';
  'priv0-1': ip => '192.169.40.202';
  'priv1-0': ip => '192.169.40.207';
  'priv1-1': ip => '192.169.40.208';

  # Virtual IPs - eth0:1
  'vip-01': ip => '192.169.50.202';
  'vip-02': ip => '192.169.50.205';
}
14
asciiphil

パペットに組み込まれているaugeaus機能を使用します。あなたは何かのようなものが欲しい

augeas {
  context => "files/etc/hosts"
  changes => [
    "set <ip address> <name>",
  ],
}
1
Cian

Hostsリソースタイプに加えて、/ etc/hostsファイルにaugeasを使用することを選択できる1つのケースは、IPアドレス行が重複している場合です。

hostsリソースタイプは、同じIPアドレスの回線を非常に喜んで許可します。 (それをググってください;それがそれが良い考えであるかもしれない非常に曖昧な場合です。)

ただし、/ etc/hostsファイルで重複するIPアドレスが必要ない場合は、augeasが役立ちます。ホストはそのための助けにはなりません。

0
spike