YAMLの基礎知識を理解していますか?

YAMLの構文がわからないかたは、ansibleは覚えるのに苦戦します。

ぜひ、ansibleを勉強するまえにはYAMLを覚えたほうがよいです。

ansible の参考書では YAMLの由来はあるのですが、書き方についてはあまり説明がないのです。知識があることは既に前提となっています。

基本

ansible の設定ファイルは YAML なのです 被管理ホストの作業手順書はプレイブックと言ます。 YAMLの構文を理解する必要あります。

また、Pythonが必要となります。 YAMLファイルとPythonを繋ぐライブラリはAnsibleを利用します。 YAMLAWSではおなじみなJSONに似た、データ定義のためのフォーマットです。

参考URL:Ansibleのための YAML入門 https://dev.classmethod.jp/server-side/ansible/getting-start-yaml-for-ansible/

基本書式

YAMLとは構造化されたデータを表現するための規格で、「シーケンス」「マッピング」という2つのデータ構造を使います。

シーケンス

YAMLでは行頭に「-」をつけることで配列を表現します。 「-」のあとの空白は必須です。これは忘れてはいけません。

YAMLでは、文字列をダブルクォート(")やシングルクォート(')で囲む必要は ありません。

  • d1
  • d2
  • d3 (結果) ['d1', 'd2', 'd3']

リスト

リストは複数のデータを格納するデータ構造です。 プログラミング言語でも同様にリストや配列などと言われます

何度も言いますが、ハイフンの後に半角スペースが必須です。

  • name: "Suzuka Nakamoto" metal_name: "SU-METAL"
  • name: "Yui Mizuno" metal_name: "YUI-METAL"
  • name: "kikuchi moa" metal_name: "MOA-METAL"

YAMLではインデントの位置によりデータ構造が決まります。

重要 原則として、インデントは2文字の半角スペースで記述してください。

変数

Ansibleでは変数を扱う機能があり、Playbookの一部を変数で置き換えます。

  • name: "check {{ wp_path }}/wp-config.php' if exist" stat: path: "{{ wp_path }}/wp-config.php" register: stat_wp_config

重要 利用する場合、{{と}}で変数名を記述してください。 この時、必ずダブルクォートで全体を囲む必要があります

Ansibleでは

Ansibleでは、タスク定義でよく使われるフォーマットでしょう。

  • name: apache24 installed yum: name: httpd24
  • name: httpd service started service: name: httpd state: started enabled: yes


最初のタスクでは、httpdyumでインストールする。 次のタスクでは、httpdをスタートする。

ansibleのプレイブックの構造

  • hosts: all become: yes become_user: root tasks:
    • user: name=piyo
    • copy: src=/home/foo/bar.txt dest=/home/piyo/


プレイブックは、2箇所に分けられる。


・接続設定を行う箇所

  • hosts: all インベントリファイルに記述したホスト名、グループ名を指定 become: yes プレイブックのモジュールをsudoで実行するように指定 become_user: root 実行するユーザーを指定

※:複数のホストを指定したい場合は、コロンで区切ることで複数のホストを指定可能です。

・実行モジュールを定義する箇所


tasks: - user: name=piyo ユーザー追加を行うuserモジュール - copy: src=/home/foo/bar.txt dest=/home/piyo/  管理ホストから被管理ホストへのファイルコピーを行うcopy


まとめ

ansibleではこのほかにリファレンスを読むなどして、理解をする必要があります。 次回に続きます。