4.10 自動化実行環境の拡張
追加モジュール(Ansibleコレクション、Pythonモジュール等)や追加ツール(AWS CLI、OpenTofu等)を使用した自動化を実現するためには、Ops Iで提供する実行環境を拡張する必要があります。ユーザーが拡張した実行環境を、ここではカスタム実行環境と呼びます。
実行環境の作成や管理は、Gitアプリケーション(GitLab)によって行います。また、自動化の実行は自動化アプリケーション(AWX)で行います。GitLabやAWXのマニュアルについては「OSSのバージョンおよびエディション、参照先のマニュアル」を参照してください。
自動化実行環境拡張の流れを以下に示します。
(図)自動化実行環境拡張の流れ
自動化実行環境拡張と自動化の実行は以下の流れで実施します。
- カスタム実行環境の開発:①、②、③
- カスタム実行環境の管理:④
- カスタム実行環境のAWXへの登録:⑤
- 自動化の実行:⑥、⑦
「カスタム実行環境の開発」、「カスタム実行環境の管理」、および「カスタム実行環境のAWXへの登録」を行うユーザーは、Pre-Installedロール「Site Reliability Engineer」が付与されている必要があります。
また「自動化の実行」を行うユーザーはPre-Installedロール「Operation Management Office Agent」が付与されている必要があります。
ロールについての詳細は「Ops I上のロールとサポート機能の対応関係」を参照してください。
また、実行環境の追加を行うには、組織内のロール「実行環境管理者」または「管理者」を付与されている必要があります。組織内のロールについては「組織管理」を参照してください。
さらに、GitLabのプロジェクトのforkを行うには、GitLabのグループ「ops-i-system-engineers」に対して「Maintainer」以上のGitロールが必要です。Gitロールについては「(表)グループ追加時の関連するリソースエリアのタブ」を参照してください。
各作業の詳細を以下に示します。
(1)カスタム実行環境の開発
カスタム実行環境の開発を行います。ここでの操作はGitアプリケーションで行います。
- GitLabのGUIで、「system」グループの「awx-ee」プロジェクトを選択します。「awx-ee」は読み取り専用のプロジェクトです。
- [fork]ボタンをクリックします。fork先を選択する画面が開くので「ops-i-system-engineers」を選択します。以下の項目を入力し、[Fork project]ボタンをクリックするとカスタム用プロジェクトが作成されます。
(表)カスタム用プロジェクトの入力項目
項目 説明 Project name 任意の値 Project slug 任意の値
ただし以下は予約語のため使用しないでください。- GitLabの予約語。該当の予約語は以下を参照してください。
https://docs.gitlab.com/16.11/ee/user/reserved_names.htmlまたはhttps://archives.docs.gitlab.com/16.11/ee/user/reserved_names.htmlの「Reserved project names」 - "opsi"で始まる値
Visibility level Privateを選択 - GitLabの予約語。該当の予約語は以下を参照してください。
-
forkしたプロジェクトの[Setting]-[General]を開き、[Visibility, project features, permissions]の[Expand]ボタンをクリックします。表示される以下の項目を有効化します。
- CI/CD
- Container registry
- カスタム用プロジェクトの以下のファイルに、自動化に組み込むモジュールやツールの情報を追記します。
(表)カスタム用プロジェクトの編集可能なファイルファイル 説明 _build/requirements.yml インストールされるansibleコレクションとロールのリスト
ansibleの要件ファイルの形式で記述されています。_build/requirements.txt インストールされるPythonパッケージのリスト
pipの要件ファイルの形式で記述されています。_build/bindep.txt インストールされるrpmパッケージのリスト
bindepの要件ファイルの形式で記述されています。_build/additional_script 上記3つのファイルをインストール後に実行するbashスクリプト
ユーザーはAWS CLI、OpenTofu等のツールをインストールすることができます。
(表)カスタム用プロジェクトの編集不要なファイルファイル 説明 Dockerfile Linux向けの実行環境のイメージを記述しています。ベースイメージはOps Iの組み込みの実行環境のquay.io/ansible/awx-eeです。カスタム用構成ファイルを参照しています。 .gitlab-ci.yml Dockerfileをビルドし、カスタム実行環境のイメージをContainer Registryにpushします。
- カスタム用プロジェクト[Repository]-[Tags]でカスタム用プロジェクトにタグを設定します。タグ名は任意の文字列を設定してください。また、タグはメインブランチに設定する必要があります。
タグの設定をきっかけにカスタム実行環境のイメージの構築が自動的に行われます。また作成されたイメージはカスタム用プロジェクトの「Container Registry」に自動的にpushされます。
イメージ名は以下の規則で命名されます。
registry.Ops Iのドメイン/ops-i-system-engineer/プロジェクト名:タグ名
注意事項
CI/CDパイプラインの実行は1時間を超えるとタイムアウトし、コンテナイメージのビルドに失敗します。
(2)カスタム実行環境の管理
「カスタム実行環境の開発」で開発したカスタム実行環境のイメージの管理を行います。作成済のイメージを参照したり、不要なイメージを削除するために必要な作業です。ここでの操作はGitアプリケーションで行います。
注意事項
「カスタム実行環境のAWXへの登録」でAWXの実行環境を登録する際、イメージを設定します。AWXへ登録済の実行環境に削除対象のイメージタグが設定されていないことを、実行環境の一覧画面の検索機能等を用いて確認してください。
イメージの管理の手順を以下に示します。
- カスタム用プロジェクトの[Packages and registries]-[Container Registry]を開くと「カスタム実行環境の開発」で開発したイメージが表示されます。
- カスタム用プロジェクトの[Settings]-[Packages and registries]-[Set cleanup rules]をクリックし、「Enabled」をチェックすることにより、Cleanup Policiesの実行を有効化します。それにより、設定したCleanup Policyに従って定期的にタグが削除されます。詳細はGitLabのマニュアルを参照してください。
https://docs.gitlab.com/16.11/ee/user/packages/container_registry/reduce_container_registry_storage.html#cleanup-policyまたはhttps://archives.docs.gitlab.com/16.11/ee/user/packages/container_registry/reduce_container_registry_storage.html#cleanup-policy
その結果、「カスタム実行環境の開発」で設定したタグが削除されます。
(3)カスタム実行環境のAWXへの登録
AWXがGitLabのカスタム実行環境(イメージ)にアクセスするための認証情報の登録と、カスタム実行環境のAWXへの登録を行います。 ここでの操作はGitアプリケーションと自動化アプリケーションで行います。
- GitLabアクセストークンを取得します。
詳細は「GitLabアクセストークン取得方法」を参照してください。ただし、GitLabアクセストークンを取得する際、「Select scopes」は「read_registry」をチェックしてください。 - GitLabアクセストークンを HashiCorp Vault secretに登録します。
詳細は「Secretの作成」を参照してください。 - カスタム実行環境にアクセスするための認証情報を登録します。認証情報の登録方法の詳細は「認証情報の登録」を参考にしてください。入力値について以下に示します。
(表)カスタム実行環境にアクセスするための認証情報項目 説明 名前 任意の値 認証情報タイプ コンテナーレジストリー 認証URL registry.テナント名.ops-integration.com ユーザー名 手順1でGitLabアクセストークンを取得したユーザー名 パスワードまたはトークン 手順1で取得したGitLabアクセストークン - カスタム実行環境をAWXに登録します。自動化アプリケーションの[管理]-[実行環境]で[追加]ボタンをクリックします。以下の項目を設定し、[保存]ボタンをクリックします。
(表)カスタム実行環境の登録項目 説明 名前 任意の名前 イメージ 「カスタム実行環境の管理」の手順1で表示されるイメージのURL
[Container Registry]画面からタグ付きのURLをコピーし、その値を設定します。
例:registry.テナント名.ops-integration.com/ops-i-system-engineer/プロジェクト名/タグ名プル 「実行前に必ずコンテナ―をプルする」か「イメージが存在しない場合のみ実行前にプルする」を選択してください。 レジストリ―の認証情報 手順3で作成したAWXアクセス用の認証情報
(4)自動化の実行
ここでの操作は自動化アプリケーションで行います。
- 自動化を行うためのジョブテンプレートを登録する際に、「カスタム実行環境のAWXへの登録」で登録したカスタム実行環境を設定します。ジョブテンプレートの登録方法は「ジョブテンプレートの登録」を参照してください。
- ジョブテンプレートを実行します。このときカスタム実行環境の設定にしたがって自動化処理が実行されます。
ジョブテンプレートの実行は、ワークフローから実施する等の方法があります。「ジョブ自動実行の設定手順」を参考にしてください。