YAML temelde html, markup(md) dosyası gibi bir markup dilidir. Okumayı daha olanaklı kılmak için data serialization için oluşturulmuş bir markup dilidir. Yaml bir çok dille beraber kullanılabilir. Pyhton, ruby, perl gibi birçok agile diller tarafından default olarak desteklenir. Yaml bu dillerde olduğu gibi scalar, lists, arrays gibi veri tiplerini barındırır. Aynı zamanda indentation, dashes, colons gibi bazı temel veri tipleri barındırır. Yaml temel olarak configurasyon ve veri tutmak için kullınılır.
Yaml dili 2001 yılında çıkmış olmasına rağmen son dönemlerde Devops teknolojilerinin gelişmesi, kod olarak altyapı(infrastructure as a code), containers, docker compose, Kubernetes gibi teknolojilerde ki kullanımından dolayı oldukça meşhur bir dil haline gelmiştir. Hemen hemen bir çok bulut üreticisi, Devops ürünleri üreticileri, platform üreticileri bu dili varsayılan olarak ürünlerinde destekliyorlar ve konfigurasyon için kullanıyorlar.
Yaml dili printable Unicode karakterleri deskler ve encoding olarak UTF-8,UTF-16,UTF-32 kullanır. Yaml dili için kullanılan dosyaların uzantısı yine “yaml”dır. Yaml dosyalarını herhangi bir text editor programı(sublime, notepad++, vscode, vim etc.) ile oluşturabilir ve değiştirebilirsiniz.
Veri şekillendirilirken tab’lar ile değil boşluklar(space) ile şekillendirilir. Veri yapıları için girinti(indent) kullanılır. Aşağıda ki örnekte pool bir veri ve pool’u anlatan, pool için olan özellikler altına girinti yapılarak key-value storelarda tutuluyor. Yani “vmimage” değeri pool verisi için bir özelliktir. Pool için başka bir özellik, değer varsa yine “vmimage” ile aynı girinti de olmalıdır.
Resim-1
Yaml dosylarında iki nokta key-value için, “-(tire)” ise liste yapıları için kullanılır.
Yukarıda ki örnek bir Devops sürecinde bir kodu build edip bir container registry’e push edecek. Yukarıda basettiğimiz gibi bu adımlar “steps” verisi olarak tanımlanmış. Altında ise tire işareti ile tüm adımlar listelenmiş. Yani bir liste oluşturulmuş
Step bir liste. Ve içerisi şöyle;
Steps
- Script
- Task
- Task
Şeklinde.
Ve yukarıda bahsettiğimiz gibi iki nokta işareti ile key value değerlerimiz var. Yani listemizde ki script key’inin değeri “dotnet build …..”. Key value değerlerini oluştururken dikkat etmeniz gereken bir nokta key değerinden sonra mutlaka boşluk bırakıp value yazmanız gerekiyor.
Yani “vmimage:ubuntu-latest” yerine “vmimage: ubuntu-latest” olması gerekiyor. Aksi takdir bu iki değer bir birbiri ile eşleşmez. Boşluğun sayısı veya tipi önemli değildir. Yani birden fazla boşluk bırakabilir veya yeni bir satıra geçebilirsiniz.
Key-value değerleri istenildiği kadar iç içe geçirilebilir(unlimited intend).
Resim-2
Collection tipinde ki veriler de tanımlanırken yani listeler veya diziler yine aynı şekilde “-,tire” işaretinden sonra boşluk bırakılmalıdır.
Resim-3
Scalars
Scalars temel olarak string, number, boolen tipinde ki verilerdir. Bu veriler key-valuelar içersinde kullanılabilir ve içerisinde boşluk barındırabilirler.
Resim-4
Resim-5
Number tipini text’e çevirmek istiyorsanır tek tırnak veya çift tırnak kullanmanız yeterli olacaktır.
Resim-6
Scalarlar birden fazla satırda(multiline) yazılabilirler. Bunun için başına pipe “|” işareti veya “>” işareti koymanız yeterlidir.
Resim-7
Structures
Yaml kullanırken birden fazla dosya kullanmak yerine bir dosyada birden veri tek bir dosyada birleştirilebilir.
Bunun için kullanmamız gereken iki şey vardır. “—” ve “…”. Üç tire yeni bir dosya başlangıcını gösterir. Üç nokta ise mevcut veri bloğunun bittiğine ama veri akışının bitmediğini yani ikinci dosyaya geçildiğini anlatır.
Resim-8
Comments
Yaml dilinde yorum yazmak için yorumun başına “#” işareti koymanız ve boşluk bırakmanız gerekiyor.
Resim-9
Yaml bir çok programlama dili ile kullanılmak ile beraber, konfigurasyon bilgisi tutmak, yeni cloud native ortamlarda altyapımızı kodlamak için kullanılan standart haline gelmiş bir dil. Docker, Kubernetes, ansible, helm, Devops tools gibi teknolojilerle uğraşıyorsanız mutlaka okumayı ve yazmayı öğrenmeniz gereken bir dil.
Bu konuyla ilgili sorularınızı linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.
Referanslar
www.mshowto.org
TAGS: yaml, yaml nedir, kod olarak altyapı, kod olarak altyapı nedir, Devops, Kubernetes, docker, ansible, key value, lists, arrays
Çok güzel bir yazı olmuş emeğinize sağlık