YAMLの基礎知識を理解していますか?
YAMLの構文がわからないかたは、ansibleは覚えるのに苦戦します。
ぜひ、ansibleを勉強するまえにはYAMLを覚えたほうがよいです。
ansible の参考書では YAMLの由来はあるのですが、書き方についてはあまり説明がないのです。知識があることは既に前提となっています。
基本
ansible の設定ファイルは YAML なのです 被管理ホストの作業手順書はプレイブックと言ます。 YAMLの構文を理解する必要あります。
また、Pythonが必要となります。 YAMLファイルとPythonを繋ぐライブラリはAnsibleを利用します。 YAMLはAWSではおなじみな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の一部を変数で置き換えます。
重要 利用する場合、{{と}}で変数名を記述してください。 この時、必ずダブルクォートで全体を囲む必要があります
Ansibleでは
Ansibleでは、タスク定義でよく使われるフォーマットでしょう。
最初のタスクでは、httpdをyumでインストールする。
次のタスクでは、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ではこのほかにリファレンスを読むなどして、理解をする必要があります。 次回に続きます。