お問い合わせ
アカウント ログイン
Jump to section

YAML とは

URL をコピー

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

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

step 5

Red Hat Ansible Automation Platform の評価版で自動化を始めましょう。

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 と Red Hat Ansible Automation Platform の違いは何ですか?

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 トレイルマップ        

Ansibleトレイルマップは、Ansibleを学習し活用する過程を旅になぞらえてお伝えする手引書です。道に迷うことなく歩みを進め、Ansibleの世界を満喫しつつ経験を積み、楽しみながら自らの糧にできることを目指しています。

Ansibleの初学者の皆さん、Ansibleを共通言語として組織に浸透させたいTechリードの皆さん、自動化を次の段階に進めたいと考えているチームリーダーの皆さん、自動化の旅をAnsibleトレイルマップと共に歩んで行きましょう。

                        

関連資料

記事

Ansible の基本を学ぶ

Ansible は、プロビジョニング、構成管理などの IT プロセスを自動化します。主要な概念を含む Ansible の基本を確認できます。

記事

ビジネスプロセス管理とは

ビジネスプロセス管理 (BPM) とは、エンドツーエンドのビジネスプロセスをモデリング、分析、最適化して、戦略的な事業目標の達成を支援することです。

記事

Red Hat の自動化を選ぶ理由

Red Hat Ansible Automation Platform には、複数チームでの自動化の展開や企業全体での自動化の導入に必要なツールがすべて揃っています。

自動化の詳細はこちら

製品

Red Hat の戦略的アドバイザーが、企業組織の全体像を把握しながら課題を分析し、包括的かつコスト効率に優れたソリューションで課題を解決できるようお手伝いします。

エンタープライズ規模で自動化を実装するプラットフォーム。自動化導入のあらゆる段階に対応。

ビジネス上の意思決定とプロセスを自動化するクラウドネイティブ・アプリケーションを開発するためのプラットフォーム。

リソース

トレーニング

無料のトレーニングコース

Ansible Essentials: Simplicity in Automation Technical Overview

無料のトレーニングコース

Red Hat Ansible Automation for SAP

Illustration - mail

その他の関連コンテンツ

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