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 module
atau 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/modules
direktori 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_module
diinstal /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 --fsconfig
mengibarkan bendera kepada penguasa boneka.
Format fileserver.conf
file 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.txt
dari client client1.example.com akan mencari file /data/private/client1/file.txt
, sementara permintaan yang sama dari client2.example.com
akan 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.conf
kamu 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
: modules
dan 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 *.