Pilar yang berbeda dibutuhkan
Pilar adalah penyimpanan data yang aman (aman) di dalam Salt. Oleh karena itu, pertama-tama, mereka digunakan untuk membatasi akses ke data penting (sertifikat, login, kata sandi).
Selain pilar default, Salt juga memiliki modul ext_pillar , yang menyediakan antarmuka untuk menghubungkan ke sumber data eksternal dan menghasilkan pilar dari sumber ini ke dalam satu kamus umum.
Misalnya, Anda dapat mengambil data dari mysql, postgres, redis, mongo, git , atau bahkan dari output skrip / perintah - cmd_json , cmd_yaml .
Daftar lengkap modul dipublikasikan di situs resmi SaltStack .
Jika Anda memiliki situasi non-standar dan modul yang tersedia tidak cocok untuk Anda, Anda dapat menulis sendiri dan memasukkannya ke / usr / lib / python3 / dist-packages / salt / pillar /, setelah itu Anda perlu memulai ulang wizard.
Contoh modul seperti itu:
#/etc/salt/master/conf.d/pillar.conf
ext_pillar:
- dummy: dummy
#/usr/lib/python3/dist-packages/salt/pillar/dummy.py
def ext_pillar(minion_id, pillar, *args, **kwargs):
dummy = {'dummy': 'what u want mann?'}
return dummy
Dari semua modul yang tersedia, pillarstack ternyata yang paling menarik dan relevan untuk tim kami. Sekarang mari beri tahu alasannya.
Pengantar PillarStack
Tumpukan atau pillarstack adalah "pilar YAML sederhana dan fleksibel yang dapat membaca pilar dari pilar," menurut dokumentasi resmi di situs .
Ini memungkinkan Anda untuk menggunakan pilar yang telah dibaca sebelumnya di dalam pilar. Artinya kita bisa menggunakan pilar dari konfigurasi sebelumnya. Dan itu sangat nyaman! Mari tunjukkan cara kerjanya:
, :
#/etc/salt/conf.d/pillarstack.conf
ext_pillar:
- stack:
- /srv/pillar/stack1.cfg
- /srv/pillar/stack2.cfg
- /srv/pillar/stack3.cfg
#/srv/pillar/stack1.cfg
# stack "" ,
# 2 yml ,
core.yml
common/*.yml
osarchs/{{ __grains__['osarch'] }}.yml
oscodenames/{{ __grains__['oscodename'] }}.yml
hosts/{{ minion_id }}/roles.yml
#/srv/pillar/stack2.cfg
# stack stack1.cfg
# , , roles
# stack yml
{% for role in stack.roles %}
roles/{{ role }}/*.yml
{% endfor %}
#/srv/pillar/stack3.cfg
# stack "" stack1.cfg stack2.cfg
#
creds/{{ stack.db.host }}/*.yml
Setiap konfigurasi dapat direpresentasikan sebagai lapisan. Di setiap lapisan tersebut, kita dapat menggunakan data dari lapisan sebelumnya.
Variabel berikut tersedia saat mengonfigurasi pilar:
- biji - bijian - konfigurasi penargetan berdasarkan biji-bijian
- opts - konfigurasi penargetan berdasarkan opsi dalam konfigurasi
- pilar - pilar yang terbentuk sebelum memproses saat ext_pillar: tumpukan
# , stack
# stack grains pillar
# stack.cfg , pillar
ext_pillar:
- stack:
grains:cpuarch:
x86_64:
- /srv/pillar/stack1.cfg
- /srv/pillar/stack2.cfg
pillar:environment:
dev: /srv/pillar/dev/stack.cfg
prod: /srv/pillar/prod/stack.cfg
# stack: grains, pillar
# pillar stack1.cfg, stack2.cfg
# 'environment', stack.cfg
ext_pillar:
- stack:
grains:custom:grain:
value:
- /srv/pillar/stack1.cfg
- /srv/pillar/stack2.cfg
- stack:
pillar:environment:
dev: /srv/pillar/dev/stack.cfg
prod: /srv/pillar/prod/stack.cfg
Dalam file yml Anda dapat menggunakan:
- __opts__: opsi konfigurasi
- __grains__: butir minion
- pilar: pilar dari pilar ext_pillar atau default lain (yang ada di top.sls)
- stack: tumpukan pilar yang terakumulasi, termasuk konfigurasi saat ini.
Jika Anda hanya akan beralih ke pilar, berikut adalah beberapa poin yang perlu diperhatikan:
1. Inklusi rekursif hanya berfungsi di pilar. Stack tidak menyertakan direktori, hanya file.
# pillar
# top.sls
base:
'*':
- dir1.* # /dir1/dir2/dir3/*
# stack
# stack.cfg
/dir1/*
/dir1/dir2/*
/dir1/dir2/dir3/*
2. Perilaku default saat menggabungkan daftar:
- pilar - daftar ditimpa
- stack - strategi merge-last digunakan (daftar ditambahkan).
Strategi fusi pilar memungkinkan penyesuaian pilar yang sangat fleksibel.
Penjelasan rinci dengan contoh ada di dokumentasi.
Untuk menjelaskan secara singkat setiap strategi:
- merge-last (default): penggabungan rekursif, kamus / daftar terakhir diutamakan
- merge-first: penggabungan rekursif, prioritas diberikan ke kamus / daftar pertama
- hapus: hapus elemen yang ditentukan
- overwrite: menimpa kamus / daftar.
Penjelasan: dalam setiap penggabungan dua kamus / daftar terlibat, sebut saja yang pertama dan yang terakhir.
Strategi ini ditunjukkan sebagai elemen pertama dari kamus / daftar yang harus diterapkan.
Hal utama adalah jangan terbawa oleh penggunaan strategi yang berlebihan, karena ini akan mempersulit konfigurasi. Mungkin, dalam kasus ini, ada baiknya merevisi organisasi pilar.
Kesimpulan
Pilar memungkinkan Anda membatasi akses ke data sensitif. Dengan bertambahnya data, skenario penggunaannya menjadi lebih canggih, jadi penting untuk menggunakan alat yang nyaman untuk mengaturnya. Saat ini bagi tim kami, ini adalah pilar, di masa mendatang kami berencana untuk menerapkan vault.
Tampaknya kami mengherankan mengapa pilar belum menggantikan pilar default, karena pilar ini jauh lebih nyaman dan fleksibel, dan strategi sangat membantu ketika diperlukan untuk mengubah perilaku variabel tumpukan secara berurutan. Bagaimana menurut anda? Apakah Anda menggunakan pilar dalam pekerjaan Anda?