また、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を手動で変更することはできなくなります。
正直なところ、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';
}
パペットに組み込まれているaugeaus機能を使用します。あなたは何かのようなものが欲しい
augeas {
context => "files/etc/hosts"
changes => [
"set <ip address> <name>",
],
}
Hostsリソースタイプに加えて、/ etc/hostsファイルにaugeasを使用することを選択できる1つのケースは、IPアドレス行が重複している場合です。
hostsリソースタイプは、同じIPアドレスの回線を非常に喜んで許可します。 (それをググってください;それがそれが良い考えであるかもしれない非常に曖昧な場合です。)
ただし、/ etc/hostsファイルで重複するIPアドレスが必要ない場合は、augeasが役立ちます。ホストはそのための助けにはなりません。