6. YAML定義

Ops Iではワークフローやデータモデルなど運用に必要な定義をYAMLファイルで記載することができ、運用のコード化(Operations as Code)を実現することができます。コード化した運用をOps Iに登録することで、各種運用機能に自動的に変換されます。

YAMLファイルで記載することができる運用機能の一覧と、運用の中では以下の通りです。

(図)YAMLファイルと運用機能の関係

(図)YAMLファイルと運用機能の関係 (図)YAMLファイルと運用機能の関係

(表)YAMLファイルで記載することができる運用機能

名称 説明
Workflow 運用に必要となるワークフローの定義を行います。
UI 画面に表示するデータ項目やレイアウトなど、UIの定義を行います。
Datamodel 各種データを保存するためのデータモデルの定義を行います。
Catalog ユーザーが各種申請を行う際の入り口となるサービスカタログの定義を行います。
Script 画面表示時やボタンをクリックした時など、何かしらのイベントを契機に実行されるアクションの定義を行います。
Attachment 運用の中で扱う添付ファイルの命名ルールの定義を行います。
Distribution 運用の中で発生する各種ドキュメントをどのようなルールでどこに保存するか定義を行います。
ACL Statementで定義した認可に対してユーザーやグループなどの適応先を定義します。
Statement URIやテーブルのレコードなど様々なリソースに対しての認可設定の定義を行います。
Notification Ops I上でのイベントを契機に、誰に通知するかと、通知する内容の定義を行います。
Notifier Notificationで定義された通知内容をどのように通知するか通知手段の定義を行います。
Skill 各ユーザーが保有する経験値や資格などのスキルを可視化するための定義を行います。
Skillset ワークフローの各ステップを実行するために必要なスキルをセット化して定義します。

Ops Iで運用機能をコード化する場合、定められた書式に従ってYAMLファイルを記述する必要があります。各運用機能のYAMLファイルの詳細な記述内容は「Workflow」~「Skill、Skillset」で記述します。すべての運用機能で共通となる書式は以下の通りです。

(表)YAMLファイルの共通書式

ラベル デフォルト値 必須 説明
apiVersion: 1.0 Yes APIバージョン
kind: Yes YAMLファイルの種類
type: No YAMLファイルのタイプを以下から選択
resource:Ops Iの機能拡張を行う
container:ドキュメント格納用のコンテナを作成する
name: Yes YAMLファイルの内部名。このYAMLファイルのディレクトリ名を指定する必要があります。
nameは以下のルールに従う必要があります。
・空白、英数字、“_” 、“.” 、“(” 、“)” 、“-”のみ使用可能
・先頭文字が英数字か“_”
※一部の運用機能は追加の制限があるので、各運用機能のYAML定義の説明を確認してください。
label: Yes YAMLファイルの表示名
includes: No このYAMLファイルで利用する関連YAMLファイルを記載。
※記載するYAMLファイルはこのYAMLファイル登録前にOps Iに登録されている必要があります。
- kind: Yes 読み込むYAMLファイルの種類
  name: Yes 読み込むYAMLファイルの内部名
description: No 詳細説明
※入れ子関係にないラベルの必須が「No」の場合は、定義が必須ではありません。入れ子関係にあるラベルの場合は、下層ラベルの必須は、上層ラベルの必須が「Yes」である場合に適用されます。

作成したYAMLファイルをOps I内のGitLabにcommitすると、Ops Iが自動的に対応した運用機能を生成します。YAMLファイルのファイル名は「manifest.yaml」でなくてはならず、nameラベルで指定した名称と同じディレクトリ配下にYAMLファイルを保存する必要があります。
また、kindラベルとnameラベルの組み合わせはOps Iで一意である必要があります。

YAMLファイルのnameラベルとデータモデルのテーブル名には、予約語との衝突を避けるため、プレフィックスを付ける必要があります。予約語と衝突した場合はエラーが発生します。詳細については、「YAMLファイルのnameラベルとデータモデルのテーブル名でエラーが発生しYAMLが登録できない場合の対処」を参照してください。
また、Include対象となるYAMLファイルで、他のnameラベルと衝突していると意図しない動作になります。詳細については「エラーメッセージが表示されないが、意図しない動作になる場合の対処」を参照してください。

YAMLファイルはユーザーが定義したグループ内の任意のリポジトリに登録することで、Ops Iから読み込むことができます。YAMLファイルの登録は「YAMLファイルのGitLab登録方法(GUI)」と「YAMLファイルのGitLab登録方法(CUI)」を参照してください。

(図)YAMLファイルの登録方法

(図)YAMLファイルの登録方法 (図)YAMLファイルの登録方法

また、YAMLファイルを定義する際、テンプレート機能を使用することができます。
テンプレート機能はドキュメント機能の1つで、YAMLファイルに環境パラメータとして定義した用語を、ユーザー定義パラメータやシステム定義パラメータに置き換えることができる機能です。多言語に対応させる場合などに有用です。


【ユーザー定義パラメータ】

テンプレート機能を使用する「YAMLファイル」と参照先となる値を記載する「テンプレートファイル」は、以下の条件を満たす必要があります。

  • YAMLファイルとテンプレートファイルは同フォルダに配置
  • テンプレートファイルのファイル名は「values.yaml」
  • YAMLファイルに記載する構文は以下の形式

"{{.Values.テンプレートファイル記載のパス}}"

または

`{{.Values.テンプレートファイル記載のパス}}`


<パラメータを使用できるYAMLファイル>
  • application
  • ui
  • library
  • catalog
  • skill
  • skillset
  • workflow

(図)テンプレート機能

(図)テンプレート機能 (図)テンプレート機能


【システム定義パラメータ】

Ops Iで使用できるシステム定義パラメータは以下の通りです。

(表)テンプレート機能で使用できるシステム定義パラメータ

システム定義パラメータ 説明
.System.domain Ops I環境のドメイン

YAMLファイルに記載する構文は以下の形式で記載してください。

<記載例>

"{{.System.domain}}"

または

`{{.System.domain}}`


<パラメータを使用できるYAMLファイル>
  • application
  • ui
  • library
  • catalog
  • skill
  • skillset
  • workflow



章構成

6.1 Workflow
6.2 UI
6.3 Datamodel
6.4 Catalog
6.5 Script
6.6 Library
6.7 Attachment
6.8 Distribution
6.9 ACL、Statement
6.10 Notification、Notifier
6.11 Application
6.12 Skill、Skillset