Bagaimana cara menyalin file ke semua klien menggunakan boneka?

8

Bagaimana cara menyalin file ke semua klien menggunakan boneka? Saya telah menyiapkan server boneka dan klien dan saya telah menguji koneksi yang berfungsi dengan baik. Saya bukan ahli boneka, saya hanya pemula, dan saya hanya ingin tahu cara menyalin file ke semua klien dari server boneka? Saya juga ingin tahu cara menghapus file?

karthick87
sumber
1
Dari Jorge dalam obrolan: docs.puppetlabs.com/guides/file_serving.html Menyalin tautan sebagai jawaban.
Rinzwind

Jawaban:

8

Server File Boneka

Panduan ini mencakup penggunaan kemampuan penyajian file Wayang.


Layanan master wayang termasuk server file untuk mentransfer file statis. Jika deklarasi sumber daya file berisi boneka: URI dalam atribut sumbernya, node akan mengambil file itu dari server file master:

# salin file jarak jauh ke / etc / sudoers
file {"/ etc / sudoers":
    mode => 440,
    pemilik => root,
    grup => root,
    source => "boneka: /// modules / module_name / sudoers"
}

Semua URI server file boneka disusun sebagai berikut:

puppet://{server hostname (optional)}/{mount point}/{remainder of path}

Jika nama host server dihilangkan (yaitu puppet:///{mount point}/{path}; catat triple-slash), URI akan memutuskan ke server mana pun yang dianggap sebagai master node pengevaluasi. Karena ini membuat kode manifes lebih portabel dan dapat digunakan kembali, nama host harus dihilangkan jika memungkinkan.

Sisa dari wayang: URI memetakan ke sistem file server dengan salah satu dari dua cara, tergantung pada apakah file disediakan oleh a moduleatau diekspos melalui a custom mount point.

Melayani File Modul

Karena sebagian besar penyajian file harus dilakukan melalui modul, server file Wayang menyediakan titik pemasangan khusus dan semi-magis yang disebut modul, yang tersedia secara default. Jika titik mount URI adalah modul, Wayang akan:

  • Menafsirkan segmen jalan berikutnya sebagai nama modul ...
  • ... cari modul itu di modulepath server (seperti yang dijelaskan di bawah ini di bawah "Modul Pencarian" ...
  • ... dan selesaikan sisa jalur yang dimulai pada file / direktori modul itu.
  • Artinya, jika modul bernama test_module diinstal di /etc/puppet/modulesdirektori server pusat , boneka berikut: URI ...

    puppet:///modules/test_module/testfile.txt
    

    ... akan menyelesaikan ke jalur absolut berikut:

    /etc/puppet/modules/test_module/files/testfile.txt
    

    Jika test_modulediinstal /usr/share/puppet/modules, URI yang sama akan memutuskan untuk:

    /usr/share/puppet/modules/test_module/files/testfile.txt
    

Meskipun tidak ada konfigurasi tambahan yang diperlukan untuk menggunakan titik pemasangan modul, beberapa kontrol akses dapat ditentukan dalam konfigurasi server file dengan menambahkan [modules]blok konfigurasi; lihat Keamanan.

Melayani File Dari Poin Mount Kustom

Wayang juga dapat menyajikan file dari titik pemasangan sembarang yang ditentukan dalam konfigurasi server file server (lihat di bawah). Saat menyajikan file dari titik mount kustom, Wayang tidak melakukan abstraksi URI tambahan yang digunakan dalam modul mount, dan akan menyelesaikan jalur mengikuti nama mount sebagai struktur direktori sederhana.

Konfigurasi Server File

Lokasi default untuk data konfigurasi server file adalah /etc/puppet/fileserver.conf; ini dapat diubah dengan --fsconfigmengibarkan bendera kepada penguasa boneka.

Format fileserver.conffile hampir persis seperti itu rsync, dan kira-kira menyerupai file INI:

[mount_point]
    path /path/to/files
    allow *.domain.com
    deny *.wireless.domain.com

Opsi berikut saat ini dapat ditentukan untuk titik pemasangan yang diberikan:

  • Path ke lokasi mount pada disk
  • Sejumlah arahan yang diizinkan
  • Sejumlah arahan penolakan

path adalah satu-satunya opsi yang diperlukan, tetapi karena konfigurasi keamanan default adalah untuk menolak semua akses, titik mount tanpa arahan yang diizinkan tidak akan tersedia untuk node apa pun.

Jalan dapat berisi salah satu atau semua %h, %H, dan %d, yang secara dinamis diganti dengan hostname klien, nama domainnya memenuhi syarat dan nama domainnya, masing-masing. Semua diambil dari sertifikat SSL klien (jadi berhati-hatilah jika Anda memiliki ketidakcocokan hostname / certname). Ini berguna dalam membuat modul di mana file untuk setiap klien disimpan sepenuhnya secara terpisah, misalnya untuk kunci host ssh pribadi. Misalnya dengan konfigurasi

[private]
   path /data/private/%h
   allow *

permintaan file /private/file.txtdari client client1.example.com akan mencari file /data/private/client1/file.txt, sementara permintaan yang sama dari client2.example.comakan mencoba untuk mengambil file / data / privasi / client2 / file.txt di server file.

Saat ini jalur tidak dapat berisi garis miring atau kesalahan akan terjadi. Juga berhati-hatilah bahwa di dalam puppet.confkamu tidak menentukan lokasi direktori yang memiliki garis miring.

Keamanan

Mengamankan server file Wayang terdiri dari mengizinkan dan menolak akses (pada berbagai tingkat spesifisitas) per titik mount. Kelompok node dapat diidentifikasi untuk izin atau penolakan dengan tiga cara: berdasarkan alamat IP, nama, atau dengan wildcard global tunggal (*). Custom mount points points untuk menolak semua akses.

Selain titik pemasangan khusus, ada dua titik pemasangan khusus yang dapat dikelola dengan fileserver.conf: modulesdan plugins. Tak satu pun dari titik pemasangan ini harus memiliki opsi jalur yang ditentukan. Perilaku modul mount point dijelaskan di atas dalam Melayani File Dari Custom Mount Points. Mount plugins bukan mount point yang sebenarnya, tetapi lebih merupakan hook untuk memungkinkan fileserver.conf menentukan node mana yang diizinkan untuk menyinkronkan plugins dari Puppet Master. Kedua titik pemasangan ini ada secara default, dan keduanya default untuk memungkinkan semua akses; jika ada yang mengizinkan atau menolak arahan yang ditetapkan untuk salah satu mount khusus ini, pengaturan keamanannya akan berperilaku seperti yang dari mount normal (yaitu, itu akan default untuk menolak semua akses). Perhatikan bahwa ini adalah satu-satunya titik pemasangan yang ditolak * tidak berlebihan.

Jika node tidak terhubung secara langsung ke server file Puppet, mis. Menggunakan reverse proxy dan Mongrel (lihat Menggunakan Mongrel), maka server file akan melihat semua koneksi berasal dari alamat IP server proxy daripada koneksi dari node Puppet Agent . Dalam hal ini, yang terbaik adalah membatasi akses berdasarkan nama host. Selain itu, mesin yang bertindak sebagai proxy terbalik (biasanya 127.0.0.0/8) perlu diizinkan untuk mengakses titik pemasangan yang berlaku.

Prioritas

Penyangkalan yang lebih spesifik dan izinkan pernyataan didahulukan dari pada pernyataan yang kurang spesifik; yaitu, pernyataan allow untuk node.domain.com akan membiarkannya terkoneksi meskipun pernyataan menolak untuk * .domain.com. Pada tingkat spesifisitas tertentu, tolak pernyataan yang diutamakan daripada pernyataan yang diijinkan.

Perilaku yang tidak dapat diprediksi dapat terjadi karena mencampur arahan alamat IP dengan arahan hostname dan nama domain, jadi cobalah untuk menghindari melakukan itu. (Saat ini, jika alamat IP node.domain.com adalah 192.168.1.80 dan fileserver.conf berisi allow 192.168.1.80 dan tolak node.domain.com, arahan izin berbasis IP akan benar-benar diutamakan. Perilaku ini dapat diubah dalam masa depan dan tidak harus diandalkan.)

Nama Host

Nama host dapat ditentukan menggunakan nama host lengkap, atau menentukan seluruh domain menggunakan * wildcard:

[export]
    path /export
    allow host.domain1.com
    allow *.domain2.com
    deny badhost.domain2.com

Alamat IP

Alamat IP dapat ditentukan dengan cara yang sama dengan nama host, baik menggunakan alamat IP lengkap atau alamat wildcard. Anda juga dapat menggunakan notasi gaya CIDR:

[export]
    path /export
    allow 127.0.0.1
    allow 192.168.0.*
    allow 192.168.1.0/24

Global memungkinkan

Menentukan wildcard tunggal akan membiarkan setiap simpul mengakses titik pemasangan:

[export]
    path /export
    allow *

Perhatikan bahwa perilaku default untuk titik pemasangan khusus sama dengan menolak *.

Rinzwind
sumber
Hai @ Retzwind akan menyenangkan jika Anda menambahkan jawaban yang tepat apa yang saya inginkan.
karthick87
baik tautan dari Jorge / jawaban ini adalah awal untuk menyelesaikan ini dan menjawab pertanyaan "Bagaimana cara menyalin file ke semua klien menggunakan boneka?" termasuk keamanan yang harus Anda pertimbangkan. Yang kurang adalah metode untuk menghapus file. Saya akan memasukkan bahwa (bit terakhir dari jawaban ini adalah tentang melakukannya dengan aman mungkin lebih baik untuk menghapusnya mungkin).
Rinzwind
Apakah saya ingin mengedit file manifes? Dan masukkan baris di atas?
karthick87