Ansible Terraform
技術検証結果報告書
新技術ワーキンググループ Bチーム(自動化)

Copyright©2021 Kanematsu Electronics Ltd. All rights reserved.

1.

概要-自動化とは-Ansible

アジェンダ-Terraform2.

検証内容・結果・所感-検証①Ansible-検証②③Terraform-検証④連携3.

まとめ

Copyright©2021 Kanematsu Electronics Ltd. All rights reserved.

1. 概要-自動化とは-Ansible

アジェンダ-Terraform2.

検証内容・結果・所感-検証①Ansible-検証②③Terraform-検証④連携3.

まとめ

Copyright©2021 Kanematsu Electronics Ltd. All rights reserved.

自動化とは=IaC（Infrastructure as Code）
インフラ構成を「コード」化して管理する手法。

Copyright©2021 Kanematsu Electronics Ltd. All rights reserved.

4Ansibleとは(概要)→Red Hat社によってオープンソースとして公開された構成管理ツール【構成管理ツールとは】
IT環境構築を自動化するプラットフォームであり、多数のアプリケーションとシステム導入を容易にする。

〇特徴
・一括管理
Ansibleがインストールされたサーバから一括で他の複数台のサーバに対して設定が可能。

・オープンソースソフトウェア
カスタマイズが容易なため導入コストを低く抑えられる。

・エージェントレス
Ansibleからネットワーク経由でマシンに繋がる限り事前準備不要※Windowsノードでは導入作業が必要

Copyright©2021 Kanematsu Electronics Ltd. All rights reserved.

5

Ansibleとは(事例)◇BPOサービス業

Copyright©2021 Kanematsu Electronics Ltd. All rights reserved.

6

Terraformとは(概要)→HashiCorp社によりオープンソースとして公開されたインフラストラクチャプロビジョニングツール【インフラストラクチャプロビジョニングツールとは】インフラをコード管理することで、安全かつ効率的な構築・変更・バージョン管理を実行可能とするツール。
構成管理と組み合わせて利用でき、管理台数が増えるほど効果を発揮する。

〇特徴
・マルチクラウド
クラウドサービスを提供する各社も独自の自動化ツールを提供してはいるが、Terraformを使用することで様々なクラウド環境の一括管理が可能。

・宣言的最終的なプログラムのあるべき姿を宣言するのみで良い。

・リソース間の依存関係/オーケストレーション
各リソースの依存関係を把握しており、設定を変更した際の影響を事前に把握

Copyright©2021 Kanematsu Electronics Ltd. All rights reserved.

7

Terraformとは(事例1)◇情報・通信業

Copyright©2021 Kanematsu Electronics Ltd. All rights reserved.

8

Terraformとは(事例2)◇情報・通信業

Copyright©2021 Kanematsu Electronics Ltd. All rights reserved.

9

AnsibleとTerraformの比較
AnsibleTerraform

リリース時期

2012年

2014年

開発社

Red Hat

メイン機能

構成管理

得意な管理

ソフトウェアHashiCorp
インフラストラクチャ
プロビジョニング
クラウドリソース

クラウドプロバイダ対応数

41300以上

構成記述方式

YAML

HCL

情報量

英語/日本語とも多い

日本語情報は少ない

Copyright©2021 Kanematsu Electronics Ltd. All rights reserved.

10

1.

概要
-自動化とは-Ansible

アジェンダ-Terraform2.

検証内容・結果・所感-検証①Ansible-検証②③Terraform-検証④連携3.

まとめ

Copyright©2021 Kanematsu Electronics Ltd. All rights reserved.

検証案【検証目的】
1.KELビジネスにおいてAnsibleを扱うために必要な知見を得る
2.Terraformを扱うために必要な知見を得る
3.検証目的1および2で得た知見を基にTerraformとAnsibleの連携を検証する【検証期間】
2020年10月6日～2021年2月末【検証概要】
検証①：Ansibleを用いてAzure上で仮想マシンの作成/管理を行う
検証②：Terraformの基本的な挙動を検証する
検証③：Terraformを用いてAzure上で仮想マシンの作成/管理を行う
検証④：AnsibleとTerraformを組み合わせてAzure上で仮想マシンの作成/管理を行う
Copyright©2021 Kanematsu Electronics Ltd. All rights reserved.

12検証環境準備
AzureCloudShell環境構築（作業内容：Azureポータルからストレージをマウント）-Azureリソースを管理するための、ブラウザでアクセスできる対話形式の認証されたシェル-AnsibleやTerraformなどのツールや、Pythonなどの言語は構成済み
Azureポータル

Cloud Shell
仮想マシンの構成管理など

各種リソースの作成/変更/削除など

ストレージ

リソースグループ 仮想ネットワーク IPアドレス

仮想マシンネットワーク
セキュリティグループ

Copyright©2021 Kanematsu Electronics Ltd. All rights reserved.

・ディレクトリ作成/変更/削除
・ユーザの作成・ミドルウェアの導入
・アプリケーションのデプロイ
・アップデートの適用
etc...

13

検証①Ansibleでの仮想マシン作成/管理【検証】
・Ansibleを用いてAzure上で仮想マシンの作成/管理を行う【目標】
・Azure上への仮想マシン作成がplaybookの実行のみで行えることを確認できること
・Azure上の仮想マシンへの設定変更/管理がplaybookの実行のみで行えることを確認できること【検証に必要なもの】
・playbook(YAMLファイル)

Copyright©2021 Kanematsu Electronics Ltd. All rights reserved.

14

検証①Ansibleでの仮想マシン作成/管理
評価・所感・考察
・既存リソースに対し自動で結びつけを行う（＝認識させる作業が不要な）ため、構築が容易。
・仮想マシンの構築時間はOSによる差が小さい。
・記述量が少なくシンプルなためYAMLファイル作成が容易。
ただし記述方式から少しでも外れるとエラーが出るため融通性は低い。
・学習コストを考えると少数マシンの自動化には非効率である。

Copyright©2021 Kanematsu Electronics Ltd. All rights reserved.

15

検証②Terraformでの基本的な挙動確認【検証】・Terraformの基本的な挙動を確認する。
【目標】
・簡易的なタスクが記載されたtfファイルを作成し、Azureに対してタスクの実行が可能であるのかを確認する。
【検証に必要なもの】
・tfファイル

Copyright©2021 Kanematsu Electronics Ltd. All rights reserved.

16

検証③Terraformでの仮想マシン作成/管理【検証】
・Terraformを用いてAzure上で仮想マシンの作成/管理を行う【目標】
・Azure上への仮想マシン作成がtfファイルの実行のみで行えることを確認できること
・Azure上の仮想マシンへの設定変更/管理がtfファイルの実行のみで行えることを確認できること【検証に必要なもの】
・tfファイル

Copyright©2021 Kanematsu Electronics Ltd. All rights reserved.

17検証②・③Terraformでの仮想マシン作成/管理
評価・所感・考察
・既存リソースとの結びつけには手動でインポートが必要なため自動化の恩恵が薄い。
・エラー内容が分かりやすく修正作業の負担は比較的軽い。
・実行までの過程が定められており、実行直前の確認(plan)で成功した場合にも実行(apply)でエラーが発生するため、過程が設けられている意図が不明。

Copyright©2021 Kanematsu Electronics Ltd. All rights reserved.

18

検証④AnsibleとTerraformの連携【検証】
AnsibleとTerraformの双方を用いて仮想マシンの作成/管理を行う【目標】• AnsibleとTerraformを組み合わせてAzure上で仮想マシンの作成/管理を行う【検証に必要なもの】
・tfファイル(仮想マシンを作成し、playbookを呼び出すremote execコマンドを記載)
・playbook(上記tfファイルで作成した仮想マシン内に新規ディレクトリ作成コマンドを記載)⇒エラー発生Copyright©2021 Kanematsu Electronics Ltd. All rights reserved.

19

検証④ AnsibleとTerraformの連携
エラー原因と結果
エラー内容：作成対象のファイルやディレクトリが存在しない・原因(技術)⇒1つのtfファイルに仮想マシン作成とその仮想マシンへの設定変更を記述すると、Terraformによる仮想マシンのプロビジョニングが完了する前に、Ansibleがplaybookを実行してしまうため「対象が存在しない」とエラーが発生した。
・原因(その他)⇒AnsibleとTerraformの連携については英語/日本語ともに参考資料が少なく、公式ドキュメントにエラーの解決方法が記載されていない場合は、自身で挙動確認及びエラー解決しなければならずプロジェクト期間内では解決できなかった。

Copyright©2021 Kanematsu Electronics Ltd. All rights reserved.

20

検証④ AnsibleとTerraformの連携
評価・所感/考察• AnsibleとTerraformを連携する公式ベストプラクティスがない。
• Ansible、Terraform双方の学習コストを考慮すると、使用用途に合わせどちらかを単体で活用した方が効率的である。
• Tfファイルにより仮想マシンが完成したあと呼び出したplaybookにエラーが発生した際、再度tfファイルを実行すると仮想マシンンを削除したあと作成し直すため、通常の倍時間を要する。
※補足• AzureCloudShellは自身らでバージョン管理できないため、検証環境として不向きである。

Copyright©2021 Kanematsu Electronics Ltd. All rights reserved.

21

1.

概要
-自動化とは-Ansible

アジェンダ-Terraform2.

検証内容・結果・所感-検証①Ansible-検証②③Terraform-検証④連携3.

まとめ

Copyright©2021 Kanematsu Electronics Ltd. All rights reserved.

技術的な評価項目

AnsibleTerraform

書き易さ

シンプルで可読性が高い変数を使用するため複雑リソースの依存関係

記述順序が厳しい

記述順序は緩い

ルール

改行やインデントが厳しい

比較的緩い

既存リソース

インポート不要

手動インポートが必要

表示

解読しづらい行数まで細かく表示

実行方法

実行のみ

init/plan/apply必要

構築時間

短時間
OSによる差異は少ない

Windowsマシン1台構築の所要時間は約3分

記述

エラー

実行

Copyright©2021 Kanematsu Electronics Ltd. All rights reserved.

23

総括■商材としての評価⇒IaC(自動化ツール)を案件の構築業務で活用、知見をもとに教育ビジネスの展開⇒Terraformは日本語の資料や、ユースケースが少なく学習コストが低いとはいえない⇒Terraformは開発が進み挙動が安定するまでは使用をお勧めしない■今後について⇒AnsibleとTerraformの連携を継続して検証⇒自動化ツールによるオンプレミス機器の設定

Copyright©2021 Kanematsu Electronics Ltd. All rights reserved.

24

Copyright©2021 Kanematsu Electronics Ltd. All rights reserved.

25