YAML とは

YAML (ヤムル)[1] は構造化されたデータを表現するための言語です。設定ファイルやデータ交換用フォーマットなどに使用されます。Ansible ではインベントリー[2]やプレイの記述に使用します。
YAML ファイルの拡張子は .yml または .yaml です。 YAML ファイル自体はテキスト形式なので、 VS Code などお好みのテキストエディターを使用して記述します。

基本ルール

YAML の基本ルールです。 Ansible はなぜか最終行の ... は書きません。

  • --- から書き始める = 1 行目は --- だけにする
  • ... で書き終える = 最終行は ... だけにする
  • # から行末までがコメントになる
  • インデントは半角空白 × 2 個で記述する(タブ文字は使用できない)
  • インデントでデータ構造のネストを表現する

データの基本的な表現

YAML の基本的な 2 種類のデータの表現方法です。

シーケンス

値の先頭に - を付けて表現します。「リスト」とも呼ばれます。

- anekoji
- sanjyo
- rokkaku

マッピング

"キー: 値" の形式で表現します。「ハッシュ」、「辞書 (ディクショナリー) 」とも呼ばれます。

alabama: montgomery
california: sacramento
delaware: dover

複雑なデータの表現

シーケンスやマッピングをネストしたデータの表現方法です。すべてのインデントは半角空白 x 2 個です。

マッピングの中にマッピングをネスト

fu:
  osaka: osaka
  kyoto: kyoto
ken:
  mie: tsu
  shiga: otsu
  hyogo: kobe
  nara: nara
  wakayama: wakayama

シーケンスの中にマッピングをネスト

- name: taro
  password: password@taro
- name: hanako
  password: password@hanako

マッピングの中にシーケンスをネスト

streets:
  - marutamachi
  - takeyamachi
  - ebisugawa

複雑なネスト

- name: Install a packates
  ansible.builtin.dnf:
    name: "{{ packages }}"
    state: latest
  vars:
    packages:
      - httpd
      - mariadb-server
      - php
      - php-mbstring
      - php-mysqli
  become: yes

演習問題

演習問題はこのリンクをクリックしてください。

脚注
  1. YAML は "YAML Ain't a Markup Language" の再帰的頭字語です。同じ様な表記に GNU (GNU is Not Unix) や VISA (Visa International Service Association) があります。 ↩︎

  2. インベントリーは ini 形式で記述できますが、本書では扱いません。 ↩︎