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


8

また、少なくとも最初の10行は手動でhostsファイルを編集する機能を保持したいと思います。

#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を手動で変更できなくなります。

回答:


14

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

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

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

しかし、実際には、hostPuppetから定義したいホストのリソースを使用し、必要な他のもののためにローカルホストファイルを編集します。

また、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';
}

この答えは私のものよりかなり良いです:-)
Cian

1

人形に組み込まれたaugeaus機能を使用します。あなたは次のようなものが欲しい

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

0

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

hostsリソースタイプは、同じIPアドレスの回線を非常に喜んで許可します。(それをグーグルで。それが良い考えかもしれない非常にあいまいなケースであるところ。)

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


-1

コードなしの単なるメソッド:

テンプレートや/etc/hosts.puppet、明確な開始行と終了行でファイルを更新するものを使用します

###PUPPETSTART###
## Users: Lines between START and END will be deleted, put your own entries below 

192.168.0.1 host1
###PUPPETEND###

そして、このセグメントを切り取っ/etc/hostsてのコンテンツに置き換える依存関係としてシェルスクリプトを持っています/etc/hosts.puppet

これは、ユーザーがファイルを編集し、パペットの実行によってファイルが変更されるときに競合状態になることに注意してください。または、ファイルを編集し、1つのファイルが変更されるたびに両方のファイル/etc/hosts.userから構成/etc/hostsするようにユーザーに指示します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.