GNU/Linux >> Belajar Linux >  >> Linux

YAML untuk pemula

YAML Bukan Bahasa Markup (YAML), dan seiring berjalannya format konfigurasi, mudah dilihat. Ini memiliki struktur visual yang intuitif, dan logikanya cukup sederhana:poin-poin berindentasi mewarisi properti poin-poin induk.

Tapi kesederhanaan yang tampak ini bisa menipu.

Sangat mudah (dan menyesatkan) untuk menganggap YAML hanya sebagai daftar nilai terkait, tidak lebih kompleks dari daftar belanja. Ada heading dan beberapa item di bawahnya. Item di bawah judul berhubungan langsung dengan itu, bukan? Nah, Anda bisa menguji teori ini dengan menulis sedikit YAML yang valid.

Buka editor teks dan masukkan teks ini, pertahankan tanda hubung di bagian atas file dan spasi di depan untuk dua item terakhir:

---
Store: Bakery
  Sourdough loaf
  Bagels

Simpan file sebagai example.yaml (atau yang serupa).

Jika Anda belum memiliki yamllint terinstal, instal:

$ sudo dnf install -y yamllint

Sebuah linter adalah aplikasi yang memverifikasi sintaks file. yamllint perintah adalah cara yang bagus untuk memastikan YAML Anda valid sebelum Anda menyerahkannya ke aplikasi apa pun yang Anda gunakan untuk menulis YAML (Mungkin, misalnya).

Gunakan yamllint untuk memvalidasi file YAML Anda:

$ yamllint --strict shop.yaml || echo “Fail”
$

Tetapi ketika dikonversi ke JSON dengan skrip konverter sederhana, struktur data YAML sederhana ini menjadi lebih jelas:

$ ~/bin/json2yaml.py shop.yaml
{“Store”: “Bakery Sourdough loaf Bagels”}

Diurai tanpa konteks visual jeda baris dan lekukan, cakupan sebenarnya dari data Anda terlihat jauh berbeda. Data sebagian besar datar, hampir tanpa hierarki. Tidak ada indikasi bahwa roti dan bagel penghuni pertama adalah anak-anak dari nama toko.

[ Pembaca juga menyukai: Dapat dilakukan:Otomatisasi TI untuk semua orang ]

Bagaimana data disimpan dalam YAML

YAML dapat berisi berbagai jenis blok data:

  • Urutan:nilai yang tercantum dalam urutan tertentu. Urutan dimulai dengan tanda hubung dan spasi (- ). Anda dapat menganggap urutan sebagai daftar Python atau larik di Bash atau Perl.
  • Pemetaan:pasangan kunci dan nilai. Setiap kunci harus unik, dan urutannya tidak masalah. Pikirkan kamus Python atau penugasan variabel dalam skrip Bash.

Ada jenis ketiga yang disebut scalar , yang merupakan data arbitrer (dikodekan dalam Unicode) seperti string, integer, tanggal, dan sebagainya. Dalam praktiknya, ini adalah kata dan angka yang Anda ketikkan saat membuat blok pemetaan dan urutan, jadi Anda tidak akan memikirkan hal ini lebih dari sekadar merenungkan kata-kata dalam bahasa ibu Anda.

Saat membangun YAML, mungkin membantu untuk menganggap YAML sebagai urutan urutan atau peta peta, tetapi tidak keduanya.

Blok pemetaan YAML

Saat Anda memulai file YAML dengan pernyataan pemetaan, YAML mengharapkan serangkaian pemetaan. Blok pemetaan di YAML tidak akan ditutup sampai diselesaikan, dan blok pemetaan baru dibuat secara eksplisit. Blok baru hanya dapat dibuat salah satu dengan meningkatkan level indentasi (dalam hal ini, blok baru ada di dalam blok sebelumnya) atau dengan menyelesaikan pemetaan sebelumnya dan memulai blok pemetaan yang berdekatan.

Alasan contoh YAML asli dalam artikel ini gagal menghasilkan data dengan hierarki adalah karena sebenarnya hanya satu blok data:kunci Store memiliki nilai tunggal Bakery Sourdough loaf Bagels . YAML mengabaikan spasi putih karena tidak ada blok pemetaan baru yang dimulai.

Apakah mungkin untuk memperbaiki contoh YAML dengan menambahkan setiap item urutan dengan tanda hubung dan spasi?

---
Store: Bakery
  - Sourdough loaf
  - Bagels

    Sekali lagi, ini adalah YAML yang valid, tetapi masih cukup datar:

    $ ~/bin/json2yaml.py shop.yaml
    {“Store”: “Bakery - Sourdough loaf - Bagels”}

    Masalahnya adalah file YAML ini membuka blok pemetaan dan tidak pernah menutupnya. Untuk menutup Store blokir dan buka yang baru, Anda harus memulai pemetaan baru. Nilai pemetaan dapat berupa urutan, tetapi Anda memerlukan kunci pertama.

    Inilah resolusi yang benar (dan diperluas):

    ---
    Store:
      Bakery:
        - ‘Sourdough loaf’
        - ‘Bagels’
      Cheesemonger:
        - ‘Blue cheese’
        - ‘Feta’

    Di JSON, ini memutuskan untuk:

    {“Store”: {“Bakery”: [“Sourdough loaf”, “Bagels”],
    “Cheesemonger”: [“Blue cheese”, “Feta”]}}

    Seperti yang Anda lihat, direktif YAML ini berisi satu pemetaan (Store ) ke dua nilai anak (Bakery dan Cheesemonger ), yang masing-masing dipetakan ke urutan anak.

    blok urutan YAML

    Prinsip yang sama berlaku jika Anda memulai arahan YAML sebagai urutan. Misalnya, direktif YAML ini valid:

    Flour
    Water
    Salt

      Setiap item berbeda jika dilihat sebagai JSON:

      [“Flour”, “Water”, “Salt”]

      Tapi file YAML ini tidak valid karena mencoba memulai blok pemetaan pada tingkat yang berdekatan dengan blok urutan :

      ---
      - Flour
      - Water
      - Salt
      Sugar: caster

      Ini dapat diperbaiki dengan memindahkan blok pemetaan ke dalam urutannya:

      ---
      - Flour
      - Water
      - Salt
      - Sugar: caster

      Anda dapat, seperti biasa, menyematkan urutan ke item pemetaan Anda:

      ---
      - Flour
      - Water
      - Salt
      - Sugar:
          - caster
          - granulated
          - icing

      Dilihat melalui lensa pelingkupan JSON eksplisit, cuplikan YAML itu berbunyi seperti ini:

      [“Flour”, “Salt”, “Water”, {“Sugar”: [“caster”, “granulated”, “icing”]}]

      [ Panduan gratis dari Red Hat:5 langkah untuk mengotomatisasi bisnis Anda. ] 

      Sintaks YAML

      Jika Anda ingin menulis YAML dengan nyaman, penting untuk mengetahui struktur datanya. Seperti yang Anda tahu, tidak banyak yang harus Anda ingat. Anda tahu tentang pemetaan dan urutan blok, sehingga Anda tahu semua yang Anda butuhkan untuk bekerja. Yang tersisa hanyalah mengingat bagaimana mereka berinteraksi dan tidak berinteraksi satu sama lain. Selamat mengkode!


      Linux
      1. Perintah killall Linux untuk Pemula (8 Contoh)

      2. Contoh Perintah DNF Untuk Pemula

      3. Memahami YAML untuk Ansible

      1. MX Linux 17:Distro yang ditingkatkan yang dibuat untuk pemula

      2. Perintah dir Linux untuk pemula (10 contoh)

      3. Perintah Linux rm Dijelaskan untuk Pemula (8 Contoh)

      1. Tutorial Perintah Linux ln untuk Pemula (5 Contoh)

      2. Tutorial Perintah Linux nl untuk Pemula (7 Contoh)

      3. Tutorial Perintah Linux nm untuk Pemula (10 Contoh)