Apa cara terbaik di Wayang untuk menambahkan sepotong teks ke file / etc / hosts?

8

Saya juga ingin menjaga kemampuan untuk mengedit file host secara manual, setidaknya 10 baris pertama.

#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

Memiliki entri host ini di bagian bawah / etc / hosts, akan sempurna. Apa cara terbaik untuk melakukan ini? Apakah ada cara yang lebih baik daripada menulis 8 baris manifes host?

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

Mungkin ada grup server yang membutuhkan IP / nama host yang berbeda di / etc / hosts mereka. Saya akan menggunakan template, tetapi itu berarti orang tidak bisa lagi membuat perubahan manual di / etc / hosts mereka karena mereka akan ditimpa oleh template.

ujjain
sumber

Jawaban:

14

Jujur, menggunakan hostsumber daya adalah cara paling sederhana untuk melakukan ini. Anda hanya perlu mendefinisikan host yang ingin dikontrol oleh boneka, dan Anda masih dapat mengedit sisa file dengan tangan (walaupun Puppet menjatuhkan header yang memberitahu Anda untuk tidak melakukannya).

The augeasmodul berlebihan untuk file host, karena hanya duplikat fungsionalitas dari hostsumber daya (meskipun tidak menambahkan dalam "tidak mengedit file ini" header).

Jika Anda benar-benar menginginkan sesuatu yang lebih rumit atau Anda ingin mengontrol penempatan baris dalam file, gunakan modul concat dengan sumber lokal untuk salah satu fragmen. Ada contoh untuk hal semacam itu (menggunakan file motd) dalam concatdokumentasi.

Tapi sungguh, cukup gunakan hostsumber daya untuk host yang ingin Anda tentukan dari Puppet dan edit file host lokal untuk hal lain yang Anda butuhkan.

Perhatikan juga bahwa Anda dapat menulis definisi host dengan cukup ringkas di 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';
}
asciiphil
sumber
Jawaban ini sedikit lebih baik daripada saya :-)
Cian
1

Gunakan fungsi augeaus yang dibangun menjadi boneka. Anda menginginkan sesuatu seperti

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

Satu kasus di mana Anda dapat memilih untuk menggunakan augeas untuk file / etc / hosts, selain tipe sumber daya hosts - adalah untuk baris alamat IP duplikat.

tipe sumber host dengan sangat senang memungkinkan baris dengan alamat IP yang sama. (Google itu; di mana kasus yang sangat tidak jelas ketika itu mungkin ide yang bagus.)

Tetapi jika Anda tidak ingin duplikat alamat IP dalam file / etc / hosts Anda - maka augeas dapat membantu Anda. Tuan rumah tidak membantu untuk itu.

paku
sumber
-1

Hanya metode, tanpa kode:

Gunakan templating atau apa pun yang memperbarui file /etc/hosts.puppetdengan garis awal dan akhir yang jelas

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

192.168.0.1 host1
###PUPPETEND###

dan memiliki skrip shell sebagai ketergantungan yang memotong segmen ini /etc/hostsdan menggantinya dengan konten /etc/hosts.puppet.

Berhati-hatilah karena ini memiliki kondisi balapan ketika pengguna mengedit file dan boneka itu mengubahnya. Atau, instruksikan pengguna Anda untuk mengedit file /etc/hosts.userdan membangun /etc/hostskeluar dari kedua file setiap kali ada perubahan.

Sven
sumber