SaltStack - Hızlı Kılavuz
Bu bölümde SaltStack'in temellerini öğreneceğiz. SaltStack'in uzaktan yürütme yetenekleri, yöneticilerin çeşitli makinelerde esnek bir hedefleme sistemi ile paralel olarak komut çalıştırmasına olanak tanır. Salt konfigürasyon yönetimi, altyapı bileşenlerini belirli bir politikayla uyumlu hale getirmek için hızlı, çok kolay, esnek ve güvenli bir şekilde bir ana minion modeli oluşturur.
SaltStack nedir?
Salt, çok güçlü bir otomasyon çerçevesidir. Salt mimarisi, komutları uzaktan çalıştırma fikrine dayanır. Tüm ağ iletişimi, uzaktan yürütmenin bazı yönlerine göre tasarlanmıştır. Bu soru sormak kadar basit olabilirRemote Web ServerStatik bir Web sayfasını görüntülemek için veya uzak bir sunucuya etkileşimli olarak komutlar yayınlamak için bir kabuk oturumu kullanmak kadar karmaşık. Salt, daha karmaşık uzaktan yürütme türlerinden birine bir örnektir.
Salt, kullanıcıların doğrudan birden fazla makineyi açıkça hedeflemesine ve komut vermesine izin vermek için tasarlanmıştır. Tuz, bir veya daha fazlasını kontrol eden bir Üstat fikrine dayanır.Minions. Komutlar normalde Usta'dan Minyonların hedef grubuna gönderilir, bu grup daha sonra komutlarda belirtilen görevleri yürütür ve ardından elde edilen verileri Usta'ya geri döndürür. Bir usta ve minyonlar arasındaki iletişim,ZeroMQ message bus.
SaltStack modülleri, desteklenen minion işletim sistemleriyle iletişim kurar. Salt Mastervarsayılan olarak Linux üzerinde çalışır, ancak herhangi bir işletim sistemi bir minion olabilir ve şu anda Windows, VMware vSphere ve BSD Unix türevleri iyi desteklenmektedir. Tuz Ustası ve minyonlar iletişim kurmak için anahtar kullanır. Bir minyon, bir ustaya ilk kez bağlandığında, anahtarları otomatik olarak ustaya kaydeder. SaltStack ayrıca şunları sunar:Salt SSH, "aracısız" bir sistem yönetimi sağlar.
SaltStack İhtiyacı
SaltStack hız ve ölçek için tasarlanmıştır. Bu nedenle LinkedIn, WikiMedia ve Google'da onbinlerce sunucuyla büyük altyapıları yönetmek için kullanılır.
Birden fazla sunucunuz olduğunu ve bu sunuculara bir şeyler yapmak istediğinizi hayal edin. Her birinde oturum açmanız ve bunları birer birer yapmanız gerekir ve ardından yazılım yüklemek ve ardından bu yazılımı belirli kriterlere göre yapılandırmak gibi karmaşık şeyler yapmak isteyebilirsiniz.
On veya belki 100 sunucunuz olduğunu varsayalım. Her bir sunucuya tek tek oturum açtığınızı, bu 100 makinede aynı komutları verdiğinizi ve ardından yapılandırma dosyalarını 100 makinenin tamamında düzenlediğinizi düşünün. Bu sorunların üstesinden gelmek için, yalnızca tek bir komut yazarak tüm sunucularınızı bir kerede güncellemek istersiniz. SaltStack, tüm bu tür sorunlar için size tam olarak çözüm sağlar.
SaltStack'in Özellikleri
SaltStack, açık kaynaklı bir yapılandırma yönetimi yazılımı ve uzaktan yürütme motorudur. Salt bir komut satırı aracıdır. Python'da yazılırken, SaltStack yapılandırma yönetimi dilden bağımsızdır ve basittir. Salt platformu, SSH protokolü aracılığıyla komutları yürütmek için itme modelini kullanır. Varsayılan konfigürasyon sistemiYAML ve Jinja templates. Tuz, önceliklePuppet, Chef ve Ansible.
Tuz, diğer rakip araçlara kıyasla birçok özellik sağlar. Bu önemli özelliklerden bazıları aşağıda listelenmiştir.
Fault tolerance- Salt minionlar, ana yapılandırma parametresini mevcut tüm ustaların YAML listesi olarak yapılandırarak aynı anda birden fazla ustaya bağlanabilir. Herhangi bir usta, komutları Salt altyapısına yönlendirebilir.
Flexible- Salt'ın tüm yönetim yaklaşımı çok esnektir. Ajan ve Sunucu, Yalnızca Ajan, Yalnızca Sunucu veya yukarıdakilerin tümü gibi en popüler sistem yönetimi modellerini aynı ortamda takip etmek için uygulanabilir.
Scalable Configuration Management - SaltStack, usta başına on bin minyonu işlemek için tasarlanmıştır.
Parallel Execution model - Salt, komutların uzaktaki sistemleri paralel bir şekilde yürütmesini sağlayabilir.
Python API - Salt, basit bir programlama arayüzü sağlar ve çeşitli uygulamalara kalıplanmasını kolaylaştırmak için modüler ve kolayca genişletilebilir olacak şekilde tasarlanmıştır.
Easy to Setup - Salt'ın kurulumu kolaydır ve herhangi bir sayıdaki sunucunun çeşitli gereksinimlerini yönetebilen tek bir uzaktan yürütme mimarisi sağlar.
Language Agnostic - Salt state yapılandırma dosyaları, şablon oluşturma motoru veya dosya türü her tür dili destekler.
SaltStack'in Faydaları
Salt, zengin özelliklere sahip bir sistem olduğu kadar basit bir sistem olarak birçok fayda sağlar ve aşağıdaki gibi özetlenebilir -
Robust - Salt, güçlü ve sağlam bir yapılandırma yönetimi çerçevesidir ve on binlerce sistem etrafında çalışır.
Authentication - Salt, kimlik doğrulama için basit SSH anahtar çiftlerini yönetir.
Secure - Salt, şifrelenmiş bir protokol kullanarak güvenli verileri yönetir.
Fast - Salt, uzaktan yürütme motorunun temelini oluşturan çok hızlı ve hafif bir iletişim veri yoludur.
Virtual Machine Automation - Salt Virt Cloud Controller özelliği otomasyon için kullanılır.
Infrastructure as data, not code - Salt, basit bir dağıtım, modele dayalı yapılandırma yönetimi ve komut yürütme çerçevesi sağlar.
ZeroMQ'ya Giriş
Salt dayanmaktadır ZeroMQkitaplık ve gömülebilir bir ağ kitaplığıdır. Hafif ve hızlı bir mesajlaşma kitaplığıdır. Temel uygulama şu şekildedir:C/C++ ve dahil olmak üzere çeşitli diller için yerel uygulamalar Java ve .Net kullanılabilir.
ZeroMQ, aracısız bir eşler arası mesaj işlemedir. ZeroMQ, karmaşık bir iletişim sistemini kolayca tasarlamanıza olanak tanır.
ZeroMQ aşağıdaki beş temel modelle birlikte gelir -
Synchronous Request/Response - Bir istek göndermek ve gönderilen her biri için sonraki yanıtları almak için kullanılır.
Asynchronous Request/Response- Talep eden, bir İstek mesajı göndererek konuşmayı başlatır ve bir Cevap mesajı bekler. Sağlayıcı gelen İstek mesajlarını bekler ve Cevap mesajlarıyla cevap verir.
Publish/Subscribe - Verileri tek bir işlemden (örneğin yayıncı) birden çok alıcıya (örneğin aboneler) dağıtmak için kullanılır.
Push/Pull - Verileri bağlı düğümlere dağıtmak için kullanılır.
Exclusive Pair - İki eşi birbirine bağlayarak bir çift oluşturmak için kullanılır.
ZeroMQ, kümeler, bulut ve diğer çoklu sistem ortamları arasında mesaj alışverişi için oldukça esnek bir ağ oluşturma aracıdır. ZeroMQ,default transport library SaltStack'te sunulur.
SaltStack mimarisi, yerel ağ sistemlerinden farklı veri merkezlerindeki diğer dağıtımlara kadar herhangi bir sayıda sunucuyla çalışacak şekilde tasarlanmıştır. Mimari, tek bir arka plan programı kümesinde yerleşik gerekli işlevselliğe sahip basit bir sunucu / istemci modelidir.
Aşağıdaki resme bir göz atın. SaltStack mimarisinin farklı bileşenlerini gösterir.
SaltMaster- SaltMaster, ana arka plan programıdır. Bir SaltMaster, Salt bağımlılarına komutlar ve konfigürasyonlar göndermek için kullanılır. Tek bir ana makine birden çok ana birimi yönetebilir.
SaltMinions- SaltMinion köle cinidir. Bir Salt minion, SaltMaster'dan komutlar ve konfigürasyon alır.
Execution- Komut satırından bir veya daha fazla minyona karşı yürütülen Modüller ve Adhoc komutları. Gerçek Zamanlı İzleme gerçekleştirir.
Formulas- Formüller önceden yazılmış Tuz Durumlarıdır. Salt States'in kendileri kadar açık uçludurlar ve bir paket yükleme, bir hizmeti yapılandırma ve başlatma, kullanıcıları veya izinleri ayarlama ve diğer birçok ortak görev gibi görevler için kullanılabilirler.
Grains- Tahıllar, bir minyona özel bilgiler sağlayan bir arayüzdür. Tahıllar arayüzünde bulunan bilgiler statiktir. Tuz minion başladığında tahıllar yüklenir. Bu, tahıllardaki bilgilerin değişmediği anlamına gelir. Bu nedenle, tahıl bilgileri, çalışan çekirdek veya işletim sistemi hakkında olabilir. Büyük / küçük harf duyarlıdır.
Pillar- Sütun, kriptografik anahtarlar ve şifreler gibi belirli bir minyona özgü son derece hassas verileri üreten ve depolayan bir arayüzdür. Verileri bir anahtar / değer çiftinde depolar ve veriler, Tuz Durumu Ağacı ile benzer şekilde yönetilir.
Top File - Salt durumlarını ve sütun verilerini Salt minyonlarıyla eşleştirir.
Runners - SaltMaster içinde bulunan bir modüldür ve iş durumu, bağlantı durumu, harici API'lerden veri okuma, bağlı tuz kölelerini sorgulama ve daha fazlası gibi görevleri gerçekleştirir.
Returners - Tuz kölelerinin verilerini başka bir sisteme döndürür.
Reactor - SaltStack ortamınızda olaylar meydana geldiğinde reaksiyonları tetiklemekten sorumludur.
SaltCloud - Salt Cloud, bulut ana bilgisayarlarıyla etkileşim kurmak için güçlü bir arayüz sağlar.
SaltSSH - Salt minion kullanmadan sistemlerde SSH üzerinden Salt komutlarını çalıştırın.
Bir sonraki bölümde, SaltStack'in çeşitli rakipleri ve özellikleri hakkında ayrıntılı olarak bilgi edineceğiz.
Salt, Puppet, Chef ve Ansible, her biri sunucu otomasyonuna farklı bir yol izleyen önde gelen yapılandırma yönetimi ve düzenleme araçlarıdır. Düzinelerce, yüzlerce ve hatta binlerce sunucunun yapılandırılmasını ve bakımını kolaylaştırmak için oluşturulmuşlardır.
SaltStack'in öncelikle Puppet, Chef ve Ansible ile nasıl rekabet ettiğini anlayalım.
Platformlar ve Destek
Aşağıda, SaltStack ve rakiplerini destekleyen tüm platformların bir listesi bulunmaktadır.
SaltStack - SaltStack yazılımı Linux, Windows, Mac OS X ve UNIX'in birçok sürümünde çalışır ve bunları yönetir.
Puppet - Red Hat Enterprise Linux, CentOS, Oracle Linux, Scientific Linux, SUSE Linux Enterprise Server ve Ubuntu.
Chef - Chef, AIX, RHEL / CentOS, FreeBSD, OS X, Solaris, Microsoft Windows ve Ubuntu gibi birçok platformda desteklenmektedir.
Ansible - Enterprise Linux (EPEL) ve diğer işletim sistemleri için Ekstra Paketler aracılığıyla Linux, CentOS ve Scientific Linux'un Fedora dağıtımı.
Menşe Dili
SaltStack - Python
Puppet - Yakut
Chef - Ruby ve CLI, Ruby tabanlı DSL kullanır
Ansible - Python
Desteklenen Dil
SaltStack - Herhangi bir dil
Puppet - Yakut
Chef - Ruby ve CLI, Ruby tabanlı DSL kullanır
Ansible - Herhangi bir dil
Web kullanıcı arayüzü
SaltStack - Web Kullanıcı Arayüzü, çalışan işler, minion durumu ve olay günlüklerinin görünümlerini sunar.
Puppet - Web kullanıcı arayüzü raporlama, envanterleme ve gerçek zamanlı düğüm yönetimini yönetir.
Chef - Web kullanıcı arayüzü, düğümleri aramanıza ve envanterini çıkarmanıza, düğüm etkinliğini görüntülemenize ve Yemek Kitapları, roller ve düğümler atamanıza olanak tanır.
Ansible - Web Kullanıcı Arayüzü, kullanıcıları, ekipleri ve envanterleri yapılandırmanıza ve envanterlere Başucu Kitaplarını uygulamanıza olanak tanır.
Yönetim araçları
SaltStack - SaltStack Enterprise, bulut ve BT operasyonlarının orkestrasyonunu yönetmek için ana araç olarak konumlandırılmıştır. DevOps.
Puppet- Puppet, Puppet Enterprise ve Open Source Puppet olmak üzere iki çeşittir. Puppet Enterprise, Açık Kaynak Kuklası'nın işlevlerini sağlamanın yanı sıra, düğüm yönetimi için GUI, API ve komut satırı araçları da sağlar.
Chef - CFEngine, konfigürasyon yönetim aracıdır.
Ansible - Ansible 1.3, yönetim için ana araçtır.
Verim
SaltStack- Tuz, yüksek performans ve ölçeklenebilirlik için tasarlanmıştır. Salt'ın iletişim sistemi, ZeroMQ kullanarak Salt ustası ve minyonlar arasında kalıcı bir veri hattı kurar.
Puppet - Güvenli ve yüksek performanslıdır ve aracı gerektirmez.
Chef- Chef Server için en belirgin mücadele arama; Arama yavaştır ve istemcilerden aynı anda istenmez.
Ansible - Güvenli, yüksek performanslı ve aracı gerektirmez.
Fiyat ve Değer
SaltStack- Ücretsiz açık kaynak sürümü. SaltStack Enterprise'ın maliyeti makine başına yıllık 150 ABD dolarıdır.
Puppet- Ücretsiz açık kaynak sürümü. Puppet Enterprise'ın maliyeti makine başına yıllık 100 ABD dolarıdır.
Chef- Ücretsiz açık kaynak sürümü; Enterprise Chef 5 makine için ücretsiz,$120 per month for 20 machines, $50 makine için ayda 300.
Ansible- Ücretsiz açık kaynak sürümü; 10 makine için ücretsiz Ansible, o zaman$100 or $İhtiyacınız olan desteğe bağlı olarak yılda makine başına 250.
Kullanım
SaltStack- SaltStack, Cisco ve Rackspace tarafından kullanılmaktadır. Herhangi bir bulut tabanlı platformla entegre olabilir.
Puppet - Kukla; Zynga, Twitter, New York Borsası, PayPal, Disney, Google vb. Tarafından kullanılmaktadır.
Chef - Chef, Internap, Amazon EC2, Google Cloud Platform, OpenStack, Microsoft Azure ve Rackspace gibi bulut tabanlı platformlarla entegre olabilir.
Ansible Ansible, sanallaştırma ortamlarına, Amazon Web Services, Cloud Stack, DigitalOcean ve Google Cloud Platform gibi bulut ortamlarına dağıtılabilir.
Kuruluma geçmeden önce aşağıdaki gereksinimlere sahip olmanız gerekir -
Bir Linux sunucusu (en son Ubuntu sunucusu).
sudo veya root access bu sunucuya.
Aşağıdaki komutu kullanarak tüm güncellemeleri yükleyin -
sudo apt-get update
SaltMaster'ı yükleyin
SaltMaster'ı aşağıdaki apt-get komutuyla depodan yükleyin.
sudo apt-get install salt-master
Salt Minion'u yükleyin
Salt minion'u depodan aşağıdaki apt-get komutuyla yükleyin.
sudo apt-get install salt-minion
Salt sendikasını yükleyin
Tuz sendikasını aşağıdaki apt-get komutuyla depodan yükleyin.
sudo apt-get install salt-syndic
Ana Yapılandırma
Tuz konfigürasyonu çok basittir. Master için varsayılan konfigürasyon çoğu kurulumda çalışacaktır. Yapılandırma dosyaları '/ etc / salt' dizinine yüklenir ve - / etc / salt / master ve / etc / salt / minion gibi ilgili bileşenlerinin adıyla adlandırılır.
#interface: 0.0.0.0
interface: <local ip address>
Yapılandırma dosyasını güncelledikten sonra, aşağıdaki komutu kullanarak Salt master'ı yeniden başlatın.
sudo service salt-master restart
Minion Yapılandırması
Bir Salt Minion yapılandırmak çok basit. Varsayılan olarak bir Salt Minion, "salt" DNS adına bağlanmaya çalışacaktır; Minion bu adı doğru bir şekilde çözebilirse, hiçbir konfigürasyona gerek yoktur. Minion yapılandırma dosyasındaki "master" yönergesini yeniden tanımlayın./etc/salt/minion, aşağıdaki kodda gösterildiği gibi -
#master: salt
master: <local ip address>
Yapılandırma dosyasını güncelledikten sonra, aşağıdaki komutu kullanarak Salt minion'u yeniden başlatın.
sudo service salt-minion restart
Anahtar yönetimi
Tuz kullanır AES EncryptionUsta ile Minion arasındaki tüm iletişim için. Master ve Minion arasındaki iletişim güvenilir, kabul edilmiş anahtarlarla doğrulanır.
salt-key -L
Aşağıdakileri üretecek output -
Accepted Keys:
Denied Keys:
Unaccepted Keys:
<local system name>
Rejected Keys:
Aşağıdaki komutu vererek tüm anahtarları kabul edin.
sudo salt-key -A
Aşağıdakileri üretecek output -
The following keys are going to be accepted:
Unaccepted Keys:
<local system name>
Proceed? [n/Y] y
Key for minion bala-Inspiron-N4010 accepted.
Şimdi tekrar yayınlayın salt key listing komut
salt-key -L
Aşağıdakileri üretecek output -
Accepted Keys:
<local system name>
Denied Keys:
Unaccepted Keys:
Rejected Keys:
Komutları Gönderme
Master ve Minion arasındaki iletişim test.ping komutunu çalıştırarak doğrulanmalıdır.
sudo salt '*' test.ping
Aşağıdakileri üretecek output -
<local system name>
True
Burada, '*' tüm minyonları ifade eder. Sadece bir minyonumuz olduğu için - test.ping,ping komutu ve ping'in başarılı olup olmadığını döndürür.
Bu bölümde basit bir SaltStack ortamı, bir tuz ustası ve iki tuz kölesi oluşturacağız. Bu ortam, ilerleyen bölümlerde tuz kavramını öğrenmemize yardımcı olacaktır.
SaltStack ortamını oluşturmak için aşağıdaki adımlara uyalım.
VirtualBox Ortamını Kurun
VirtualBox, platformlar arası bir sanallaştırma uygulamasıdır. VirtualBox, aynı anda birden fazla işletim sistemi çalıştırmanıza izin verir. VirtualBox, Windows, Linux, Macintosh ve Solaris üzerinde çalışır. Çok sayıdaGuest Operating Systems.
Aşağıdaki bağlantıyı ziyaret ederek VirtualBox'ı indirip kurabilirsiniz - https://www.virtualbox.org/wiki/Downloads
Üç sanal makine oluşturup VirtualBox kullanarak çalıştıracağız.
Vagrant'ı yükleyin
Vagrant, yapılandırması kolay, yeniden üretilebilir ve taşınabilir çalışma ortamları sağlar.
Aşağıdaki bağlantıyı ziyaret ederek Vagrant'ı indirip kurabilirsiniz - https://www.vagrantup.com
Vagrant'ın başarılı bir şekilde kurulmasından sonra, onu yapılandırmanız gerekir. Adında tek bir dosya oluşturunVagrantfile bir klasörde bulun ve makinenin türünü ve özelliklerini açıklayın.
Run Vagrant - Vagrant'ı çalıştırmak için aşağıdaki komutu verin -
vagrant up
Siz serseriyi çalıştırdıktan sonra, Vagrant içinde tanımlanan makineleri yaratır ve çalıştırır. VagrantfileVirtualBox'ı arka planda kullanarak. Bu makineler siz kapatana kadar çalışacak.
Stop Vagrant - VirtualBox'taki tüm çalışan makineleri durdurmak için aşağıdaki komutu yazın -
vagrant halt
Demo Ortamını İndirin
SaltStack, Vagrant kurulumu olarak basit bir demo ortamı sağlar ve github. Aşağıdaki komutu kullanarak kurulumu indirelim -
cd /cd/to/path
git clone https://github.com/UtahDave/salt-vagrant-demo
Ortamı Başlat
Şimdi, aşağıdaki komutu kullanarak demo ortamını başlatın -
cd /cd/to/path/salt-vagrant-demo
vagrant up
Bu komuttan sonra aşağıdaki yanıtı göreceksiniz -
result
Şimdi, biri salt master yapılandırılmış ve ikisi de salt minion yapılandırılmış olarak üç sunucu çalışıyor.
Salt master'ı çalıştırın
Aşağıdaki komutu kullanarak Tuz ustasına giriş yapın -
vagrant ssh master
Şimdi, aşağıdaki komutu kullanarak kök kullanıcıya geçin -
sudo su
Şimdi Tuz ustasına başarıyla bağlandık.
Şimdi SaltStack'teki bazı temel komutlardan geçelim.
Tüm Anahtarları listeleyin
Aşağıdaki komut, Salt minion bağlantılarını doğrulamak ve bağlantının kabul edildiğini, reddedildiğini veya beklemede olup olmadığını görmek içindir.
salt-key —list-all
Aşağıdakileri üretecek output -
Accepted Keys:
minion1
minion2
Denied Keys:
Unaccepted Keys:
Rejected Keys:
Salt Minions'ı Doğrula
Şimdi, tüm anahtarları kabul ettik, Salt ustanın dinleyip dinlemediğini kontrol etmek için bir komut gönderebilirsiniz.
salt '*' test.ping
Aşağıdakileri üretecek output -
minion1:
True
minion2:
True
Yukarıdaki sonuçtan minion 1 ve minion 2'yi listeleyin; bu, minyonların doğru şekilde dinlediği anlamına gelir, aksi takdirde minyonlar artık doğru şekilde yanıt verebilir.
Bir Erişim Kontrol Sistemi, bir grubun izinlere sahip bir görevi yürütmesi için bir kullanıcıya seçenekler sağlar. Yönetici olmayan kontrol arayüzlerine erişimi yapılandırmak için bir Salt erişim kontrol sistemi kullanılır. Bu işlemi tüm sistemlere uygulayabilirsiniz. Bu kontrol, yönetici olmayan kullanıcıların Salt komutlarını yürütmesine yardımcı olur.
Tuz arayüzleri aşağıdaki üç türdendir -
- Yayıncı EKL sistemi
- Harici Yetkilendirme sistemi
- Akran sistemi
Bu arayüzlerin her birini ayrıntılı olarak inceleyelim.
Yayıncı ACL Sistemi
Bir Publisher ACL sistemi, ana bilgisayardan minyonlar üzerinde Salt komutlarını yürütmek için kök dışındaki kullanıcılara erişim sağlar. Yayıncı EKL sistemi, ana yapılandırma dosyasında şu şekilde yapılandırılır:publisher_aclyapılandırma seçeneği. Aşağıdaki gibi tanımlanır -
publisher_acl:
user1:
- .*
user2:
- web*:
- test.*
- pkg.*
Buraya,
user1 herhangi bir şeyi yürütmesine izin verilir.
user2 kullanımına izin verilir test ve pkg, ancak yalnızca "web *" kölelerinde.
Dış Kimlik Doğrulama Sistemi
external auth system harici yetkilendirme sistemi aracılığıyla belirli minyonlarda salt komutları yürütmek için erişim sağlamak için kullanılır. PAM, LDAP, vb. Bu konfigürasyon dosyası, aşağıda açıklandığı gibi ana dosyada tanımlanır.
external_auth:
pam:
user1:
- 'web*':
- test.*
- network.*
user2:
- .*
Buraya,
user1 içindeki işlevleri yürütmesine izin verilir test ve network modules eşleşen minyonlarda web* hedef.
user2 tüm işlevleri yürütmesine izin verilir.
Komutta Harici Kimlik Doğrulama Sistemini etkinleştirin
Salt sunucusu, harici kimlik doğrulamayı etkinleştirmek için bir '–a' seçeneği sunar.
salt -a pam web\* test.ping
Burada -a pamseçeneği, PAM harici kimlik doğrulamasını etkinleştirmek için kullanılır. Salt Server, komutu her çalıştırdığımızda kimlik doğrulama ayrıntılarını soracaktır. Salt Server'ın kimlik doğrulama ayrıntılarını yalnızca ilk kez sormasını kısıtlamak için T seçeneğini kullanabiliriz. Bu-T option sonraki 12 saat için kimlik doğrulama ayrıntılarını önbelleğe alır (varsayılan ayar) ve bunu kullanıcıların kimliğini doğrulamak için kullanır.
salt -T -a pam web\* test.ping
Eş Sistem
Salt minyonlar, eş arayüzü kullanarak komutları geçebilir. Eş arabirim, ya minyonların ana bilgisayardan komutları kullanarak komut göndermesine izin vermek için ana yapılandırma dosyası aracılığıyla yapılandırılır.peer yapılandırma bölümü veya minyonların ustadan koşucuları kullanarak yürütmesine izin vermek için peer_run yapılandırma.
Bu iki konfigürasyonu da ayrıntılı olarak anlayalım.
Eş yapılandırması
Ana dosyada tanımlanacak basit konfigürasyon aşağıdaki gibidir -
peer:
.*:
- .*
Burada, tüm minyonlar için iletişimi sağlar, ancak yalnızca çok güvenli ortamlar için önerilir.
Minyonları belirli kimliklere atamak için yapılandırmanın aşağıda gösterildiği gibi tanımlanması gerekir: eş -
.*domain.com:
- test.*
peer_run Yapılandırması
Bu yapılandırma, minyonların ana dosyadaki peer_run seçeneğini kullanarak ana bilgisayardan koşucuları yürütmesine izin vermek içindir. Aşağıdaki örnek, tüm minyonlara ve tüm koşuculara erişim sağlamaktır.
peer_run:
.*:
- .*
Minyonları belirli bir kimliğe atamak için, yapılandırmanın aşağıda verildiği gibi tanımlanması gerekir -
peer_run:
.*domain.com:
- test.*
Komutlar Nasıl Yürütülür
Yürütmek test.ping tüm minyonlarda, salt-call ile birlikte komut publish.publish modül.
salt-call publish.publish \* test.ping
Yürütmek runnertuz çağrısı komutunu, publish.runner modül.
salt-call publish.runner manage.up
Salt, çok sayıda sistem ile yüksek hızlı iletişim yeteneğine sahiptir. Bu yaklaşım, Salt'ın güçlü bir çoklu görev sistemi oluşturmasına yardımcı olur. Salt, işleri birden fazla sistemde çalıştırabilir, bu nedenle Salt, tüm sistemlerde çalışan her işi yönetmek için iş yönetimi tekniğini kullanır. Bu bölüm iş yönetimini ayrıntılı olarak açıklamaktadır.
İş Kimliği nedir?
Salt'ın önbellek dizini var, cachedir. Bunun içinde, kölelerin tuttuğu bir dizineprocdizin. Aşağıdaki / var / cache / salt / proc dizininde bulunur.
Proc dizini tüm dosyaları korumak için kullanılır. Bu dosyalar yürütüldüğünde, benzersiz bir iş kimliği atarlar. Bu iş kimliği, minyondaki mevcut çalışan işleri belirlemeye yardımcı olur ve işlerin aranmasına izin verir.
SALTUTIL Modülü
Salt, Saltutil iş yönetimi süreci olarak adlandırılan yeni bir modül sunar. Bu modül, işleri yönetmek için farklı işlevler içerir. Bu işlevler, minyon seviyesindeki işleri yönetmek için kullanılır. Fonksiyonlar aşağıda kısaca açıklanmıştır -
running - proc dizininde bulunan tüm çalışan işler verilerini döndürür.
find_job - İş kimliğine göre belirli bir iş hakkında belirli verileri döndürür.
signal_job - Belirli bir iş kimliğinin (jid) bir sinyal gönderilmesine izin verir.
term_job - Belirtilen iş için bir sonlandırma sinyali gönderir.
kill_job - Belirtilen iş için bir sonlandırma sinyali gönderir.
Jobs Runner
İşler çalıştırıcısı, verileri görüntülemeyi daha kolay ve daha temiz hale getiren işlevler içerir. Farklı işlevleri vardır. Bu işlevlerin her birini ayrıntılı olarak tartışalım.
AKTİF İşlevi
Aktif işlevi, hangi işlerin hala çalışmakta olduğunu belirlemek ve hangi sistemlerin bir işi tamamladığını ve hangi sistemlerin hala beklendiğini kontrol etmek için kullanılır. Aşağıdaki komut kullanılarak yürütülür,
salt-run jobs.active
LOOKUP_JID İşlevi
Lookup_jid çalıştırıcısı mevcut görünen iş için verileri görüntüleyecektir. Bu işler,keep_jobsana yapılandırmadaki seçenek. Aşağıdaki komut kullanılarak yürütülür.
salt-run jobs.lookup_jid <job id number>
LIST_JOBS İşlevi
List_jobs işlevi, işler için iş verilerini listelemek için kullanılır. Aşağıdaki komutla ifade edilir -
salt-run jobs.list_jobs
İş Planlama
Zamanlama sistemi, minyonlarda veya usta üzerindeki herhangi bir koşucuda herhangi bir yürütme işlevinin yürütülmesini gösterir.
Aşağıdaki yöntemlerle gerçekleştirilir -
Schedule - Master veya minion'da zamanlama seçeneği config Dosyalar.
Minion pillar data - saltutil.refresh_pillar komutunu kullanarak minion sütunu verilerini yeniler.
Program durumu veya program modülü.
Tuz durumları minyon üzerinde yürütülür. Konumsal argümanları iletebilir ve birYAML dict içinde belirtilen argümanların config file Aşağıda gösterildiği gibi.
schedule:
job1:
function: saltstate.sls
seconds: 3600
args:
- httpd
kwargs:
test: True
Buraya, job1 işlevi yürütecek saltstate.sls belirtilen argümanlarla, httpdher saat için. test: True için ek argümandır httpd içinde tanımlanan komut saltstate.sls.
Salt dosya sunucusu, durum bilgisi olmayan bir ZeroMQ sunucusudur. Tuz ustasına yerleştirilmiştir. Dosyaları ustadan minyonlara dağıtmak için bir Salt dosya sunucusu kullanılır. Farklı modüller içerir. Bu bölümde salt dosya sunucusunu, yapılandırmasını, salt dosya sunucusuyla ilgili modülleri, python'da salt dosya sunucusuna nasıl erişileceğini vb. Anlayalım.
Dosya Sunucusu Arka Ucu
Dosya sunucusu arka ucu, Salt dosya sunucusunun yerel dosya sistemi, Git sürüm kontrol sistemi vb. Gibi diğer dosya sunucusuna şeffaf bir arayüz olarak davranmasına izin verir.
Bir Git dosya sunucusu arka ucu, ana dosyada aşağıdaki yapılandırma kullanılarak etkinleştirilebilir.
fileserver_backend:
- git
Çoklu arka uç dosya sistemini etkinleştirmek için aşağıdaki yapılandırmayı kullanabiliriz.
fileserver_backend:
- roots
- git
Ayrıca, ilgili arka uç sunucusunun belirli bölümünü kullanarak farklı bir arka uç sunucusu için ek seçenek belirleyebiliriz.
Yerel Dosya Sistemi
Bu sistemi kullanmak için aşağıdaki kodu kullanmamız gerekiyor.
file_roots:
base:
- /srv/salt/prod
Git Dosya Sistemi
Bu sistemi kullanmak için aşağıdaki kodu kullanmamız gerekiyor.
gitfs_remotes:
- https://github.com/sample/sample1.git
Dosya İsteme
Salt'ın belirli ortamlar için dosya talep etme seçeneği vardır.
salt://path/to/file?saltenv = base
Burada ortam kökler seçeneği kullanılarak tanımlanır.
Dosya Sunucusu Yapılandırması
Salt dosyaları birçok kök dizine tahsis edilebilir ve aranacak hem dosya yolu hem de ortam belirtilerek erişilebilir. Ayrı ortamlar birden çok dizin köküne yayılabilir.
Çevre
Varsayılan ortam temeldir. Bu ortam tanımlanır ve başka bir ortam belirtilmediğinde dosyaları indirmek için kullanılır.
file_roots:
base:
- /srv/salt/base
Aşağıdaki kodda gösterildiği gibi birden fazla ortam da kullanabilirsiniz.
file_roots:
base:
- /srv/salt/base
dev:
- /srv/salt/dev
- /srv/salt/base
CP Modülü
CP modülü, Salt file server. salt-cp komutu, Salt dosya sunucusu tarafından sunulan dosyaları dağıtmak için de kullanılabilir.
DOSYAYI AL
cp.get_fileişlevi minion üzerinde ustadan bir dosya indirmek için kullanılabilir. Aşağıdaki kod bloğunda gösterildiği gibi tanımlanır.
salt '*' cp.get_file salt://vimrc /etc/vimrc
Yukarıdaki komut, tüm Salt minyonlarına vimrc dosyalayın ve kopyalayın /etc/vimrc.
Şablonu Etkinleştir
Get_file'da şablon seçeneğini aşağıdaki gibi etkinleştirebilirsiniz -
salt '*' cp.get_file "salt://vimrc" /etc/vimrc template = jinja
Sıkıştırma Uygula
Sıkıştırmayı kullanmak için şunu kullanın: gzipadlandırılmış bağımsız değişken. Geçerli değerler 1'den 9'a kadar olan tam sayılardır; burada 1 minimum sıkıştırma ve 9 maksimum değerdir.
Komut şu şekilde tanımlanır -
salt '*' cp.get_file salt://vimrc /etc/vimrc gzip = 5
GET_DIR
cp.get_dirişlevi minion üzerinde tüm dizini ana bilgisayardan indirmek için kullanılabilir. Aşağıdaki kod bloğunda tanımlanmıştır.
salt '*' cp.get_dir salt://etc/mysql /etc
cp.get_dirşablon oluşturmayı ve gzip sıkıştırma argümanlarını destekler. İsterseniz siz de atayabilirsiniz.
FILECLIENT Modülü
Salt, salt dosya sunucusuna erişmeye yardımcı olan bir python modülü sağlar. salt/fileclient.py modül minyondan ustaya iletişimi kurmak için kullanılır.
Dosyaları almak için örnek kod aşağıdaki gibidir -
import salt.minion
import salt.fileclient
def get_file(path, dest, saltenv = ‘base'):
client = salt.fileclient.get_file_client(__opts__)
return client.get_file(path, dest, true, saltenv)
Buraya,
opts, modül tuz ortamında çalıştırıldığında kullanılabilir. Aksi takdirde, yapılandırma yolunu sağlamalıyız -/etc/salt/minion.
path salt dosya sunucusundaki kaynak dosyanın yolunu ifade eder.
dest dosyanın hedef yolunu gösterir.
saltenv çevreye atıfta bulunur
Bir sonraki bölümde, nasıl kullanılacağını anlayacağız Git dosya sunucusu olarak.
Gitaçık kaynaklı bir dağıtılmış sürüm kontrol sistemidir. Herhangi bir dosyadaki değişiklikleri takip etmek için kullanılabilir. Salt, Git dosya sunucusunu kullanarak Git depolarından dosya gönderir. Git'i şu şekilde yapılandırabilirsiniz:fileserver_backend liste seçeneği ve bir veya daha fazla depo yapılandırmanız gerekirse, bunu kullanarak yapabilirsiniz. gitfs_remotes seçeneği.
Bu bölümde Git dosya sunucusunun nasıl kurulacağı ve yapılandırılacağı anlatılmaktadır. Kuruluma doğru ilerlemeden önce aşağıdaki ön koşullara sahip olmanız gerekir.
Git Kullanmak İçin Salt Sunucusu Ön Koşulları
Tuz sunucusunun dosya sunucusu olarak Git'i kullanması için minimum gereksinim aşağıdaki gibidir:
- pygit2
- Dulwich
Pygit2 ve Dulwich, gitfs_providerana yapılandırma dosyasındaki parametre. Eğergitfs_provider ana dosyada yapılandırılmamışsa, Salt uygun sürüm mevcutsa pygit2'yi tercih eder, ardından GitPython ve Dulwich.
Pygit2'yi yükleyin
Fedora ve Ubuntu tabanlı sistemlere pygit2 yüklemek için aşağıdaki komutlar kullanılır -
Fedora-based system
yum install python-pygit2
Ubuntu-based system
apt-get install python-pygit2
Burada, pygit2'nin desteklenen minimum sürümü 0.20.3'tür.
GitPYTHON'u yükleyin
GitPython, ana bilgisayara kolayca kurulabilir. yum / apt command Aşağıda gösterildiği gibi.
Fedora-based system
yum install GitPython
Ubuntu-based system
apt-get install python-git
DULWICH'i yükleyin
Dulwich, yum komutu kullanılarak ana bilgisayara kolayca kurulabilir.
Fedora-based system
yum install python-dulwich
Ubuntu-based system
apt-get install python-dulwich
Şimdi, Git dosya sunucusu için tüm bağımlılıkları kurduk. Şimdi bu Git dosya sunucusunu,fileserver_backend bölümünde master config dosya.
Arka Uç Yapılandırması
Git dosya sunucusunu kullanmak için, ana yapılandırma dosyasındaki fileserver_backend listesine Git eklemeniz gerekir. Aşağıdaki gibi tanımlanmıştır -
fileserver_backend:
- git
Uzak bir yapılandırmada Git dosya sunucusunu nasıl yapılandıracağımızı daha iyi anlayalım.
gitfs_remotes Yapılandırması
Ana dosyadaki gitfs_remotes yapılandırması için git: //, https: //, file: // veya ssh: // gibi URL'lerden herhangi birini veya tamamını belirtebilirsiniz. Bu, istenen dosyaları aramak için kullanılır.
Basit https URL spesifikasyonu aşağıda tanımlanmıştır.
gitfs_remotes:
- https://github.com
ssh yapılandırma aşağıda gösterildiği gibi yapılabilir.
gitfs_remotes:
- [email protected]:user1/sample.git
- ssh://[email protected]/path/to/sample.git
Şimdi, iki seçeneği kullanarak Git dosya sunucusunu yapılandırdık. fileserver_backend ve gitfs_remotes.
Master'ı Yeniden Başlat
Ana dosyadaki tüm değişiklikleri yaptıktan sonra, şimdi tüm yapılandırmaları Git dosya sunucusuna yüklemek için ana bilgisayarı yeniden başlatın.
Çoklu Uzaktan Kumanda Yapılandırması
Aşağıdaki komut, çoklu konfigürasyon için kullanılır. gitfs_remotes ana dosyada.
gitfs_remotes:
- git://github.com/sample/sample1.git
- https://github.com/sample/sample2.git
- file:///root/user/sample
Depolar burada sample1.git, sample2.git, ve sample.doc aşağıdaki dosyalara sahip olabilir.
sample1.git:
top.sls
sample2.git
edit/vimrc
sample.doc
edit/vimrc
MinionFSSalt tarafından minyonların kendi aralarında dosya alışverişi yapabilmeleri için sağlanan özel bir dosya sunucusudur. MinionFS tarafından sunulan dosyalar, minyonlar tarafından kasıtlı olarak paylaşılan dosyalardır. Dosyaları paylaşmak için bir Minion aşağıda verilen adımları takip etmelidir.
Kaynak minion, dosyayı tuz ustasına itmek zorundadır. cp.push işlevi.
Dosyalar kaynak minion tarafından gönderildikten sonra, konuşlandırılan dosyalara MinionFS dosya sunucusu kullanılarak başka herhangi bir minion tarafından erişilebilir.
İtmeyi Etkinleştir
Varsayılan olarak, dosyaları minyonlar tarafından bir ustaya itmek devre dışıdır. Minyonlardan gelen dosyaları kabul etmek için, yöneticinin yapılandırma dosyasında "file_recv" seçeneğine sahip olması ve değerinin şu şekilde ayarlanması gerekir:True. Varsayılan olarak, "file_recv" ise değerfalse.
file_recv: True
Seçenek etkinleştirildikten sonra ana hizmeti yeniden başlatın.
Dosyaları İtme
Minyonlar dosyaları ustaya gönderebilir. Tarafından yapılırcp.pushişlevi. Bu cp.push işlevi, dosyaları minion kimliğini kullanarak minion tarafından itmek için kolay bir mekanizma sağlar.
salt 'minion-id' cp.push /path/to/the/file
Burada, minion kimliği, dosyayı hangi minionun ittiğini belirlemek için kullanılır. Bu komut, dosyayı adlı bir alt dizinde saklar.minions altında master's cachedir. Genellikle yol - / var / cache / salt / master / minions şeklindedir.
Minion için m1 ve - /var/log/mylog.txt dosyası, dosya - /var/cache/salt/master/minions/m1/var/log/mylog.txt içinde saklanacaktır.
MinionFS'yi etkinleştir
MinionFS'yi etkinleştirmek için, basitçe minion aşağıdaki kod bloğunda gösterildiği gibi dosya sunucusu arka uç ayarında.
fileserver_backend:
- roots
- minion
MinionFS etkinleştirildikten sonra, itilen minion dosyalar şu şekilde kullanılabilir:
salt://<minion-id>/path/to/pushed/file
Minion için m1 ve itilen dosya - /var/log/mylog.txt, itilen dosya salt: //m1/var/log/mylog.txt adresinden sunulacaktır.
Bu minionFS, aşağıdaki konfigürasyon kullanılarak özel bir dizine bağlanabilir. MinionFS dosyalarını diğer dosyalardan ayıracak ve minion dosyalarını düzenlemeye yardımcı olacaktır.
minionfs_mountpoint: salt://minionfs
Yukarıdaki konfigürasyon için dosya, minionfs dizin as - salt: //minionfs/m1/var/log/mylog.txt
MinionFS Gelişmiş Seçenekleri
MinionFS ayrıca, belirli bir minion tarafından gönderilen dosyaların kullanılabilirliğini etkinleştirme / devre dışı bırakma seçeneği de sunar. Seçenekler şunlardırminionfs_whitelist, minyonları etkinleştirmek için ve minionfs_blacklist, minyonları etkisiz hale getirmek için.
minionfs_whitelist:
- webserver
- develop*
- ‘mail\d+.mysite.com'
minionfs_blacklist:
- testing
Yukarıdaki konfigürasyonda, hariç tüm minyonlar testing dosyayı minionFS kullanarak paylaşmalarına izin verilir.
Webserver1
Kimlikleri normal ifadeyle eşleşen minyonlar gelişir *
Kimlikleri normal ifadeyle eşleşen minyonlar mail\d+.mysite.com.
Testing
Bir sonraki bölümde Cron'u Salt ile nasıl kullanacağımızı öğreneceğiz.
Tuz ile birlikte kullanılabilir Cronuygulama. Her iki uygulamayı birlikte kullanmak, Tuzu otomatikleştirmek için harika bir fırsat sağlar. Salt, komutları uzaktan yürütme seçeneği sunarken, Cron önceden planlanmış veya otomatikleştirilmiş bir şekilde çalışmasını sağlar. Bu bölümde Cron ve Salt'ı birlikte nasıl kullanacağımızı öğrenelim.
Cron nedir?
Cron, Linux Ortamında çok kullanışlı bir uygulamadır. Bir komutun veya betiğin belirli bir tarih ve saatte çalışacak şekilde önceden ayarlanmasını sağlar. Ayrıca, bir uygulamanın düzenli aralıklarla, örneğin günlük, haftalık veya ayın ilk gününde çalıştırılmasını sağlar.
Sistem başladığında Cron başlar ve /etc/crontabyapılandırma ayrıntıları için dosya. / Etc / crontab, aşağıda gösterildiği gibi her uygulamayı ve programını ayrı bir satırda içerir.
15 * * * * root echo "This command runs at 15 minutes past every hour"
15 10 * * * root echo "This command is run daily at 10:15 am"
Her satır, boşlukla ayrılmış aşağıdaki yedi giriş noktasına sahiptir ve bunlar aşağıdaki gibidir -
minute - saatin dakikası ve '0' ile '59' arasındadır.
hour - saat ve 24 saatlik biçimde belirtilir.
day_of_month- Ayın Günü ve Örneğin, 10 1 ve 31 olduğunu inci her ayın 10'dur.
month - Ay belirtilir ve sayısal olarak (0-12) veya ayın adı olarak (ör. Mayıs) belirtilir.
day_of_week - Haftanın günü sayısal olarak (0-7) veya günün adı olarak (örn. Paz) belirtilir.
user - Komutun altında çalıştığı kullanıcı hesabı.
cmd - Gerçek komut ve argümanları.
Hiçbir şey atanmamışsa burada * değiştirilir.
Tuz Arayan (tuz çağrısı)
Salt bir CLI (Komut Satırı Arayüzü) sağlar, salt-callsalt komutunu kullanarak ana sunucu yerine yerel minion sistemindeki modülleri çalıştırmak için. Salt call CLI, salt komutu tarafından desteklenen tüm seçenekleri destekler, ancak yerel olarak çalışır.
Salt Caller başlangıçta hata ayıklamayı desteklemek için tasarlandı, ancak şimdi bağımsız bir uygulama olarak kullanılabilir.
salt-call test.ping
Cron'da salt-call kullanma
Tuz çağrısı CLI, Cron kullanarak tuz işleminin planlanması için kullanışlıdır. Örneğin, her gün gece yarısı minionun durumunu kontrol etmek için, aşağıda gösterildiği gibi - state.apply seçeneğiyle birlikte salt-call kullanabiliriz.
/etc/crontab
PATH = /bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/opt/bin
0 0 * * * salt-call state.apply
Buraya,
state.apply işlevi minion için tuz yapılandırma dosyasını kontrol edecek ve minion için tanımlanan tüm eylemlerin doğru şekilde yapılandırılıp yapılandırılmadığını kontrol edecektir.
Yolun ayarlanması iyi bir uygulamadır çünkü bazen sistem yolunda salt komutu bulunmayabilir.
Bir sonraki bölümde, Salt'ın temel bir kavramı olan Uzaktan Yürütmeyi öğreneceğiz.
Salt'ın temel kavramlarından biri uzaktan yürütmedir. Salt, birkaç saniye içinde binlerce sistemde komutlar yürütebilir. Salt, bu işlevi gerçekleştirmek için kendi komutunu kullanır. Şimdi, bölümdeki uzaktan çalıştırma için farklı Salt komutlarını anlayalım.
Tuz Komutu
Tuz komutu, Tuz ustasının bir veya daha fazla Salt minions. Temel sözdizimi aşağıdaki gibidir,
salt '<target>' <module.function> [arguments]
Yukarıdaki komut sözdizimi aşağıdaki üç ana bileşenden oluşur.
target - Komut ile hangi sistemlerin uygulanacağını belirler.
module.function- Bu bir emirdir. Komutlar bir modül ve işlevden oluşur.
arguments - İşlevi çağırmak için gereken ek veriler.
Her bir bileşeni ayrıntılı olarak anlayalım.
Hedef Bileşen nedir?
Hedef, işlevi çalıştırmak için minyonları (yönetilen sistem) filtrelemenize izin veren bir bileşendir. Hedef bileşeni kullanan basit bir komut aşağıda tanımlanmıştır.
salt '*' test.ping
Aşağıdakileri üretecek output -
minion2:
True
minion1:
True
İşte hedef ‘*’yönetilen tüm sistemleri temsil eder. 'testburada bir modül ve pingbir işlevdir. Bu, uzak sistemdeki ping hizmetini test etmek için kullanılır. Sonraki bölümlerde farklı modüller ve işlevleri hakkında bilgi edineceğiz.
ID kullanan hedefler (minion)
Belirli bir minyona komutunu kullanarak komut gönderebilirsiniz. idhedefte. Kullanmak yerine'*', kullanarak değiştirebilirsiniz minion id. Aşağıda tanımlanmıştır.
salt 'minion1’ test.ping
Aşağıdakileri üretecek output -
minion1:
True
Normal İfade kullanan hedefler
Hedefler, belirli bir düzenli ifadeye göre filtrelenebilir. Aşağıda tanımlanmıştır.
salt -E 'minion[0-9]' test.ping
Aşağıdakileri üretecek output -
minion2:
True
minion1:
True
Listeyi kullanan hedefler
Hedefler, bir listede açıkça belirtilebilir. Aşağıdaki kod bloğunda tanımlanmıştır.
salt -L 'minion1,minion2' test.ping
Aşağıdakileri üretecek output -
minion2:
True
minion1:
True
Koşula Göre Hedefler
Hedefler, aşağıdaki kod bloğunda gösterildiği gibi tek bir komutta birleştirilebilir.
salt -C 'G@os:Ubuntu and minion* or [email protected].*' test.ping
Aşağıdakileri üretecek output -
minion1:
True
minion2:
True
Modül ve Fonksiyonlar (modül fonksiyonu)
Salt, kabuk komutlarını çalıştırabilir; yönetilen tüm sistemlerinde aynı anda paketleri güncellemek ve dosyaları vb. dağıtmak. Salt bu işlemleri modüller kullanarak yapar. Salt, mevcut tüm işlevler için özel modüllere sahiptir. Bu bölümdeki bazı basit örnekleri kullanarak farklı Tuz modüllerini anlayalım.
Kabuk Komutu
Salt, çoklu sistemlerde kabuk komutlarını uzaktan çalıştırır. cmd.runkomut. cmd ana modül ve run mevcut işlevlerden biridir. cmdmodül. run işlevi, aşağıdaki kod bloğunda gösterildiği gibi uzak sistemde herhangi bir kabuk komutunun yürütülmesini sağlar.
salt '*' cmd.run 'ls -l /etc'
Aşağıdakileri üretecek output -
minion2:
total 868
drwxr-xr-x 7 root root 4096 Jan 26 22:10 X11
drwxr-xr-x 3 root root 4096 Jan 26 21:02 acpi
-rw-r--r-- 1 root root 2981 Jan 26 20:48 adduser.conf
-rw-r--r-- 1 root root 10 Jan 26 21:04 adjtime
drwxr-xr-x 2 root root 4096 Jan 26 22:10 alternatives
drwxr-xr-x 3 root root 4096 Jan 26 20:53 apm
drwxr-xr-x 3 root root 4096 Jan 26 21:02 apparmor
drwxr-xr-x 9 root root 4096 Jan 26 21:02 apparmor.d
drwxr-xr-x 3 root root 4096 Jan 26 21:02 apport
drwxr-xr-x 6 root root 4096 Jan 29 07:14 apt
drwxr-xr-x 2 root root 4096 Jan 26 22:10 at-spi2
……………
……………
minion1:
total 868
drwxr-xr-x 7 root root 4096 Jan 26 22:10 X11
drwxr-xr-x 3 root root 4096 Jan 26 21:02 acpi
-rw-r--r-- 1 root root 2981 Jan 26 20:48 adduser.conf
-rw-r--r-- 1 root root 10 Jan 26 21:04 adjtime
drwxr-xr-x 2 root root 4096 Jan 26 22:10 alternatives
drwxr-xr-x 3 root root 4096 Jan 26 20:53 apm
drwxr-xr-x 3 root root 4096 Jan 26 21:02 apparmor
drwxr-xr-x 9 root root 4096 Jan 26 21:02 apparmor.d
drwxr-xr-x 3 root root 4096 Jan 26 21:02 apport
drwxr-xr-x 6 root root 4096 Jan 29 07:09 apt
drwxr-xr-x 2 root root 4096 Jan 26 22:10 at-spi2
-rw-r----- 1 root daemon 144 Oct 21 2013 at.deny
-rw-r--r-- 1 root root 2177 Apr 9 2014 bash.bashrc
-rw-r--r-- 1 root root 45 Mar 22 2014 bash_completion
……………
……………
Disk Kullanımını Göster
Tuz özel bir modül sağlar, diskyönetilen sistemin tüm disk ayrıntılarını almak için. diskmodule var usage ayrıntıları sorgulama işlevi.
salt '*' disk.usage
Aşağıdakileri üretecek output -
minion1:
----------
/:
----------
1K-blocks:
41251136
available:
37852804
capacity:
5%
filesystem:
/dev/sda1
used:
1662420
/dev:
----------
1K-blocks:
503908
available:
503896
capacity:
1%
filesystem:
udev
used:
12
/run:
----------
1K-blocks:
101780
available:
101412
capacity:
1%
filesystem:
tmpfs
used:
368
/run/lock:
----------
1K-blocks:
5120
available:
5120
capacity:
0%
filesystem:
none
used:
0
/run/shm:
----------
1K-blocks:
508884
available:
508872
capacity:
1%
filesystem:
none
used:
12
/run/user:
----------
1K-blocks:
102400
available:
102400
capacity:
0%
filesystem:
none
used:
0
/sys/fs/cgroup:
----------
1K-blocks:
4
available:
4
capacity:
0%
filesystem:
none
used:
0
/vagrant:
----------
1K-blocks:
303114632
available:
252331440
capacity:
17%
filesystem:
none
used:
50783192
minion2:
----------
/:
----------
1K-blocks:
41251136
available:
37852804
capacity:
5%
filesystem:
/dev/sda1
used:
1662420
/dev:
----------
1K-blocks:
503908
available:
503896
capacity:
1%
filesystem:
udev
used:
12
/run:
----------
1K-blocks:
101780
available:
101412
capacity:
1%
filesystem:
tmpfs
used:
368
/run/lock:
----------
1K-blocks:
5120
available:
5120
capacity:
0%
filesystem:
none
used:
0
/run/shm:
----------
1K-blocks:
508884
available:
508872
capacity:
1%
filesystem:
none
used:
12
/run/user:
----------
1K-blocks:
102400
available:
102400
capacity:
0%
filesystem:
none
used:
0
/sys/fs/cgroup:
----------
1K-blocks:
4
available:
4
capacity:
0%
filesystem:
none
used:
0
/vagrant:
----------
1K-blocks:
303114632
available:
252331440
capacity:
17%
filesystem:
none
used:
50783192
Ağ arayüzleri
Salt, yönetilen sistemler hakkında ağ arabirim bilgilerini sorgulamak için modül içinde ayrı bir modül, ağ ve işlev, arabirimler sağlar.
salt '*' network.interfaces
Aşağıdakileri üretecek output -
minion1:
----------
eth0:
----------
hwaddr:
08:00:27:04:3e:28
inet:
|_
----------
address:
10.0.2.15
broadcast:
10.0.2.255
label:
eth0
netmask:
255.255.255.0
inet6:
|_
----------
address:
fe80::a00:27ff:fe04:3e28
prefixlen:
64
scope:
link
up:
True
eth1:
----------
hwaddr:
08:00:27:34:10:52
inet:
|_
----------
address:
192.168.50.11
broadcast:
192.168.50.255
label:
eth1
netmask:
255.255.255.0
inet6:
|_
----------
address:
fe80::a00:27ff:fe34:1052
prefixlen:
64
scope:
link
up:
True
lo:
----------
hwaddr:
00:00:00:00:00:00
inet:
|_
----------
address:
127.0.0.1
broadcast:
None
label:
lo
netmask:
255.0.0.0
inet6:
|_
----------
address:
::1
prefixlen:
128
scope:
host
up:
True
minion2:
----------
eth0:
----------
hwaddr:
08:00:27:04:3e:28
inet:
|_
----------
address:
10.0.2.15
broadcast:
10.0.2.255
label:
eth0
netmask:
255.255.255.0
inet6:
|_
----------
address:
fe80::a00:27ff:fe04:3e28
prefixlen:
64
scope:
link
up:
True
eth1:
----------
hwaddr:
08:00:27:a7:31:8e
inet:
|_
----------
address:
192.168.50.12
broadcast:
192.168.50.255
label:
eth1
netmask:
255.255.255.0
inet6:
|_
----------
address:
fe80::a00:27ff:fea7:318e
prefixlen:
64
scope:
link
up:
True
lo:
----------
hwaddr:
00:00:00:00:00:00
inet:
|_
----------
address:
127.0.0.1
broadcast:
None
label:
lo
netmask:
255.0.0.0
inet6:
|_
----------
address:
::1
prefixlen:
128
scope:
host
up:
True
sys.doc Yürütme Modülü
Tuz fonksiyonları, sys.docyürütme modülü. Bu, herhangi bir modülle ilgili ayrıntıları doğrudan komut satırından almak için kullanılır. Tuz fonksiyonları kendi kendini belgeliyor. Tüm işlev belgeleri, aşağıda tanımlanan sys.doc () işlevi aracılığıyla minyonlardan alınabilir.
salt '*' sys.doc
Bir İşlev Çağrısı için Bağımsız Değişkenler
Bağımsız değişkenler, işlev çağrısı için ek veri sağlamak için kullanılır. Aşağıda basit bir argüman örneği verilmiştir.
salt '*' sys.doc pkg.install
İşte argüman pkg.install belirli paketleri kurmak için bir modüldür.
Python Fonksiyonu
Bağımsız değişkenler, işlevin boşlukla sınırlandırılmış parametreleridir. Python kodunun aşağıda verildiği gibi argümanlar olarak aktarılmasına izin verir.
salt '*' cmd.exec_code python 'import sys;print sys.version'
Aşağıdakileri üretecek output -
minion2:
2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4]
minion1:
2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4]
Benzer şekilde, isteğe bağlı anahtar kelimeleri ve YAML biçimi de.
Yapılandırma yönetimi, SaltStack'teki en önemli kavramlardan biridir. Yeniden kullanılabilir bir yapılandırma şablonu oluşturmak için kullanılır.state. Durum, bir sistem bileşenini veya bir uygulamayı bilinen bir konfigürasyona yerleştirmek için gereken her şeyi açıklar.
Tuz Durumu
Tuz durumu, bir sistemin belirli bir bölümü için yeniden kullanılabilir bir yapılandırmadır. Durumların anlaşılması ve basit bir YAML kullanılarak açıklanması daha kolaydır.
Bir Tuz Durumu Oluşturun
Tuz durumlarının oluşturulması kolaydır. Bu bölümde basit bir durum oluşturalım. "Salt-vagrant-demo / saltstack / salt /" dizinine gidin ve adlı bir dosya oluşturunsamples.sls ve aşağıdaki satırları içine ekleyin.
samples.sls
install_network_packages:
pkg.installed:
- pkgs:
- rsync
- lftp
- curl
Şimdi, dosyayı kaydedin ve Tuz ana aygıtında aşağıdaki komutu çalıştırın.
root@saltmaster:/home/vagrant# salt 'minion1’ state.apply samples
Burada kurduk rsync, lftp ve curl içinden pkg.installed tuz minionunda Tuz durumunu kullanan modül, minion1. Düzgün çalışıyorsa, yanıtı aşağıda gösterildiği gibi görebilirsiniz.
Aşağıdakileri üretecek output -
minion1:
----------
ID: install_network_packages
Function: pkg.installed
Result: True
Comment: All specified packages are already installed
Started: 08:08:48.612336
Duration: 545.385 ms
Changes:
Summary for minion1
------------
Succeeded: 1
Failed: 0
------------
Total states run: 1
Total run time: 545.385 ms
Tuz Durumunu Uygula
Artık '.sls' dosyasını kullanarak bir durum oluşturduk ve onu özel olarak çağırarak uyguladık. Salt'ın varsayılan bir durum dosyası vardır.top.slsdosya. En üstteki dosya, birden fazla durum dosyasını Salt minyonlarına uygulamak için kullanılır. En üstteki dosya, durumların nerede uygulanması gerektiğini açıklar. İyi,States ve Top file SaltStack'in yapılandırma yönetimi kapasitesinin temelini oluşturmak için birlikte çalışın.
Şimdi dizinde basit bir top.sls dosyası oluşturalım saltstack/salt ve aşağıdakileri ekleyin.
top.sls
base:
'*':
- common
'minion1':
- samples
Burada state, genellikle applies -e all system durum, samples için geçerlidir minion1.
Ardından, Tuz master'ı çalıştırın ve durumu aşağıda gösterildiği gibi uygulayın.
root@saltmaster:/home/vagrant# salt '*' state.apply
Aşağıdakileri üretecek output -
minion1:
----------
ID: common_packages
Function: pkg.installed
Result: True
Comment: All specified packages are already installed
Started: 09:33:35.642355
Duration: 588.21 ms
Changes:
Summary for minion1
------------
Succeeded: 1
Failed: 0
------------
Total states run: 1
Total run time: 588.210 ms
minion2:
----------
ID: common_packages
Function: pkg.installed
Result: True
Comment: All specified packages are already installed
Started: 09:33:35.890331
Duration: 602.79 ms
Changes:
Summary for minion2
------------
Succeeded: 1
Failed: 0
------------
Total states run: 1
Total run time: 602.790 ms
Toplu İş Boyutunu Uygula
Çok sayıda bağlı minyonunuz varsa, o zaman aynı anda kaç sistemin güncelleneceğini sınırlayabilirsiniz. Kullanılarak yapılır–batch-size aşağıda tanımlanan seçenek.
root@saltmaster:/home/vagrant# salt --batch-size 5 '*' state.apply
Aşağıdakileri üretecek output -
Executing run on ['minion2', 'minion1']
jid:
20170314094638482664
minion1:
----------
ID: common_packages
Function: pkg.installed
Result: True
Comment: All specified packages are already installed
Started: 09:46:41.228519
Duration: 582.24 ms
Changes:
Summary for minion1
------------
Succeeded: 1
Failed: 0
------------
Total states run: 1
Total run time: 582.240 ms
retcode:
0
jid:
20170314094638482664
minion2:
----------
ID: common_packages
Function: pkg.installed
Result: True
Comment: All specified packages are already installed
Started: 09:46:41.153609
Duration: 605.235 ms
Changes:
Summary for minion2
------------
Succeeded: 1
Failed: 0
------------
Total states run: 1
Total run time: 605.235 ms
retcode:
0
Tuz Durumu İşlevleri
Tuz durumu işlevleri, uygulamaları uzaktaki sisteminize yüklemek ve yapılandırmak için kullanılır. Tuz durumu işlevini kullanarak bir "Vim" paketi kuralım.
Durum İşlevini Oluşturun ve Uygulayın
"Salt-vagrant-demo / saltstack / salt / sample.sls" dizini altında "sample.sls" adlı bir dosya oluşturun ve aşağıdakileri ekleyin -
sample.sls
install vim:
pkg.installed:
- name: vim
Vagrant ortamı açıldığında, salt master'ı çalıştırın ve aşağıdaki komutu çalıştırarak sample.sls'yi uygulayın.
root@saltmaster:/home/vagrant# sudo salt 'minion2’ state.apply sample
Aşağıdakileri üretecek output -
minion2:
----------
ID: install vim
Function: pkg.installed
Name: vim
Result: True
Comment: Package vim is installed
Started: 15:07:45.752764
Duration: 553.506 ms
Changes:
Summary for minion2
------------
Succeeded: 1
Failed: 0
------------
Total states run: 1
Total run time: 553.506 ms
Şimdi bir "Vim" paketi ekledik. Şimdi paketi Tuz testi yöntemini kullanarak test edelim.
Tuz Durumu Testi
Durumlara "test = True" seçeneği eklenerek test çalıştırması zorunludur. Dönüş bilgileri sarı renkte uygulanacak durumları gösterecek ve sonuç 'Yok' olarak bildirilecektir.
Durumu test etmek için aşağıdaki komut kullanılır -
root@saltmaster:/home/vagrant# sudo salt 'minion2’ state.apply sample test = True
Aşağıdakileri üretecek output -
minion2:
----------
ID: install vim
Function: pkg.installed
Name: vim
Result: True
Comment: Package vim is already installed
Started: 15:07:45.752764
Duration: 553.506 ms
Changes:
Summary for minion2
------------
Succeeded: 1
Failed: 0
------------
Total states run: 1
Total run time: 553.506 ms
SaltStack ─ Pillar Bileşeni
Sütun, Tuz durumlarını yeniden kullanılabilir hale getirmek için önemli bir bileşendir. Hedefler kullanılarak atanan minyonlar için güvenli verileri tanımlamak için kullanılır. Salt pillar verileri, bağlantı noktaları, dosya yolları, yapılandırma parametreleri ve parolalar gibi değerleri depolar.
Pillar yapılandırma Dosyası
İçin konfigürasyon pillar_roots ana yapılandırma dosyasında aşağıda gösterilmiştir -
pillar_roots:
base:
- /srv/pillar
Burada dosya "/ srv / pillar" dizinindedir.
/Srv/pillar/top.sls içinde bulunan en üstteki dosyanın aşağıdaki yapıya sahip olduğunu düşünün:
base:
'*':
- default
Şimdi, /srv/pillar/default.sls konumunda bulunan default.sls dosyasına gidin ve aşağıdaki kodu ekleyin.
# Default pillar values
apache
git
Dosyayı kaydettikten sonra, tüm değişiklikleri güncellemek için sütunu yenileyin.
Sütunu Yenilemek
Aşağıdaki komutu kullanarak sütunu yenileyebilirsiniz.
root@saltmaster:/home/vagrant# salt '*' saltutil.refresh_pillar
Yukarıdaki komut, tüm minyonlarda Tuz sütunu verilerini yenilemek için kullanılır.
Sütun Verilerini Listele
Sütun verilerini listelemek için aşağıda verilen komutu kullanabilirsiniz.
root@saltmaster:/home/vagrant# salt '*' pillar.ls
Aşağıdakileri üretecek output -
minion2:
- apache
- git
minion1:
- apache
- git
Sütun Öğeleri
Sütun kurulduktan sonra veriler, sütun modülü aracılığıyla minion üzerinde görüntülenebilir. İşlev aracılığıyla erişilebilirpillar.itemsaşağıda tanımlanan.
root@saltmaster:/home/vagrant# salt '*' pillar.items
Aşağıdakileri üretecek output -
minion2:
----------
apache:
httpd
git:
git
minion1:
----------
apache:
httpd
git:
git
SaltStack - Bileşeni Dahil Et
'Dahil Et' bileşeni, aynı yapılandırma görevini birden çok yerde tanımlamak için kullanılır. Yapması kolaydır. Durum dosyanızın üst kısmına aşağıdaki biçimi kullanarak bir ekleme ekleyin -
include:
- state file 1
- state file 2
Buraya, state file 1 ve state file 2dahil etmek istediğiniz SLS dosyalarının adlarıdır. Eklemeye gerek yok.slsuzantı. Dahil Edilen Tuz durumları, mevcut dosyanın en üstüne eklenir.
Alt Dizindeki Durum Dosyası
Bir nokta (.) Kullanarak alt dizin durum dosyasını dahil edebilirsiniz. Bir dizin ayırıcı görevi görür.
include:
- dir.sls1
Tahıl Arayüzü
Taneler, temeldeki sistem hakkında bilgi elde etmek için kullanılan bir arayüzdür. İşletim sistemi, etki alanı adı, IP adresi, çekirdek, işletim sistemi türü, bellek ve diğer birçok sistem özelliği için tahıllar toplanır.
Tahıl Hedefleme
Aşağıdaki kod bloğunda tanımlanan minyonları hedeflerken tahıl verileri kullanılabilir.
root@saltmaster:/home/vagrant# salt -G 'os:Ubuntu' test.ping
Aşağıdakileri üretecek output -
minion1:
True
minion2:
True
Tahıl Listeleme
Tahıllar aşağıda tanımlanan 'grains.ls' modülü kullanılarak listelenebilir.
root@saltmaster:/home/vagrant# salt '*' grains.ls
Öğeleri Listele
Pillar gibi, Tahıl verileri de "grains.items" kullanılarak listelenebilir.
root@saltmaster:/home/vagrant# salt '*' grains.items
Günlüğe kaydetme, çalışan yazılım olaylarını izlemek için kullanılır. Bir olay, isteğe bağlı olarak değişken verileri içerebilen açıklayıcı bir mesajla açıklanır. Tuz kaydı yaklaşımı, karşılaşabileceğiniz herhangi bir sorunu çözmek için kullanılır. Belirli günlük seviyeleri ile kontrol edebilirsiniz.
Yapılandırma ayarları
Günlük kaydı için farklı yapılandırma ayarlarını ayrıntılı olarak anlayalım.
LOG DOSYASI
Tuz günlük kayıtları, yerel yol adını veya tanımlama için ağ konumunu içeren dosyadan geçirilir. Bu dosya, günlük dosyası olarak kabul edilir.
log_file: /var/log/salt/master
Burada, ikiliye bağlı olan dosya ana bilgisayarda yürütülüyor. Benzer şekilde, aşağıda gösterilen minyonda da uygulayabilirsiniz.
log_file: /var/log/salt/minion
Uzak adresi de kullanabilirsiniz. Uzak adresi kullanmak için sözdizimi - <dosya | udp | tcp>: // <ana bilgisayar | soket yolu>: <bağlantı noktası gerekiyorsa> / <günlük-tesis> şeklindedir.
log_file: udp://loghost:port
Burada, Günlük tesisi varsayılan olarak LOG_USER'dır.
LOG_LEVEL
Günlük seviyeleri, sayısal olarak atanan bir değerde sıralanır. Python kitaplığı, varsayılan olarak günlük kaydı düzeylerinin çoğunu tanımlamıştır. Buna ek olarak, Tuz biraz daha fazla seviye kullanır. Bazı seviyeler aşağıda açıklanmıştır.
log_level: error; level value is 40 - Hatalı günlük deyimi kaydını gösterir.
log_level: quiet; level value is 1000 - Bu düzeyde hiçbir şeyin günlüğe kaydedilmemesi gerektiğini gösterir.
log_level: info; level value is 20 - Normal günlük bilgilerini gösterir.
log_level: warn; level value is 30 - Uyarı anında günlük bildirim kaydını gösterir.
log_level: debug; level value is 10 - Hem tuz uygulamalarında hem de tuz kodunda hata ayıklamak için yararlı bilgiler.
log_level: trace; level value is 5 - Daha ayrıntılı kod hata ayıklama bilgileri.
LOG_LEVEL_LOGFILE
Günlük dosyasına gönderilecek mesajların düzeyini tanımlar.
log_level_logfile: info
LOG_DATEFMT
Günlük tarih formatını tanımlar. Varsayılan olarak,% Y-% m-% d% H:% M:% S şeklinde temsil edilir.
log_datefmt_logfile: '%Y-%m-%d %H:%M:%S'
LOG_FMT_CONSOLE
Mesajları günlüğe kaydeden konsolun formatını tanımlar. Tuz bir gelenek kullanırLogRecordkonsol günlük çıktısını renklendirmek için özellikler. Aşağıdaki sözdizimini izler -
'%(colorlevel)s' # log level name colorized by level
'%(colorname)s' # colorized module name
'%(colorprocess)s' # colorized process number
'%(colormsg)s' # colorized messages name
LOG_FMT_LOGFILE
Mesajları günlüğe kaydeden günlük dosyasının formatını tanımlar. Temel sözdizimi aşağıdaki gibidir -
%(asctime)s,%(msecs)03d [%(name)-17s][%(levelname)-8s] %(message)s
LOG_GRANULAR_LEVELS
Bu seviye, günlük kaydı seviyelerini daha spesifik olarak kontrol etmek için kullanılır.
log_granular_levels:
'salt': 'info'
'salt.modules': ‘trace'
Burada, 'bilgi' düzeyindeki Ana tuz kitaplığı, salt.modules izleme düzeyinde oturum açmak için.
Harici Günlük İşleyicisi
Salt, günlük kaydı için LogStash ve Sentry harici günlük işleyicisini kullanır. Bu bölümde ayrıntılı olarak anlayalım.
LOGSTASH İşleyici
LogStash açık bir kaynaktır; sunucu tarafı güvenli veri işleme hattı. Salt'ta LogStash kullanan basit bir UDP günlük işleyicisini düşünelim.
Salt ana dosyasında aşağıdaki değişiklikleri belirtin -
logstash_udp_handler:
host: 127.0.0.1
port: 9999
version: 1
msg_type: logstash
Ardından değişiklikleri Logstash yapılandırma dosyasına ekleyin -
input {
udp {
port ⇒ 9999
codec ⇒ json
}
}
Buraya, UDP - bir biçime sahip olması gereken girdidir json_event, biz de tel üzerinden gönderdiklerimiz.
SENTRY Günlük İşleyicisi
Sentry, üretim dağıtımlarında gerçek zamanlı hata takibi ve çökmeleri yeniden oluşturmak ve düzeltmek için gereken bilgilerdir. Ana dosyadaki varsayılan konfigürasyon aşağıda tanımlanmıştır.
sentry_handler:
dsn: https://pub-key:[email protected]/app-id
log_level: debug
Burada, nöbetçi işleyici için varsayılan günlük kaydı seviyesi HATA'dır, ancak hata ayıklamayı tanımladık log_level sentry_handler yapılandırma anahtarı altında.
Salt, uzaktaki bir sistemde komutları kullanarak salt-minion. Bu normal bir davranıştır. Bazı senaryolarda, uzaktaki sisteme yalnızca SSH protokolü ile erişilebilir. Bu senaryolar için Salt, uzak sistemi yalnızca SSH protokolünü kullanarak bağlama ve komutu SSH katmanı üzerinden yürütme seçeneği sunar.
Salt SSHyapılandırması çok kolaydır. Gerekli olan tek yapılandırma, uzaktaki sistem ayrıntılarını, adı verilen özel bir dosyada belirtmektir.Roster file. Bu liste dosyası normalde şurada bulunur:/etc/salt/roster. Görev listesi dosyası, uzaktaki sistemle ve ona nasıl bağlanabileceğimizle ilgili tüm bilgileri içerecektir. Görev listesi dosyaları yapılandırıldıktan sonra, tüm Salt komutları,salt-ssh tuz komutu yerine.
Liste Dosyası
Kadro Sistemi, Salt SSH için özel olarak tasarlanmıştır. Bu, tak-çıkar bir sistem olarak tasarlanmıştır. Kadro sisteminin tek amacı, uzaktaki sistem hakkında bilgi toplamaktır. İsim listesi dosyası birYAML based configuration file uzak sistem bilgilerini içeren targets. Bu hedefler, önceden tanımlanmış niteliklere sahip özel bir veri yapısıdır. Bir liste dosyası bir veya daha fazla hedef içerir ve her hedef, birSalt ID.
Görev listesi dosyasının temel yapısı aşağıdaki gibidir -
<Salt ID>:
host: <host name>
user: <user name>
passwd: <password of the user>
Görev listesi dosyası tarafından desteklenen diğer tüm öznitelikler isteğe bağlıdır. Bunlar aşağıdaki gibidir -
port - SSH bağlantı noktası numarası.
sudo - komutun sudo aracılığıyla çalıştırılıp çalıştırılmayacağı.
sudo_user - sudo kullanıcı adı.
tty - sudo etkinse true.
priv - özel anahtar.
timeout - SSH bağlantısı için zaman aşımı.
minion_opts - minion seçenekleri sözlüğü.
thin_dir - tuz bileşenleri için hedef sistemin depolama dizini.
cmd_umask - tuz çağrısı komutunu zorlamak için umask.
Örnek liste dosyası aşağıdaki gibidir -
web:
host: 192.168.2.1
user: webuser
passwd: secret
sudo: True
db:
host: 192.168.2.2
SSH Anahtarlarını Dağıtın
Salt SSH, SSH girişleri için varsayılan bir genel / özel anahtar çiftleri oluşturacaktır. Varsayılan yol /etc/salt/pki/master/ssh/salt-ssh.rsa olacaktır. Bu anahtar, uzaktaki sisteme,ssh-copy-id komutu aşağıda gösterildiği gibi.
ssh-copy-id -i /etc/salt/pki/master/ssh/salt-ssh.rsa.pub [email protected]
Komutu çalıştır
Bir salt komutunu yürütmek, salt cli emir vermek salt-ssh Aşağıda gösterildiği gibi.
salt-ssh '*' test.ping
Ham Kabuk Komutu
Salt SSH, tuz modülünü ve işlevlerini atlayarak uzak sistemde ham bir komutu yürütmek için bir seçenek (-r) sağlar.
salt-ssh '*' -r 'ls'
Salt SSH ile hedefleme
Salt SSH'de uzak sistemi hedeflemek yalnızca glob ve regex hedeflerini destekler. Salt SSH ayrı bir modül olduğu için şimdilik sadece sınırlı seçenekler sunuyor ve yakın gelecekte daha fazla özellik sağlayacak.
Tuz, ayrı bir modül sağlar, Salt Cloud Amazon AWS, Google Compute, vb. gibi çeşitli bulut sağlayıcılarının sanal makinelerini sağlamak için Salt Cloud, çeşitli bulut sağlayıcılarının sanal makinelerini yapılandırmak ve yönetmek için genel bir arayüzdür.
Cloud Config- Salt Cloud için ana yapılandırma dosyası / etc / salt / cloud'dur ve tüm VM'ler için geçerlidir. Ana konfigürasyon dosyasıCloud Config.
Cloud Providers - Belirli bulut sağlayıcılarını hedeflemek için, belirli yapılandırma dosyasını kullanabiliriz ve bunlar /etc/salt/cloud.providers.d/*.conf'da bulunur, bunlar şu şekilde adlandırılır: Cloud Providers.
Cloud Profiles - Belirli bir sanal makineyi hedeflemek için, yalnızca söz konusu sanal makine için geçerli olan ve /etc/salt/cloud.profiles.d/*.conf adresinde bulunan özel bir yapılandırma dosyası da kullanabiliriz, bunlar şu şekilde adlandırılır: Cloud Profiles.
Bir sanal makine için, Cloud Config önce ve sonra Cloud Providers ve son olarak geçersiz kılma işlemi Cloud Profiles.
Tuz Bulutu Kurulumu
Varsayılan olarak, Tuz Bulutu, Tuzun içine yerleştirilmiştir ve kullanıma hazırdır. Mevcut değilse aşağıdaki komutu kullanarak kurabiliriz.
pip install salt-cloud
Salt Cloud ayrı bir modül olduğu ve kendi sürecinde çalıştığı için Salt Master yerine Salt Minion sistemine de kurulabilir.
Bir Sanal Makine Sağlama
Bir sanal makine sağlamak için bir bulut sağlayıcı ve bir bulut profili tanımlamamız gerekiyor. Her ikisi de oluşturulduktan sonra, onu kullanmak için yeni bir sanal makine sağlayabiliriz.
Bulut Sağlayıcı
Bulut ana bilgisayar bilgileri, Bulut sağlayıcı yapılandırma dosyasında yapılandırılır. Normalde yapılandırılması gereken temel bilgiler bulut sürücüsü, kullanıcı adı, parola, özel anahtar vb'dir.my-amazon-cloud.
/Etc/salt/cloud.providers.d/ altında my-amazon-cloud.conf adlı bir dosya oluşturun
Kullanarak yeni bir sağlayıcı ekleyin ec2 sürücü.
my-amazon-cloud:
driver: ec2
id: '<AWS_ID>'
key: '<AWS_KEY>'
private_key: /path/to/privatekey.pem
keyname: <name of the key>
securitygroup: default
minion:
master: <master server>
Salt, GoGrid, HP Cloud, Google Compute Engine (GCE), Amazon AWS, Joyent, Linode, OpenNebula, ProfitBricks, Proxmox, Saltify, VexxHost, VMWare gibi kutudan çıkmış çeşitli bulut ana bilgisayar sürücüleri sağlar.
Bulut sağlayıcıları yapılandırıldıktan sonra, sağlayıcının mevcut konumunu, mevcut makine görüntülerini ve çeşitli boyutlarını sorgulayabiliriz.
salt-cloud --list-location my-amazon-cloud
salt-cloud --list-images my-amazon-cloud
salt-cloud --list-sizes my-amazon-cloud
Bulut Profili
Bir Bulut profili, sanal makine görüntüsünü ve boyutunu belirtir. - /etc/salt/cloud.profiles.d/ altında yapılandırılabilir. Basit bir profil oluşturalım,simple.conf.
aws_micro:
provider: my-amazon-cloud
image: <image_id>
size: <machine_id e.g. t1.micro>
Sanal makine
Sağlayıcı ve profiller yapılandırıldıktan sonra, tuz bulutunu kullanarak aşağıda gösterildiği gibi kolayca bir sanal makine sağlayabiliriz.
salt-cloud -p aws_micro master minion1 minion2
Nerede, p - Profil adı master, minion1 ve minion2 yeni sanal makinelerdir.
Yeni oluşturulan sanal makinenin detayları aşağıdaki komut kullanılarak elde edilebilir.
salt-cloud --query
Sanal makineler aşağıdaki komut kullanılarak yok edilebilir -
slat-cloud -d master minion1
Bulut Haritası
Bulut Haritası, aynı anda birden çok sanal makine oluşturmak için özel bir formattır. Harita dosyasının biçimi, profili belirlemek ve ardından altına sanal makinelerin bir listesini eklemektir.
Örnek bir harita dosyası aşağıdaki gibidir -
micro:
- web1
- web2
large:
- db1
- db2
Harita dosyası, sanal makineyi aşağıdaki gibi oluşturmak için salt-cloud komutuna bir argüman olarak aktarılabilir -
salt-cloud -m /path/to/mapfile
Yönlendirici, ağ donanımı vb.Gibi özel işletim sistemine, sınırlı belleğe ve yüksek güvenlik hususlarına sahip birçok cihaz vardır. Bu cihazlarda standardı yükleyemediksalt-minionve daha sonra bu sistemleri yönetemedi. Ancak Salt, bu kısıtlamanın üstesinden gelmek için yenilikçi bir teknoloji sağlar.
Salt, uzak sistemde çalışan REST hizmetini kullanarak uzak sistemi kontrol eden ayrı bir salt proxy minion modülüne sahiptir. Bu REST hizmeti, HTTP tabanlı bir web hizmetidir.Representational State Transfer (REST) konseptidir ve hem uygulaması hem de tüketmesi kolaydır.
Her cihaz, karmaşık uygulamaları yazmak için kendi SDK'sına ve geliştirme ortamına sahip olacaktır. Salt, cihazda Salt arayüz spesifikasyonuna göre bir REST servisinin geliştirilmesini bekler. Salt ayrıca REST web hizmetini yazmak için bir python modülü sağlar. Cihaz python destekliyorsa, REST web hizmetini geliştirmek kolay olacaktır.
REST web hizmeti geliştirilip uzak sistemde dağıtıldıktan sonra, Salt uzak cihazı, salt minion yerine REST web hizmetini kullanarak kontrol edecek şekilde yapılandırılabilir.
Çalışma Örneği
Kavramını öğrenelim salt proxy minioncanlı bir çalışma ortamı kullanmak. Canlı ortam için, hem ana hem de proxy minion için bir Linux sistemi seçtik. Sistemi salt minion yerine REST web servisini kullanarak kontrol edeceğiz.
REST Web Hizmetini Kurun ve Yapılandırın
Salt, katkıda modülünde proxyminion_rest_example olarak adlandırılan REST web hizmeti uygulamasının bir örneğini sağlar. Örnek web servisini kuralım.
Yüklemek ‘bottle’pip kullanarak. bottle command, web uygulaması geliştirmek için bir python web çerçevesidir.
pip install bottle = 0.12.8
İndir saltstack/salt-contribgithub'dan proje. Aksi takdirde, aşağıdaki komutu kullanarak projeyi klonlayın.
git clone https://github.com/saltstack/salt-contrib
Bir terminal açın ve şuraya gidin: salt-contrib dizin.
Bu tuz katkısı dizininin bir klasörü olacak, proxyminion_rest_example. Bu klasör, REST web hizmeti için örnek uygulama içerir. Proxyminion_rest_example klasörüne gidin.
REST web hizmetini başlatmak için aşağıdaki komutu çalıştırın.
python rest.py --address <your ip address> --port 8000
Bir tarayıcı açın ve http: // «ip adresiniz»: 8000 yükleyin. Bu, aşağıdaki ekran görüntüsünde gösterildiği gibi hizmetlerin ve paketlerin bulunduğu varsayılan sayfayı gösterecektir.
Şimdi, REST web hizmetini yapılandırdık ve REST web hizmetini sorgulamak ve sistemi kontrol etmek için salt proxy'nin nasıl yapılandırılacağını kontrol edecek.
Salt-Proxy'yi Yapılandır
Salt-Proxy'yi yapılandırmak için aşağıda verilen adımları izlemeliyiz.
Salt-proxy için ana düğümü belirlemeliyiz. / Etc / salt / proxy içindeki proxy yapılandırma dosyası konumunu düzenleyin ve aşağıdaki kodu girin.
master: <your ip address>
Temel sütun dosyasını değiştirin / oluşturun /srv/pillar/top.sls aşağıdaki kod bloğunda gösterildiği gibi.
base:
'p8000':
- p8000
Yeni bir sütun dosyası ekleyin, p8000.sls içinde /srv/pillar aşağıdaki kod bloğunda gösterildiği gibi.
proxy:
proxytype: rest_sample
url: http://<your ip address>:8000
Aşağıdaki komutu kullanarak hata ayıklama modunda salt-proxy'yi başlatın.
salt-proxy --proxyid = p8000 -l debug
Tuz kölesine benzer şekilde, salt-proxy key Aşağıda gösterildiği gibi.
salt-key -y -a p8000
The following keys are going to be accepted:
Unaccepted Keys:
p8000
Key for minion p8000 accepted.
Tuzu Çalıştırmak
Şimdi çalıştırın salt komut verin ve çağırın ping.test aşağıda gösterildiği gibi işlev görür.
salt p8000 test.ping
REST web hizmeti tarafından desteklenen herhangi bir işlevi kullanarak çalıştırabiliriz. saltbenzer olan salt-minion.
Örneğin, tahıl bilgisi aşağıdaki komut kullanılarak elde edilebilir.
salt p8000 grains.items
Salt'taki olay sistemi, tuz olaylarını ateşleyen yerel bir ZeroMQ PUB arayüzüdür. Aşağıdaki bileşenler tarafından gerçekleştirilir.
Event Sockets - Olayları yayınlamak için kullanılır.
Event library - Olayları dinlemek ve olayları tuz sistemine göndermek için kullanılır.
Tuz Ustası Etkinliği
Bir Tuz ustası, aşağıda ayrıntılı olarak açıklanan farklı olay türleri sağlar -
- Kimlik doğrulama olayları
- Olayları başlatın
- Önemli olaylar
- İş etkinlikleri
- Runner Etkinlikleri
- Durum Olayları
- Bulut Etkinlikleri
Olay türlerinin her birini ayrıntılı olarak inceleyelim.
Kimlik Doğrulama Olayları
Bu kimlik doğrulama olayları, bir minion usta ile bir kimlik doğrulama kontrolü yaptığında tetiklenir. Salt / auth ile temsil edilir.
Etkinlikleri Başlat
Başlangıç olayları, bir minyon Tuz ustasına her bağlandığında tetiklenir ve tuz / minyon // başlangıç ile temsil edilir.
Önemli olaylar
Anahtar olayları, tuz ustası Tuz minionundaki tuşları kabul edip reddederken tetiklenir. Tuz tuşu komutunu kullanarak bu olaya erişebilirsiniz.
İş Etkinlikleri
Yeni bir iş başlayacağı her seferinde bir İş etkinliği tetiklenir. Tarafından temsil edilmektedirsalt/job//new. Burada, JID - İş kimliği yeni - yeni iş
Runner Etkinlikleri
Bir koşucu yürütmeye başladığında, bir koşucu olayı tetiklenir. Salt / run // new ile temsil edilir.
Durum Olayları
Minyonlar bağlandığında veya yeni bağlandığında veya bağlantısı kesildiğinde, bu olay düzenli aralıklarla tetiklenir. Şununla temsil edilir -salt/presence/present ve salt/presence/change. Buraya,
Present - Tuz ustasının şu anda minyonlar listesine bağlı olduğu anlamına gelir.
Change - yeni bir minyonu tespit etmek için kullanılır - bağlı veya bağlantısı kesilmiş.
Bulut Etkinlikleri
Tuz bulutu olayları sanal bir makinede çalıştırılır. Diğer olaylar olmadıkça minyon üzerinde yapılmaz. Şunu kullanarak erişebilirsiniz -salt/cloud//creating. Bir Tuz bulutu, sanal makine yürütme sürecini başlattığında ateşlenir.
Etkinlik Araçları
Şimdi, etkinlik araçlarını ve senaryolarını inceleyelim. Olay veri yoluna CLI kullanarak erişebilirsiniz. Aşağıdaki komutla erişilir.
salt-run state.event pretty = True
Burada, koşucu harici araçlardan ve kabuk komut dosyalarından olay veri yolu ile etkileşime girecek şekilde tasarlanmıştır. Salt'ın olay veri yoluna uzaktan erişilebilir.REST API. - (örnek URL) ile temsil edilir.
curl -SsNk https://salt-api.example.com:8000/events?token = 05A3.
Benzer şekilde, olaylara Python komut dosyalarından da erişebilirsiniz.
Genel olarak, orchestrationsistemlerin otomatik koordinasyonu ve düzenlenmesidir. Orchestrate runner, orkestrasyonu SaltStack'te gerçekleştirmek için kullanılır.
Orkestrasyon Koşucusu
Orchestrate Runner, tüm işlevlerini sunar. OverState(önceki sistem). Başlangıçta olarak adlandırılırstate.slskoşucu. Bu orkestrasyon koşucusu, Tuz durumu sistemini bir Salt ana bağlamına genelleştirmek için kullanılır.
state.sls ve state.highstate işlevler her bir Tuz kölesinde yürütülür, ancak state.orchestratekoşucu master üzerinde yürütülür. state.orchestraterunner, tüm altyapınızı tamamen durum olarak yönetmenize izin verir. Basit bir yürütme sürecinden nasıl geçeceğimizi anlayalım.
Basit Yürütme
Orchestrate Runner komutu ile aynıdır. state.sls işlevini yerine getirir, ancak bunu tuz yerine “tuzla çalıştırma” ile yürütebilirsiniz.
Sahip olduğunuzu varsayın sample.sls dosya şu konumda /srv/salt/orch/samples.sls. Bu dosyaya aşağıdaki kodu ekleyin.
sample.sls
install_nginx:
salt.state:
- tgt: 'web*'
- sls:
- nginx
Aşağıdaki komut, ana bilgisayarda çalıştırmak için kullanılır ve o dosyada tanımlanan durumları uygular.
salt-run state.orchestrate orch.sample
Aşağıdakileri üretecek output -
saltmaster.local_master:
----------
ID: install_nginx
Function: salt.state
Result: True
Comment: States ran successfully.
Started: 11:54:56.308078
Duration: 63.401 ms
Changes:
Summary for saltmaster.local_master
------------
Succeeded: 1
Failed: 0
------------
Total states run: 1
Total run time: 63.401 ms
root@saltmaster:/home/vagrant#
Burada, Mevcut Sürüme göre, koşucu işlevi olarak yeniden adlandırıldı state.orchestrate. Bu, state.sls yürütme işlevi ile karışıklığı önlemek için yararlı olacaktır, ancak önceki sürümleristate.sls kullanılmalıdır.
İşlevi Yürüt
Bir işlevi yürütmek için, salt.function. Bir dosya düşünündata.sls da yerleşmiş /srv/salt/orch/data.sls. Şimdi, bu dosyaya aşağıdaki değişiklikleri ekleyin.
data.sls
cmd.run:
salt.function:
- tgt: '*'
- arg:
- rm -rf /tmp/data
Tuz işlevini yürütmek için aşağıdaki komut kullanılır.
root@saltmaster:/home/vagrant# salt-run state.orchestrate orch.data
Aşağıdakileri üretecek output -
saltmaster.local_master:
----------
ID: cmd.run
Function: salt.function
Result: True
Comment: Function ran successfully. Function cmd.run ran on minion1, minion2.
Started: 12:14:54.791635
Duration: 234.615 ms
Changes:
minion1:
minion2:
Summary for saltmaster.local_master
------------
Succeeded: 1 (changed = 1)
Failed: 0
------------
Total states run: 1
Total run time: 234.615 ms
Tuz formülleri paketlenir ve paket yöneticisi kullanılarak Tuz ustalarına dağıtılır. Bu kavram,RPM, Yum ve Pacmanpaketleme sistemleri. Salt state, sütun, dosya şablonları ve diğer dosyalar formül tarafından kullanılır ve daha sonra tek bir dosyada paketlenir.
Bir formül paketi oluşturulduktan sonra, Salt master'larında kullanılmak üzere Depo Sistemine kopyalanır. Paket yöneticisine geçmeden önce, Salt temel komutunu kullanarak bir "nginx" paketinin nasıl kurulacağına bir göz atalım.
Aşağıdaki sözdizimi, bir "nginx" paketini kurmak için kullanılır.
root@saltmaster:/home/vagrant# salt '*' pkg.install nginx
Burada pkg.install nginxkomutu bir paketi kurmak için kullanılır. Yürütmeden sonra aşağıdaki yanıtı göreceksiniz.
Aşağıdakileri üretecek output -
minion2:
----------
httpd:
----------
new:
1
old:
httpd-cgi:
----------
new:
1
old:
libxslt1.1:
----------
new:
1.1.28-2build1
old:
nginx:
----------
new:
1.4.6-1ubuntu3.7
old:
nginx-common:
----------
new:
1.4.6-1ubuntu3.7
old:
nginx-core:
----------
new:
1.4.6-1ubuntu3.7
old:
minion1:
----------
httpd:
----------
new:
1
old:
httpd-cgi:
----------
new:
1
old:
libxslt1.1:
----------
new:
1.1.28-2build1
old:
nginx:
----------
new:
1.4.6-1ubuntu3.7
old:
nginx-common:
----------
new:
1.4.6-1ubuntu3.7
old:
nginx-core:
----------
new:
1.4.6-1ubuntu3.7
old:
Şimdi, bir paket yüklediniz. O paket için hizmetleri başlatmak için aşağıda verilen komutu kullanın.
root@saltmaster:/home/vagrant# salt '*' service.start nginx
Bu komutu çalıştırdıktan sonra, sonuç aşağıdaki kod bloğunda gösterildiği gibi görünür.
minion1:
True
minion2:
True
Bu nedenle, temel komutu kullanarak “nginx” paketi için hizmetleri kurduk ve başlattık. Şimdi Salt paket yöneticisinde paketleri nasıl oluşturup kuracağımızı tartışalım.
Paket Oluşturma
Salt'ı kurabileceğiniz herhangi bir sistem üzerine paketler oluşturulabilir. Üç tür paket vardır ve bunlar aşağıdaki gibidir.
- Formula
- Reactor
- Conf
Şimdi, paketlerin nasıl oluşturulacağını anlayalım. Fomula Dosya.
Formül Dosyası
Paketteki çoğu dosya varsayılan olarak - / srv / spm / salt / dizininde bulunur, ancak sütun dosyası - / srv / spm / pillar / dizinine yerleştirilebilir. Formül dosyası paketi açıklar.
Example
name: apache
os: RedHat
os_family: RedHat
version: 201607
release: 2
summary: Formula for installing Apache
description: Formula for installing Apache
Buraya,
Name- Paketin adı. Burada paket adıapache.
os - Bu paketi hangi işletim sistemlerinin destekleyebileceğini bilmek için kullanılır.
os_family - Hangi işletim sistemi ailelerinin bu paketi destekleyebileceğini bilmek için kullanılır.
Version- Paketin sürümü. YYYYMM formatında belirtilmiştir.
Release - Bu alan öncelikle bir sürümün yayınına atıfta bulunur.
Summary - Paketin kısa satır açıklaması.
Description - Paketin daha ayrıntılı bir açıklaması.
REAKTÖR
Reaktör dosyaları şurada bulunur: /srv/spm/reactor/ dizin.
CONF
Bu tür bir paketteki dosyalar, normalde içinde bulunan Salt yapılandırma dosyalarıdır. /etc/salt/dizin. Salt dışındaki paketler için yapılandırma dosyaları bir Salt State ile işlenebilir ve işlenmelidir (formül türü bir paket kullanılarak).
Bir paket oluşturmak için aşağıdaki adımlarla devam edelim.
Bir FORMULA dosyası oluşturun ve bunu paket klasörünün kök dizinine yerleştirin.
Formül dosyalarını derleme sistemindeki bir klasörde toplayın.
Çalıştırmak spm build. Paket oluşturulur ve / srv / spm_build klasörüne yerleştirilir. Aşağıdaki komut, bir paket oluşturmak için kullanılır.
spm build /path/to/salt-packages-source/formula
Şimdi kopyalayın .spm arşiv sistemindeki bir klasöre.
Paylaşabilirsiniz srv/spm_build ağdaki klasörü veya dosyaları FTP'nize veya Web sunucusuna kopyalayın.
Aşağıdaki komutu kullanarak repo meta verilerini oluşturun.
spm create_repo /srv/spm_build
Paketleri Kurmak
Bu bölüm, Salt paket yöneticisi paketlerinin yüklenmesini açıklamaktadır.
Uzak Depoları Yapılandırın
Uzak depoları yapılandırmak için, Salt Master'ın deponun nerede olduğunu bir yapılandırma işlemi yoluyla bilmesi gerekir.
Dosyalar /etc/salt/spm.repos.d/spm.repo dizin.
Example
file_repository:
url: https://spm.example.com/
Burada dosya, arşivin adını ve arşive giden bağlantıyı içerir. Ayrıca http, https, ftp veya dosya yolunu da kullanabilirsiniz. Dosya yolunu kullanmak için, URL: file: /// srv / spm_build kullanarak erişebilirsiniz.
Meta Verileri Güncelle
Depo, Salt master üzerinde yapılandırıldıktan sonra, havuz meta verileri aşağıdaki komut kullanılarak indirilir.
spm update_repo
Dosya Köklerini Güncelle
SPM paketleri srv / spm / salt dizininde bulunur. Salt master'daki dosya köklerine aşağıdaki yolu ekleyin,
file_roots:
base:
1. /srv/salt
2. /srv/spm/salt
Şimdi, tuz yöneticisini yeniden başlatın.
Apache Paketini Kurun
Apache paketini kurmak için aşağıdaki komutu kullanın.
spm install apache
Aşağıdaki komutu kullanarak doğrudan SPM dosyasından da yükleyebilirsiniz.
spm local install /srv/spm/apache-201607-1.spm
Bir Paketi Kaldırma
Örneğin apache gibi bir paketi kaldırmak için aşağıdaki komutu kullanın,
spm remove apache
Herhangi bir dosya değiştirilmişse, kaldırılmayacağını unutmayın.
Salt, tüm komutlarına programlı erişim sağlar. Salt, Tuz sisteminin her bölümü için farklı modüller sağlar. Python API'sinin temellerini ve bu bölümde temel salt komutlarının nasıl çalıştırılacağını öğrenelim.
Yapılandırma
salt.config modülü, Salt yapılandırma ayrıntılarına erişmek için kullanılır.
import salt.config
opts = salt.config.client_config('/etc/salt/master')
Burada client_config salt yapılandırma dosyasını okur ve yapılandırma ayrıntılarını sözlük olarak döndürür.
Yükleyici
salt.loader modül, tahıllar, köleler vb. gibi her bir modülü Salt'a yüklemek için kullanılır.
import salt.loader
opts = salt.config.minion_config('/etc/salt/minion')
grains = salt.loader.grains(opts)
Buraya, grains Tuz sistemindeki tahılların detaylarını okur ve geri verir.
İstemci Modülü
salt.client modül salt, salt-çağrısı ve salt-SSH komutlarını programlı olarak yürütmek için kullanılır.
En önemli python sınıfları aşağıdaki gibidir -
- salt.client.LocalClient
- salt.client.Caller
- salt.client.ssh.client.SSHClient
İstemci modülünün çoğu tarafından sağlanan ana işlev, cmd. Bu işlev, CLI seçeneklerini sarar ve yürütür, bu komut satırına benzer ve sonuçları python veri yapıları olarak döndürür.
LocalClient
LocalClient, ustadan tuz yardımcılarına komutlar göndermek ve sonuçları ana bilgisayara döndürmek için kullanılır.
import salt.client
local = salt.client.LocalClient()
local.cmd('*', 'test.ping')
Aşağıdakileri üretecek output -
{'minion1': True, 'minion2': True }
Arayan
Arayan, koşmak için kullanılır salt-call programlı olarak ve sonuçları döndürür.
import salt.client
caller = salt.client.Caller()
caller.cmd('test.ping')
Aşağıdakileri üretecek output -
True
SSHClient
SSHCient'i çalıştırmak için kullanılır. salt-ssh programlı olarak ve sonuçları döndürür.
import salt.client.ssh.client
ssh = salt.client.ssh.client.SSHClient()
ssh.cmd('*', 'test.ping')
Aşağıdakileri üretecek output -
{'minion1': True, 'minion2': True }
CloudClient
Salt.cloud modülü, salt-cloud komutlarını programlı olarak yürütmek için kullanılır.
client = salt.cloud.CloudClient(path = '/etc/salt/cloud')
Bulut modülü, VM'ler oluşturma (oluşturma), VM'leri yok etme (yok etme), bir bulut sağlayıcısı tarafından sağlanan görüntüleri listeleme (list_images), bir bulut sağlayıcısının konumlarını listeleme (list_locations), bir bulut sağlayıcısının makine boyutlarını listeleme (liste_ boyutları), vb.
Bu çalışan örnekte, apache web sunucusunu PHP yazılımı ile birlikte yapılandıracak bir Salt formülü oluşturacağız. Salt, geçici komutları yürütmenin harika bir yoludur, ancak altyapınızı bu şekilde sürekli olarak yapılandırmak istemezsiniz. Bir dizi Salt formülü oluşturarak, herhangi bir yapılandırmayı güvenilir bir şekilde yeniden oluşturabilirsiniz.
Tuz Formülleri basit YAML metin dosyalarıdır ve varsayılan olarak Salt Master cihazınızda /srv/salt/*. Apache web sunucusunu ve PHP'yi aynı anda kurmak için bir Tuz Formülü oluşturarak başlayalım.
Altında "websetup.sls" adlı bir dosya oluşturun /srv/salt/ dizin ve aşağıdaki kodu ekleyin.
websetup.sls
websetup:
pkg:
- installed
- pkgs:
- apache2
- php5
- php5-mysql
Bu örnekte, “- pkgs:” argümanına dikkat edin. Aşağıdaki “- pkgs:” listesindeki her öğe, birlikte yüklenmek üzere işletim sisteminin paket yöneticisine birlikte iletilecektir. Yüklemek için geniş bir paket listeniz olduğunda, bunları kurmanın en verimli yolu budur.
Aşağıdaki komutu kullanarak bu Formülü Tuz master'a uygulayın.
root@saltmaster:/home/vagrant# salt 'minion2' state.sls websetup
Şimdi şunu göreceksiniz output -
minion2:
----------
ID: websetup
Function: pkg.installed
Result: True
Comment: 3 targeted packages were installed/updated.
Started: 01:50:53.978396
Duration: 86738.132 ms
Changes:
----------
apache2:
----------
new:
2.4.7-1ubuntu4.13
old:
apache2-api-20120211:
----------
new:
1
old:
apache2-bin:
----------
new:
2.4.7-1ubuntu4.13
old:
apache2-data:
----------
new:
2.4.7-1ubuntu4.13
old:
libapache2-mod-php5:
----------
new:
5.5.9+dfsg-1ubuntu4.21
old:
libapr1:
----------
new:
1.5.0-1
old:
libaprutil1:
----------
new:
1.5.3-1
old:
libaprutil1-dbd-sqlite3:
----------
new:
1.5.3-1
old:
libaprutil1-ldap:
----------
new:
1.5.3-1
old:
php5:
----------
new:
5.5.9+dfsg-1ubuntu4.21
old:
php5-cli:
----------
new:
5.5.9+dfsg-1ubuntu4.21
old:
php5-common:
----------
new:
5.5.9+dfsg-1ubuntu4.21
old:
php5-json:
----------
new:
1.3.2-2build1
old:
php5-mhash:
----------
new:
1
old:
php5-mysql:
----------
new:
5.5.9+dfsg-1ubuntu4.21
old:
php5-readline:
----------
new:
5.5.9+dfsg-1ubuntu4.21
old:
phpapi-20121212:
----------
new:
1
old:
ssl-cert:
----------
new:
1.0.33
old:
Summary for minion2
------------
Succeeded: 1 (changed = 1)
Failed: 0
------------
Total states run: 1
Total run time: 86.738 s
Şimdi, paketleri şuraya yüklediniz: minion2.
Highstate
"Yüksek durum", Salt'ın belirli bir minyona hangi Tuz Formüllerinin uygulanması gerektiğini belirlemesinin bir yoludur. Aşağıdaki komutu kullanarak bir "yüksek durum" gerçekleştirin.
root@saltmaster:/home/vagrant# salt <targets> state.highstate
top.sls
Minion, daha önce de belirtildiği gibi, bir üst düzey yürütme isteğinde bulunduğunda, minion, Tuz ustasından top.sls'yi ister ve eşleştiği formülleri arar. Varsayılan olarak, bu dosya /srv/salt/top.sls adresinde bulunur. Formülümüzü top.sls dosyasına ekleyelim ve minion2'yi hedef olarak ayarlayalım.
base:
'*':
- common
'minion2’:
- websetup
Şimdi, highstate minion2'yi hedefleyen aşağıda gösterildiği gibi.
root@saltmaster:/home/vagrant# salt 'minion2' state.highstate
Bunu uyguladıktan sonra aşağıdakileri görebilirsiniz output -
minion2:
----------
ID: common_packages
Function: pkg.installed
Result: True
Comment: All specified packages are already installed
Started: 01:55:17.998824
Duration: 461.615 ms
Changes:
Summary for minion2
------------
Succeeded: 1
Failed: 0
------------
Total states run: 1
Total run time: 461.615 ms
Şimdi, Apache web sunucusu ve PHP minion2'ye yüklenmiştir. Bu şekilde, her ikisini de kullanarak minyonları hedeflemeliyiztop.sls ve highstate ve gerekli yazılımı minimum çalışma ve maksimum esneklikle yükleyin.