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.