Kukla - İşlev

Puppet, Puppet'in temel geliştirme dili Ruby olduğundan, diğer herhangi bir programlama dili gibi işlevleri destekler. Adıyla bilinen iki tür işlevi destekler.statement ve rvalue fonksiyonlar.

  • Statementskendi başlarına dururlar ve herhangi bir dönüş türleri yoktur. Yeni manifest dosyasındaki diğer Puppet modüllerini içe aktarmak gibi bağımsız görevleri gerçekleştirmek için kullanılırlar.

  • Rvalue değerleri döndürür ve yalnızca ifade, atama veya case ifadesi gibi bir değer gerektirdiğinde kullanılabilir.

Puppet'ta işlevin uygulanmasının arkasındaki anahtar, yalnızca Puppet master üzerinde yürütülmesi ve istemci veya Puppet aracısı üzerinde yürütülmemesidir. Bu nedenle, yalnızca Puppet Master'da bulunan komutlara ve verilere erişebilirler. Halihazırda mevcut olan farklı türden işlevler vardır ve hatta kullanıcı ihtiyaca göre özel işlevler oluşturma ayrıcalığına sahiptir. Birkaç dahili işlev aşağıda listelenmiştir.

Dosya Fonksiyonu

Dosya kaynağının dosya işlevi, Puppet'e bir modül yüklemek ve istenen çıktıyı bir dizge biçiminde döndürmektir. Modülün Puppet modülünün dosya dizininden yüklenmesine yardımcı olan <modül adı> / <dosya> başvurusu aradığı argümanlardır.

Script / tesingscript.sh gibi dosyaları <modül adı> /script/files/testingscript.sh adresinden yükleyecektir. İşlev, dosyanın diskteki herhangi bir yerden yüklenmesine yardımcı olan mutlak bir yolu okuma ve kabul etme yeteneğine sahiptir.

Fonksiyonu Dahil Et

Puppet'ta include işlevi, diğer herhangi bir programlama dilindeki include işlevine çok benzer. Bir veya daha fazla sınıfın bildirimi için kullanılır, bu da bu sınıfların içinde bulunan tüm kaynakların değerlendirilmesiyle sonuçlanır ve son olarak bunları bir kataloğa ekler. İşleyiş şekli, include işlevinin bir sınıf adını, sınıf listesini veya virgülle ayrılmış sınıf adları listesini kabul etmesidir.

Kullanırken akılda tutulması gereken bir şey includeifadesi, bir sınıfta birden çok kez kullanılabilir, ancak tek bir sınıfı yalnızca bir kez dahil etme sınırlamasına sahiptir. Dahil edilen sınıf bir parametreyi kabul ederse, içerme işlevi, arama anahtarı olarak <sınıf adı> :: <parametre adı> kullanarak bunlar için değerleri otomatik olarak arar.

Include işlevi, bildirildiklerinde bir sınıfın sınıfta yer almasına neden olmaz, çünkü içerilen bir işlevi kullanmamız gerekir. Bildirilen sınıfta ve onu çevreleyen sınıflarda bir bağımlılık bile yaratmaz.

Dahil etme işlevinde, yalnızca bir sınıfın tam adına izin verilir, göreli adlara izin verilmez.

Tanımlı İşlev

Puppet'ta tanımlı işlev, belirli bir sınıf veya kaynak türünün nerede tanımlandığını ve bir Boolean değeri döndürüp döndürmediğini belirlemeye yardımcı olur. Belirli bir kaynağın tanımlanıp tanımlanmadığını veya tanımlanan değişkenin bir değeri olup olmadığını belirlemek için de define kullanılabilir. Tanımlanmış işlevi kullanırken akılda tutulması gereken temel nokta, bu işlevin bir sınıf adı, tür adı, kaynak başvurusu veya "$ isim" biçiminde değişken başvurusu olabilen en az bir dize bağımsız değişkeni almasıdır.

Modüller tarafından sağlanan türler de dahil olmak üzere hem yerel hem de tanımlanmış işlev türü için işlev kontrollerini tanımlayın. Tür ve sınıf isimleriyle eşleşir. İşlev, kaynak referansını kullanarak kaynak yavaşlamasını eşleştirir.

İşlev Eşleşmelerini Tanımlayın

# Matching resource types 
defined("file") 
defined("customtype")  

# Matching defines and classes 
defined("testing") 
defined("testing::java")  

# Matching variables 
defined('$name')  

# Matching declared resources 
defined(File['/tmp/file'])