1. CI/CD For IaC機能

1.1. はじめに

本書では、CI/CD For IaC機能の機能および操作方法について説明します。

1.2. 用語の定義

本書では以下として記載します。
表 1.164 用語説明

用語名

内容

ITA

「Exastro IT Automation」の略語です。

紐付元資材

CI/CD For IaC機能で連携するGitリポジトリ内の資材を表します。

紐付先資材

ITAの連携ドライバ「Ansible-Driver」と「Terraform-Cloud/EP-Driver」と「Terraform-CLI-Driver」の下記メニューからアップロードする資材を表します。

  • Ansible-Legacy/Playbook素材集

  • Ansible-Pioneer/対話ファイル素材集

  • Ansible-LegacyRole/ロールパッケージ管理

  • Ansible共通/ファイル管理

  • Ansible共通/テンプレート管理

  • Terraform-Cloud-EP/Module素材集

  • Terraform-Cloud-EP/Policy管理

  • Terraform-CLI/Module素材集

1.3. CI/CD For IaC機能の概要

1.3.1. 機能概要

CI/CD For IaC機能は、大きく分けて2つの機能があります。
  1. Git連携機能
    ITA内にGitリポジトリのクローンを作成します。
    クローンを介して定期的に紐付元資材の更新を検知しITAの「リモートリポジトリ資材」メニューに一覧を作成します。
  2. 資材紐付機能
    紐付元資材と紐付先資材の紐付を登録し、紐付先資材の動作検証を行う為のオペレーションとMovementを登録します。
    紐付元資材が更新されると、紐付先資材が自動更新され、動作検証を行う為のオペレーションとMovementで作業実行を行います。

1.3.2. 機能概要図

CI/CD For IaC機能の概要図を以下に示します。
../../_images/CICD_overviews.png

1.4. CI/CD For IaC機能 メニュー構成

本章では、CI/CD For IaC機能のメニュー構成について説明します。

1.4.1. メニュー/画面一覧

CI/CD For IaC機能のメニュー一覧を以下に記述します。
表 1.165 表 2.1-1 CI/CD For IaC機能 メニュー一覧

No

メニューグループ

メニュー・画面

概要

1

CI/CD For IaC

リモートリポジトリ

Gitリポジトリの情報を管理

2

リモートリポジトリ資材

Gitリポジトリの資材情報を管理

※インストール時は非表示のメニューです。

3

資材紐付

紐付元資材と紐付先資材との紐付情報を管理

1.5. CI/CD For IaC機能 利用手順

CI/CD For IaC機能の利用手順について説明します。

1.5.1. 作業フロー

CI/CD For IaC機能の標準的な作業フローは以下のとおりです。
各作業の詳細は次項に記載しています。
../../_images/CICD_flow.png

作業フロー詳細と参照先

  1. リモートリポジトリの登録
    連携するGitリポジトリの情報を登録します。
    詳細は「リモートリポジトリ」メニューを参照してください。
  2. 資材紐付の登録
    紐付元資材と紐付先資材の紐付を登録します。
    詳細は「資材紐付」メニューを参照してください。
  3. 資材紐付にオペレーション+Movementの情報を登録
    更新された紐付先資材の動作検証を行う場合に、オペレーションとMovementを登録します。
    詳細は「資材紐付」メニューを参照してください。
  4. 自動での資材更新と動作検証の確認
    紐付元資材が更新される度に、紐付先資材が自動更新されることを確認します。
    また、オペレーションとMovementを登録している場合に、作業実行が自動で行われることを確認します。
    詳細は「資材紐付」メニューを参照してください。

1.6. CI/CD For IaC機能メニュー操作説明

本章では、CI/CD For IaC機能のメニュー操作について説明します。

1.6.1. CI/CD For IaC メニュー

本節では、CI/CD For IaC機能をインストールした状態で表示されるメニューの操作について記載します。

リモートリポジトリ

  1. 「リモートリポジトリ」メニューでは、連携するGItリポジトリの情報を登録します。
サブメニュー画面(リモートリポジトリ)

図 1.121 サブメニュー画面(リモートリポジトリ)

  1. リモートリポジトリ画面の入力項目は以下の通りです。
    表 1.166 リモートリポジトリ画面 入力項目一覧

    項目

    説明

    入力必須

    入力形式

    制約事項

    リモートリポジトリ名

    CI/CD For IaC 機能の各メニューでリモートリポジトリを示す名称を示す名称を入力してください。

    〇

    手動入力

    最大長255バイト

    リモートリポジトリ (URL)

    git clone コマンドに指定する Gitリポジトリの URL を入力してください。

    〇

    手動入力

    最大長255バイト

    ブランチ

    git cloneコマンドに指定する Gitリポジトリのブランチ名を入力して下さい。

    未入力時は default ブランチが指定されます。

    ー

    手動入力

    最大長255バイト

    プロトコル

    Gitリポジトリと接続するプロトコルを選択して下さい。

    ● https

    リモートのGitリポジトリとhttpsで接続する場合に選択してください。

    ● sshパスワード認証

    リモートのGitリポジトリとsshのパスワード認証で接続する場合に選択して下さい。

    ● ssh鍵認証(パスフレーズなし)※現在使用できません。

    リモートのGitリポジトリとsshの鍵認証で接続する場合に選択して下さい。

    ● ssh鍵認証(パスフレーズあり)※現在使用できません。

    リモートのGitリポジトリとsshのパスフレーズ付鍵認証で接続する場合に選択して下さい。

    〇

    リスト選択

    Visibilityタイプ

    GitリポジトリのVisibilityタイプ(Public/Private)を選択して下さい。 プロトコルでhttpsを選択した場合、 Visibilityタイプの選択は必須入力です。

    ー

    リスト選択

    Gitアカウント

    ユーザ

    Git cloneコマンド実行時に求められるユーザを入力して下さい。 VisibilityタイプでPrivateを選択した場合、ユーザの入力は必須です。

    ー

    手動入力

    最大長255バイト

    パスワード

    Gitのcloneコマンドを実行した際に求められるパスワードを入力してください。

    Visibility タイプでPrivateを選択した場合、パスワードの入力は必須です。

    尚、GitHubでは2021年8月13 日でパスワード認証が廃止されます。

    参考URL

    パスワード認証が廃止されている GitHub を利用している場合、Git アカウント情報のパスワードには、自身で個人アクセストークンを作成し入力して下さい。

    個人アクセストークン作成法

    ー

    手動入力

    最大長255バイト

    ssh接続情報

    パスワード

    Git cloneコマンド実行時に求められる Linux ユーザのパスワードを入力して下さい。

    プロトコルでsshパスワード認証を選択した場合、パスワードの入力は必須です。

    ー

    手動入力

    最大長255バイト

    パスフレーズ

    Git cloneコマンド実行時に求められる鍵ファイルに設定されているパスフレーズを入力して下さい。

    プロトコルでssh鍵認証を選択した場合、パスフレーズの入力は必須です。

    ー

    手動入力

    最大長255バイト

    接続パラメータ

    Gitのcloneコマンドを実行時に環境変数「GIT_SSH_COMMANDに設定するパラメータを入力します。

    GIT SSH COMMANDは、Git2.3以降のバージョンで設定できる環境変数です。 ITAサーバにインストールされていているGitバージョンがGit2.3より古い場合は、設定されたパラメータは無効になります。

    環境変数「GIT_SSH_COMMAND」はデフォルトで下記のパラメータを設定しています。 設定されたパラメータはこの後ろに追加されます。

    UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

    また、git config-globalにcore.sshCommandの設定が無い場合、下記のパラメータを設定します。

    ssh –o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

    git config –globalにcore.sshCommand を設定している場合、下記のパラメータを含めて下さい。

    -o UserKnownHostsFile=/dev/null-o StrictHostKeyChecking=no

    ー

    手動入力

    最大長4000バイト

    Proxy

    Address

    プロキシサーバのアドレスを入力します。

    ITA がプロキシ環境下にある場合、Gitサーバまでの疎通のために設定が必要な場合があります。

    プロキシサーバの URL が http://proxy.gate.co.jp:8080 の場合

    Address には http://proxy.gate.co.jp を入力します。

    Port には 8080 を入力します。

    ー

    手動入力

    最大長255バイト

    port

    プロキシサーバのポートを入力します。

    ITAがプロキシ環境下にある場合、 Git サーバまでの疎通のために設定が必要な場合があります。

    ー

    手動入力

    リモートリポジトリ同期情報

    自動同期

    Gitリポジトリとの同期を自動で行うかを選択して下さい。

    True:入力された周期で Gitリポジトリとの同期を行います。

    False:Gitリポジトリとの同期は自動で行いません。

    〇

    リスト選択

    初期値:有効

    周期(秒)

    Git リポジトリとの同期を自動で行う周期を入力して下さい。

    未入力時のデフォルトは60秒です。

    ー

    手動入力

    単位:秒

    通信リトライ情報

    回数

    Gitとの通信に失敗した場合、通信をリトライする回数を入力して下さい。 未入力時のデフォルトは 3 回です。

    ー

    手動入力

    周期(ms)

    Gitとの通信に失敗した場合、通信をリトライする間隔を入力して下さい。 未入力時のデフォルトは1000msです。

    ー

    手動入力

    単位:ms

    備考

    自由記述欄です。

    ー

    手動入力

    最大長4000バイト

  2. リモートリポジトリとの同期状態を表示する項目は以下の通りです。
    表 1.167 リモートリポジトリ画面 同期状態表示項目一覧

    項目

    説明

    備考

    状態

    Gitリポジトリとの同期状態を下記4つの状態で表示します。
    空白: レコードの新規登録・更新・廃止からの復活を行った状態
    正常: Git リポジトリとの同期が正常に行われている状態
    異常: Git リポジトリとの同期で異常が発生した状態
    再開: 再開ボタンをクリックした状態
    状態が異常になると、Git リポジトリとの同期が停止します。
    再開するには、再開ボタンをクリックするか、該当レコードを更新して下さい。

    詳細情報

    状態が異常になった場合、異常となった原因が表示されます。
    再開ボタンをクリックするか、該当レコードを更新すると詳細情報はクリアされます。

    最終日時

    最後に Git リポジトリと同期を行った日時が表示されます。
    再開ボタンをクリックするか、該当レコードを更新すると最終日時はクリアされます。

    再開ボタン

    状態が異常の場合にボタンが活性化します。
    再開ボタンをクリックすると状態が再開になります。

1.6.2. CI/CD For IaC 非表示メニュー

本節では、CI/CD For IaC機能をインストールした状態では表示されないメニューの操作について記載します。
各メニューにアクセスするには、「管理コンソール/ロール・メニュー紐付管理」で各メニューを復活処理を行うことによって表示されるようになります。

リモートリポジトリ資材

  1. 「リモートリポジトリ資材」メニューには、紐付元資材の一覧が表示されます。
    「リモートリポジトリ資材」メニューに表示される情報は内部機能で更新しています。
    レコード追加・更新・削除は行わないで下さい。
サブメニュー画面(リモートリポジトリ資材)

図 1.123 サブメニュー画面(リモートリポジトリ資材)

  1. リモートリポジトリ資材画面の表示項目は以下の通りです。
    表 1.170 リモートリポジトリ資材画面 項目一覧

    項目

    説明

    入力必須

    入力形式

    制約事項

    リモートリポジトリ名

    「リモートリポジトリ」メニューで登録したリモートリポジトリ名が表示されます。

    ○

    リスト選択

    資材パス

    紐付元資材の資材パスが表示されます。

    「リモートリポジトリ」メニューの「同期状態」が「異常」が設定されているリモートリポジトリの資材パスは表示されません。

    ○

    手動入力

    最大長4096バイト

    資材タイプ

    対象がAnsible-LegacyRoleの資材の場合は「Rolesディレクトリ」が、それ以外では「ファイル」が入ります。

    ○

    リスト選択

1.7. 付録

1.7.1. 資材をGitリポジトリに登録する場合の注意事項

資材をGitリポジトリに登録する場合の注意事項を以下に記述します。
  1. 256バイト以上の資材名が含まれるGitリポジトリを「リモートリポジトリ」メニューに登録すると、Git clone commandが異常終了します。
  2. ファイルパスも含めて4096バイト以上の資材名が含まれるGitリポジトリを「リモートリポジトリ」メニューに登録すると、Git clone commandが異常終了します。

1.7.2. ロールパッケージ管理に紐付する資材をGitリポジトリに登録する場合の注意事項

「Ansible-LegacyRole/ロールパッケージ管理」メニューに紐付する資材をGitリポジトリに登録する場合の注意事項を以下に記述します。
  1. rolesという名前のディレクトリを含むディレクトリを作成し、この配下にロールパッケージに必要なファイル・ディレクトリを配置して下さい。
    ロールパッケージとしてzipで固められる資材は、rolesディレクトリの上位ディレクトリ配下になります。ただし、Gitリポジトリのルートディレクトリ直下にrolesという名前のディレクトリを作成しても、「Ansible-LegacyRole/ロールパッケージ管理」メニューに紐付するrolesディレクトリとして認識しません。

    以下のようなファイル・ディレクトリ構成の場合、「sample/roles」はrolesディレクトリとして認識しますが、「roles」はrolesディレクトリとして認識しません。
    Gitリポジトリのルートディレクトリ
    リスト 1.25 Gitリポジトリのルートディレクトリ
    |-  roles          ・・・・・・・roles ディレクトリとして認識しません。
    |   |  ita_readme_test_role.yml
    |   |- test_role
    |      |-  defaults
    |      |     main.yml
    |      |-  tasks
    |            main.yml
    |
    |- sample
        | ita_readme_test_role.yml
        |- roles       ・・・・・・・roles ディレクトリとして認識します。
            |- test_role
               |- defaults
               |     main.yml
               |- tasks
                     main.yml
    
「資材紐付」メニューの資材パスに「sample/roles」が表示されます。「Ansible-LegacyRole/ロールパッケージ管理」メニューに紐付ける資材パスには、「sample/roles」を選択して下さい。
sample_role