ページの先頭です

ページ内を移動するためのリンク
本文へ (c)

ここから本文です。

GitLabCIを利用したコード自動チェックの取り組み

ライター:庄谷 信哉
2005年にネットワンシステムズに入社し、スイッチ製品の新旧技術の調査・検証業務を元に
ネットワーク提案、導入を支援する業務を経て、現在は、クラウド関連製品担当に従事。
最近は、企業システムの今後のマルチクラウド化を見据えたクラウド関連技術の最新動向に注目している。

目次

はじめに

前回、インフラをコードで管理するInfrastructure as Codeの取り組みについて、コンフィグレーションの差分チェックシナリオと、以下の様な仕組みで行われる Windows Update Playbookチェックシナリオを例にして、動作を説明させて頂きました。

上図のようにWindows Updateを実行するAnsible Playbookの品質管理を考えた場合、Ansibleのバージョンが変更された際でも以前と同様に動作が行えることをチェックするという観点が重要です。

そこで今回は、この品質管理を行う手法であるGitLab CIを利用した動作チェックを行う仕組みについて、詳しくご紹介します。

全体の流れ

動作チェックは、GitLab CI機能を用いて以下の順で実施されます。

① 静的解析

実行対象のAnsible Playbookに対して、静的解析・構文チェックを実施(ansible-lintyamllint

② テスト環境構築

vSphere環境上にテスト対象のWindows Server 2016インスタンスをデプロイ

③ テスト

②で作成したWindows Server 2016インスタンスに対して、Windows Updateを実施

④ テスト環境削除

vSphere環境上のテスト環境をクリーンアップ(削除)

①~④について順を追って解説します。

各処理の実施内容

① Lint Check(静的解析)

Lint Checkでは、Playbookの書き方が一定のルールに沿っているかの構文チェックを行います。
メンテナンス性の高いコードを維持するため、ルール違反を自動的にチェックする静的解析ツールを活用します。
このフェーズでは、以下の2つのツールを利用しています。

ansible-lint:Ansible Playbookの文法チェックツール
https://github.com/ansible-community/ansible-lint

yamllint:キーの繰り返しやインデントの問題など、構文の有効性を確認するコマンドラインユーティリティー
https://yamllint.readthedocs.io/en/stable/

② テスト環境構築

本テスト環境では、Ansible VMware modulesによりvSphere上にWindows Server 2016の仮想VM構築を実施しました。

https://docs.ansible.com/ansible/latest/modules/vmware_guest_module.html

【テスト環境】

Ansible 2.9.13

vSphere 6.7

Windows Server 2016

VM作成では、以下の様なAnsible Roleを利用しVM Templateからクローンを実施することでWindows Server 2016の検証環境を作成しています。
また各設定パラメータは、変数とすることで可変値とし、varsファイルにて構築するvSphere環境を切り替えられる様にしています。



③ テスト

今回は、Windows Server 2016に対してWindows Updateを実施しています。
利用したAnsible Roleでは、Windowsモジュールを利用して作成しています。
Windowsモジュールの詳細については、以下に記載されていますのでご参照ください。

https://docs.ansible.com/ansible/2.9_ja/modules/list_of_windows_modules.html#windows-modules

また、本テストでの注意点として、Windowsモジュールを利用する際、対象とするWindows Server側にPowerShell バージョン 3.0 および .NET Framework 4.0 以降が必要となります。

そのため、テスト環境構築する際のWindows Server 2016のVMテンプレートには、以下のサイトに記載されているPowerShell および .NET Framework のアップグレードが実施済みの必要があります。

https://docs.ansible.com/ansible/2.9_ja/user_guide/windows_setup.html

④ テスト環境削除

最後に、リソースの有効活用のためAnsible VMware modulesVM削除モジュールを利用してWindows Server 2016環境の削除を実施しています。
一連のGitlab CI機能を利用した処理の流れは、GitLab上でPipelinesとして成功/失敗の表示にて確認できます。

以下は、すべて処理が成功した際の表示例です。

まとめ

このような流れでGitLab CI,Ansible,vSphereを組み合わせたWindows UpdateAnsible Playbook動作チェックを行うことが可能です。

この仕組みの中では、Ansibleの最新バージョンによるAnsible Role動作チェックがGitLab CIにより自動で行われますので、Ansible Roleのバージョン互換性問題にいち早く気づくことが可能です。また、検証環境を構築してテストを行い、環境を削除する作業も自動で行うことが可能となり、検証にかかる工数、ヒューマンエラーの削減も実現できます。

今後もこのような自動化の例をご紹介していく予定ですので、ご期待ください。

※本記事の内容は執筆者個人の見解であり、所属する組織の見解を代表するものではありません。

RECOMMEND