Ansible Playbook YAMLファイルのフォーマット

Ansible Playbook YAMLを正しいタスクインデント、モジュール引数、変数定義、ハンドラー参照でフォーマット・検証します。読みやすい自動化のためのAnsibleベストプラクティスに従います。

Real-World

詳細な説明

Ansible Playbook YAMLフォーマット

AnsibleはPlaybook、ロール、インベントリ、変数ファイルにYAMLを使用します。Ansible YAMLにはKubernetesなど他のYAML重視ツールとは異なる独自の慣例と一般的なパターンがあります。

Playbook構造

---
- name: Configure web servers
  hosts: webservers
  become: true
  vars:
    http_port: 80
    max_clients: 200

  tasks:
    - name: Install Apache
      ansible.builtin.apt:
        name: apache2
        state: present
        update_cache: true

    - name: Configure Apache
      ansible.builtin.template:
        src: templates/httpd.conf.j2
        dest: /etc/apache2/apache2.conf
      notify: Restart Apache

    - name: Ensure Apache is running
      ansible.builtin.service:
        name: apache2
        state: started
        enabled: true

  handlers:
    - name: Restart Apache
      ansible.builtin.service:
        name: apache2
        state: restarted

Ansible固有のフォーマットルール

  1. --- で開始 — すべてのAnsible YAMLファイルはYAMLドキュメント開始マーカーで始まるべき
  2. タスク名 — すべてのタスクに説明的な name フィールドが必要(ansible-lintがこれを強制)
  3. FQCNモジュールapt のような短い名前の代わりに ansible.builtin.apt のような完全修飾コレクション名を使用
  4. キー順序 — 慣例は:name、モジュール名、モジュール引数、whenregisternotifytags

変数ファイル

---
# vars/main.yml
app_name: myapp
app_version: "2.1.0"
app_config:
  database:
    host: "{{ db_host }}"
    port: 5432
  cache:
    driver: redis
    ttl: 3600

Jinja2式("{{ }}")のクォートに注意 — YAMLがブレースを誤解釈するのを防ぐためにクォートが必要です。

よくあるフォーマットの問題

  • クォートされていないJinja2host: {{ var }} は失敗する。host: "{{ var }}" にする必要がある
  • ブールのモジュール引数yes/no ではなく true/false を使用する(ansible-lintが推奨)
  • 長い行 — 多くの引数を持つAnsibleタスクは非常に長くなる可能性がある。YAML複数行構文を使用
  • 一貫しないインデント — Ansibleは任意のインデント幅で動作するが、2スペースが標準

ansible-lintの統合

ansible-lint ツールはAnsible固有のYAMLフォーマットルールを強制します。YAMLフォーマッターと並行して実行することで、一般的なYAMLの問題とAnsible固有のアンチパターンの両方をキャッチします。

ユースケース

Ansible Playbookフォーマットはインフラストラクチャ・アズ・コードのチームにとって不可欠です。クリーンで一貫してフォーマットされたPlaybookはレビュー、デバッグ、メンテナンスが容易です。数百のロールとPlaybookを管理するチームは、特にAnsible YAML慣例を知らない新しいチームメンバーのオンボーディング時に、Ansibleベストプラクティスを強制する自動フォーマットの恩恵を受けます。

試してみる — YAML Formatter & Validator

フルツールを開く