7.2.2 YAML構文エラーに関する対処方法
(1)YAMLファイルのnameラベルとデータモデルのテーブル名でエラーが発生しYAMLが登録できない場合の対処
次の要因が考えられます。
- 名前が予約語と衝突しているおそれがあります。名前にプレフィックスを付けることで、予約語との衝突を回避してください。以下に予約語を示します。
項目 | 予約語 |
---|---|
YAMLファイルのnameラベル | acl、activity、api、cmdb、conf、datamodel、doc、opsi、otobo、otobo-mapping、policy、practice、resource、resource-api、schedule、statement、sys、system、task、ticket、ui、workflow |
ボタンのnameラベル | edit、revert_finish_editing |
データモデルのテーブル名 | group、mapping_group、node、role、sys、system、ticket、user |
- 予約語と完全に一致する場合、または予約語から始まり、かつ予約語の直後が_(アンダーバー)の場合はエラーが発生します。以下に使用例を示します。
使用できる場合 | 使用できない場合 |
---|---|
・xxx_mapping_group_yyy ・mapping_groupxxx_yyy |
・mapping_group ・mapping_group_xxx |
(2)エラーメッセージが表示されないが、意図しない動作になる場合の対処
次の要因が考えられます。
- Include対象となるYAMLファイルで、他のnameラベルと衝突しているおそれがあります。以下に例
を示します。
1つのUIでScriptAとScriptBをIncludeし、アクションとして「action」を定義します。ScriptA ではJS_A.js、ScriptBではJS_B.jsが実行されるように、どちらも「action」というnameラベルの アクションを定義した場合nameラベルが衝突し、AとBどちらのアクションが実行されるか不明確になり意図しない動作になります。
この場合は「A_action」、「B_action」などのようにnameラベルが衝突しないようにする必要があります。
(3)依存関係があるYAMLファイルを同時に登録(または削除)した後に、バリデーションエラーが起こっていた場合の対処
依存関係があるYAMLファイルのセットを同時に登録(または削除)し、かつYAMLファイルの一部にバリデーションエラーがある場合、エラーがないYAMLファイルも含めOps Iにドキュメント登録(または削除)されていない状態になります。
(登録時の例:Commit1、削除時の例:Commit3)
エラーを修正し、再度Commitすると、エラーがないYAMLファイルも同時に登録(または削除)されます。
この時、エラーがないYAMLファイルを再度Commit(または削除)する必要はありません。
(登録時の例:Commit2、削除時の例:Commit4)
エラーの有無はAPI「gitops-logs」で確認します。
【登録時の例】
関係:YAMLファイルAをYAMLファイルBが参照
Commit1:依存関係があるYAMLファイルA(エラーあり)とYAMLファイルB(エラーなし)を登録
①YAMLファイルA(エラーあり):Ops Iへの登録 失敗
②YAMLファイルB(エラーなし):Ops Iへの登録 失敗
Commit2:YAMLファイルAをエラー修正後、再度Commit
①YAMLファイルA(修正によりエラーなし):Ops Iへの登録 成功
再適用処理→YAMLファイルB(エラーなし):Ops Iへの登録 成功
【削除時の例】
関係:YAMLファイルAをYAMLファイルBが参照
Commit3:依存関係があるOps I登録済YAMLファイルAを削除
①YAMLファイルA:Ops Iへの削除 失敗(YAMLファイルBの参照があるため)
Commit4:依存があるYAMLファイルBを削除
②YAMLファイルB:Ops Iへの削除 成功
再適用処理→YAMLファイルA:Ops Iへの削除 成功