Jump to section

YAML とは

URL をコピー

YAML はデータシリアライズ言語で、設定ファイルの記述によく使用されます。YAML は Yet Another Markup Language の略語であると言う人もいれば、 YAML Ain't Markup Language (再帰的頭字語) であると言う人もいますが、これは YAML が文章ではなくデータを扱うためのものであるということを強く示しています。 

YAML は人間にも読んで理解しやすい言語のため、人気のあるプログラミング言語です。また、他のプログラミング言語と組み合わせて使用することも可能です。柔軟性と使いやすさを兼ね備えた YAML は、Ansible Playbook の形式で自動化プロセスを作成する Ansible 自動化ツールによって使用されます。

YAML は、Perl、C、XML、HTML などのプログラミング言語に由来する機能を備えています。YAML は JSON の上位集合でもあるので、JSON ファイルは YAML でもそのまま使えます。

YAML では、Python スタイルのインデントを使用してネスティングを示します。タブ文字は使用できないため、代わりにホワイトスペースを使用します。中括弧、角括弧、閉じタグ、引用符などの通常の書式記号はありません。YAML ファイルでは、拡張子として .yml または .yaml を使用します。 

YAML ファイルの構造は、マップまたはリストです。

マップでは、key-value ペアを関連付けることができます。それぞれのキーは一意でなければならず、順番は関係ありません。Python の辞書や Bash スクリプトの変数割り当てのように考えると良いでしょう。

YAML のマップはクローズする前に解決する必要があり、その後に新しいマップを作成でます。新しいマップは、インデントレベルを上げるか、前のマップを解決して隣接マップを開始することで作成できます。 

リストには特定の順序で列挙された値を含めることができ、必要に応じて任意の数の項目を含めることが可能です。リストの並びは、ダッシュ (-) とスペースで始め、インデントで親と区別します。シーケンスは、Python のリストや、Bash または Perl の配列と同じように考えることができます。リストをマップに埋め込むこともできます。 

YAML にはスカラー値も含めることができます。スカラー値とは、文字列、整数、日付、数値、ブール値などの値として使用できる任意のデータ (Unicode でエンコードされている) です。

YAML ファイルを作成する際には、これらの構文ルールに従い、ファイルが有効であることを確認する必要があります。ファイルの構文を検証するアプリケーションをリンターといいます。yamllint コマンドは、アプリケーションに引き渡す前に、その YAML ファイルが有効であるかどうかを確認するのに役立ちます。

以下は、構文ルールに従って従業員レコードを記述したシンプルな YAML ファイルの例です。

 --- # An employee record name: Martin D'vloper job: Developer skill: Elite employed: True foods: - Apple - Orange - Strawberry - Mango languages: perl: Elite python: Elite pascal: Lame education: | 4 GCSEs 3 A-Levels BSc in the Internet of Things 

YAML の最も一般的な用途の 1 つは、設定ファイルの作成です。設定ファイルは JSON ではなく YAML で記述することが推奨されています。ほとんどの場合において両者は同じように使うことができますが、YAML の方が読みやすく、ユーザーフレンドリーであるためです。  

YAML は Ansible での使用に加えて、Kubernetes のリソースとデプロイメントに使用されます。 

YAML ファイルを Github などのソースコントロールに追加することで、変更の追跡と監査が可能になるというのが、YAML を使用するメリットの 1 つです。 

Ansible における YAML

Ansible Playbook は、IT プロセスをオーケストレーションするために使用されます。Playbook は、1 つ以上の play を含む YAML ファイルで、システムの望ましい状態を定義するために使用されます。 

各 play は 1 つ以上のタスクを実行することができ、各タスクは Ansible モジュールを起動します。モジュールは、Ansible で自動化タスクを実行するために使用されます。Ansible モジュールは、Ruby、Python、bash など、JSON を返すことができる任意の言語で記述できます。

Ansible Playbook は、マップとリストで構成されています。Playbook を作成するには、play を指名する YAML リストを開始し、タスクを順番にリストアップします。インデントは論理的な継承を示すものではありません。各行を YAML のデータタイプ (リストやマップ) と考えると良いでしょう。

YAML テンプレートを使用することで、Ansible ユーザーは高度なプログラミング言語を習得しなくても、繰り返しタスクを自動的に実行するようにプログラミングすることができます。

Kubernetes のための YAML

Kubernetes は、定義された状態と実際の状態に基づいて機能します。Kubernetes オブジェクトはクラスタの状態を表し、ワークロードをどのように見せたいかを Kubernetes に伝えます。Pod、オブジェクト、デプロイメントなどの Kubernetes リソースは、YAML ファイルを使って作成することができます。 

Kubernetes のオブジェクトを作成する際には、オブジェクトの望ましい状態を定義するための仕様を含める必要があります。Kubernetes API はオブジェクトの作成にも使用できます。API へのリクエストにはオブジェクトの仕様が JSON で含まれていますが、ほとんどの場合、必要な情報を YAML ファイルとして kubectl に提供します。Kubectl は、API リクエストを行う際にこのファイルを YAML に変換してくれます。

オブジェクトが作成および定義されると、Kubernetes はそのオブジェクトが常に存在することを確認します。 

開発者やシステム管理者は、Kubernetes API に送信する YAML または JSON ファイルを使用して、定義された状態を指定します。Kubernetes はコントローラーを使用して、新しく定義された状態とクラスタ内の実際の状態の違いを分析します。

Red Hat Ansible Automation Platform の判読可能な YAML 自動化言語により、組織全体のユーザーが自動化コンテンツを共有し、吟味し、管理することができます。

Ansible Automation Platform には、Playbook、分析機能など、企業全体での自動化の導入に必要なツールがすべて揃っています。ビジュアル・ダッシュボードやロールベースのアクセス制御などにより IT インフラストラクチャを一元的に制御し、運用の複雑さを低減できます。

Red Hat OpenShift は、企業向けの Kubernetes です。Kubernetes を企業向けに強化するためのさまざまなテクノロジーを提供します。これには、レジストリ、ネットワーキング、テレメトリー、セキュリティ、自動化、サービスが含まれます。

Red Hat OpenShift を活用することで、開発者はコンテナ化された新しいアプリを作り、ホストし、クラウドでデプロイできるようになります。さらに、スケーラビリティ、制御性、オーケストレーションを提供することで、優れたアイデアが迅速かつ簡単にビジネスにつながるのを助けます。

さらに詳しく

記事

Ansible Playbook とは

Ansible Playbook は自動化タスクのブループリントであり、人手をほとんど、あるいはまったく介さずに複雑な IT 処理を実行します。Ansible Playbook は、ホストセット、ホスト群、またはある区分のホストで実行されます。これらが組み合わさって Ansible インベントリーが構成されます。

記事

Kubernetes の基本を学ぶ

Kubernetes はオープンソースのコンテナ・オーケストレーション・プラットフォームで、コンテナ化アプリケーションのデプロイ、管理、スケーリングに伴う多くの手動プロセスを自動化します。Kubernetes は、コンテナ化されたレガシーアプリケーションやクラウドネイティブ・アプリケーションを大規模に提供および管理するのに役立ちます。

記事

構成管理とは

構成管理とは、コンピュータシステム、サーバー、ソフトウェアを、一貫性の取れた望ましい状態に保つプロセスのことを言います。これにより、時間の経過とともに変更が加えられても、システムを期待通りに動作させることができます。 

自動化とアプリケーション展開のためのプラットフォーム

Red Hat Ansible Automation Platform

大規模な IT 自動化を構築するためのプラットフォーム。ビジュアル・ダッシュボードやロールベースのアクセス制御などにより IT インフラストラクチャを一元的に制御できます。

Red Hat OpenShift

エンタープライズ対応の Kubernetes コンテナ・プラットフォームで、ハイブリッドクラウド、マルチクラウド、エッジのデプロイメントを管理するフルスタックの自動運用機能を備えています。 

Illustration - mail

その他の関連コンテンツ

無料のニュースレター「Red Hat Shares」(英語) では、注目の IT トピックスに関するコンテンツをお届けしています。