「Ansibleはどんなもの?自動化ってどういうこと?」
「Ansibleは、他の構成管理ツールとなにが違うの?」
と悩んではいませんか。
構成管理ツールを導入し自動化することで、作業の効率化が図れます。しかし、Ansibleで具体的に何ができるのか、どう効率化につながるのかイメージしづらい方もいるでしょう。
そこで今回は、構成管理ツールの中でも特に人気の高い『Ansible』について解説します。
具体的には
• Ansibleとは一体どんなものなのか
• Ansibleでできること・できないこと
• Ansibleの導入メリットと手順
などを紹介。
また記事の後半では、他の類似ツールとの違いやAnsibleの案件相場なども合わせて紹介しています。構成管理ツールの導入を検討している方や、Ansibleを仕事でも活かしたいといった方はぜひ参考にしてください。
1.【初心者向け】Ansibleとは?
出典:Red Hat Ansible Automation Platform|Ansible
Ansibleとは、有名なオープンソースの構成管理ツールのひとつ。開発はLinuxのディストリビューションも提供しているRedHat社が行っており、Pythonで作られています。
1.1 Red Hatの構成管理ツール
RedHat社が提供するAnsibleは、サーバ構成やネットワーク構成など従来は人力で管理していた複雑な設定を「Playbook」というファイルにまとめて少ないステップですぐに実装・管理できるツールです。
主な管理対象には以下が挙げられます。
• サーバ構成
• ネットワーク構成
• ソフトウェア構成
• 外部サービスとの連携
Ansibleは、YAML形式で書くPlaybookというファイルを用いてこれらの「構成」を管理します。管理ホストに実装する必要な設定や手順を、そのまま保存できる形式です。
クライアントレスのため、他の構成管理ツールと比較して導入しやすいことが魅力でしょう。
なおAnsibleは権限管理やPlaybookの実行履歴管理などに適した「Ansible Tower」も提供しています。Ansible Towerを使うとユーザー管理がしやすく、プログラマー以外でも安全にPlaybookを使うことができるようになります。開発担当者と運用担当者の切り分けなどもしやすく、開発効率も上がりやすくなるでしょう。
1.1.1 構成管理とは
ITシステムを構成する要素の例としては、以下が該当します。
• 電源などの設備
• ハードウェア
• サーバー
• ライセンス
• ソフトウェア
• ネットワーク
構成管理とは、こうした「システムを構築する要素」を管理するもの。特に重要となるのは、システムがアップデートやパッチの適用などで動作しなくなったときです。システムを正常に動作させるためには「アップデート前のバージョンにシステムを戻す」のが手早い解決策ですが、そもそも「正常に動作していた構成」が分からなければ対処しづらくなってしまいます。こういった問題を解決するために、構成管理しているのです。
とはいえ、システムの規模が膨れ上がるほど「サーバーの構成管理」などは手間が大きくなります。よって特に安定稼働に欠かせないネットワーク構成やサーバー構成の管理を効率化するために「Ansible」は重用されています。
ちなみに構成管理と似た言葉に「IT資産管理」があります。一緒にされることが多いですが、IT資産管理はライセンス違反の防止が大きな目的です。構成管理はITサービスを安定的に提供することが目的なため、違う点に注意しましょう。
1.2 Ansibleはインフラ構築を3ステップで実施可能
通常インフラ構築には、下記の6つの手順が必要です。
2. 手順書作成
3. クラウド/HW設定
4. OSインストール設定確認試験
5. ミドルウェアインストール設定確認試験
6. 作成アプリリリース設定試験
手順が多く時間がかかってしまうのはもちろん、設定ミスなどが発生してしまう可能性もあります。こういった問題を解決できるのが、Ansibleの大きな魅力です。
Ansibleでは、
2. Playbookの作成
3. Ansibleの実行
の3ステップでインフラ構築が完了するため、インフラ構築にかかる時間を大幅に短縮できます。また実行して構築までできるため、人的コストの削減もできるでしょう。
1.3 Ansibleでできること・できないこと
Ansibleでできることとできないことを分かりやすくまとめると、以下の通りです。
Ansibleでできる3つのこと
• インフラ構築の自動化
• 継続的インテグレーション
• サーバーインフラ全体の制御
Ansibleでできない2つのこと
• GUIによる制御や組織での運用は発展途上
• Windows対応も発展途上
これだけではイメージしづらいこともあると思いますので、詳しく解説します。
1.3.1【できること】インフラ構築の自動化
1つ目に紹介するAnsibleでできることは、先ほども紹介した「インフラ構築の自動化」です。Ansibleを使えば先ほど紹介した、設計・Playbookの作成・Ansibleを実行する、の3ステップでインフラ構築が完了します。
従来の工程では
• クラウド/HW設定
• OSインストール設定確認試験
• ミドルウェアインストール設定確認試験
• 作成アプリリリース設定試験
など設定を手動でやらなければいけませんでしたが、Ansibleでは自動で進めてくれるため手間や時間の削減が可能です。
1.3.2【できること】継続的インテグレーション
2つ目に紹介するAnsibleでできることは、「継続的インテグレーション」です。
継続的インテグレーションとは「Continuous Integration」略してCIといわれます。
開発を行うときに厄介なのが、変更後のファイルをリポジトリにマージするときです。担当していた機能を作り切ったあとにマージしてしまうと、変更範囲が大きく予期せぬバグが発生してしまう可能性も。
こうした時に役立つのが「CI」。CIツールを利用すれば、変更したコードをすぐにリポジトリにマージしてビルドとテストを実行できます。そのため仮にバグが見つかっても変更箇所が少なく、原因の特定や対処がしやすいです。
1.3.3【できること】サーバーインフラ全体の制御
3つ目に紹介するAnsibleでできることは、「サーバインフラ全体の制御」です。
これまでサーバーインフラは、複数人でそれぞれのサーバーを担当し管理していることが一般的。仮に機器設定に変更があった場合も手作業で変更しなければいけないことが多く、担当者の負担が大きい問題がありました。
ですがAnsibleは
• 多数サーバの管理
• ネットワーク
• クラウド
• インフラ構築の自動化
などをまとめて管理・制御できるため、インフラ全体のコスト削減が可能です。
1.3.4【できないこと】GUIによる制御や組織での運用は発展途上
ここからは、Ansibleでできないことをご紹介します。
まずAnsibleはコマンドで操作するため、基本的に「Ansible単体」ではGUIによる制御はできません。また組織での運用も、Ansible単体では発展途上です。
ただし、Ansible Towerを導入すればGUIにもよる制御が可能になります。 ダッシュボードから管理や操作ができるため、プログラミングの知識や技術の浅い担当者でも扱いやすくなります。また、複数人での管理も可能です。
1.3.5【できないこと】Windows対応も発展途上
Ansibleは主にLinuxディストリビューションなどを対象に発展してきたツールのため、Windowsへの対応は遅れて進んだ経緯があります。
AnsibleのWindows対応は2021年現在積極的に進んでいます。またWindows OS自体も、WSL(Windows Subsystem for Linux)などLinuxとの互換性を大きく高めています。
とはいえWindows対応は発展途上でもあり、Windows環境で運用する場合は細かなところで機能面に制限がつく可能性があります。
2. Ansibleと類似製品の違い
ここまでAnsibleのできることできないことをお伝えしました。しかし、他の類似製品とどこが違うのか分からない方もいるのではないでしょうか。
そんな方に向けて、Chef(シェフ)とPuppet(パペット)との違いを表にまとめました!
Ansible | Chef | Puppet | |
---|---|---|---|
プログラミング知識 | 不要 | 必要 | 必要 |
言語 | YAML形式 | Rudy | PuppetDSL |
エージェント | 不要 | 必要 | 必要 |
操作対象 | Linux/Windows/Mac Rest操作可能な機器 | Linux/Windows/Mac | Linux/Windows/Mac |
導入のしやすさ | 簡単 | やや難しい | やや難しい |
可用性 | 高い | 高い | 高い |
管理性 | 簡単 | やや難しい | 難しい |
相互運用性 | 高い | 高い | 高い |
価格(100ノード) | 約110万円 | 約150万円 | 約120~220万円 |
表をみてわかる通り、プログラミング知識や導入しやすさ管理のしやすさなどが他の構成管理ツールと比較してみると優れていることがわかります。
また価格も、他のツールより比較的安価なのも導入しやすいポイントです。
なかでも一番のポイントは、他の構成管理ツールはプログラミングの知識が必要になってしまう点でしょう。Ansibleは専門的なプログラミング知識を必要としないため、専門知識を持ち合わせていない担当者でも利用できます。
3. Ansibleの導入メリット
Ansibleを導入することでいくつものメリットが得られますが、構成管理ツールだけを導入した時のメリットとどう違うのでしょう。
• 構成管理ツール導入のメリット
• Ansible導入によるメリット
の2つに分けてそれぞれの導入するメリットを紹介していきます。
3.1 構成管理ツール導入のメリット
構成管理ツールを導入するメリットは、大きく以下の3つが挙げられます。
• 安全性があがる
• 作業効率が上がる
• 他ツールと連携して更なる自動化効率化が実現できる
構成管理ツールを導入すればシステムの更新時などに「誰が・いつ・何を変更したか」確認できるため、エラーや問題が起きた場合も原因を特定しやすいです。
また設定したファイルを実行するだけで、簡単にインフラ環境を構築できます。さらに他の自動テストツールやバージョン管理ツールなどにも連携可能なため、構築や管理だけでなく広い範囲で効率化が可能です。
そして、こうした効率化を「エージェントレス」かつ「読みやすく、書きやすい」環境で実現できるのがAnsibleと言えます。
3.2 Ansible導入によるメリット
構成管理ツールを導入するとこれまでの作業の効率化や管理がしやすくなるといったメリットが得られますが、Ansibleを導入することでさらに以下のメリットが得られます。
• エージェントレス
• YAML形式で読みやすく書きやすい
• 多数の製品や機器に対応
それぞれ詳しくお伝えします。
3.2.1 エージェントレス
エージェントレスとは、管理対象のホスト(サーバーなど)にインストールしないといけないツールやシステムが必要ないことをいいます。
AnsibleはSSHを利用しリモートで動かすことが可能なため、余計なツールを入れる必要がなく安全性も高いのが魅力です。
他の構成管理ツールの場合、専用のソフトウェアをインストールしておくのが一般的なため、ツールの導入が必要ないことや遠隔で動かせられるのは非常に良い点と言えます。
3.2.2 YAML形式で読みやすく書きやすい
Ansibleの2つ目のメリットは、YAML形式でプログラミング知識や言語の知識が浅くても読みやすく書きやすいことです。
他の構成管理ツールの場合、プログラミング言語を理解していないといけないため非プログラマには扱いが難しい問題がありました。
ですがAnsibleはYAML形式というプログラマでなくても理解しやすい形式を採用しているため、担当できる人の選択肢が増え人件費を抑えることにも繋がります。
またYAML形式は、プログラミング言語のように人によって書き方の癖がでにくい形式です。そのため、途中で担当者が変わっても引継ぎやすいでしょう。
3.2.3 多数の製品や機器に対応
Ansibleのメリットとして最後に紹介するのは、多数の製品と機器に対応している点です。
Ansibleはすでに800以上のモジュールがあるため、
• バージョン管理ツール(Git、SVN)
• 自動テストツール(Serverspec等)
• 統合監視ツール(Zabbix、Nagios等)
などとの連携がしやすいです。
またSlackなどのチャットツールと連携した運用作業も可能なため、複数人との運用でもコミュニケーションが取りやすいのが魅力。
多くの製品と連携できるため、すでに導入しているツールとも併用しながら運用できます。使い慣れたツールを使いつつ、作業コストを下げられるので非常に便利です。
4. Ansibleのラインナップ(エコシステム)
ここからはAnsibleのラインナップを紹介します。Ansibleで扱っているシステムは以下の通りです。
• Ansible-Galaxy
• Ansible Tower
• Ansible-Container
• TestInfra
それぞれ詳しく紹介します。
4.1 Ansible-Galaxy
Ansible-Galaxyは、Ansibleで利用するPlaybookをロール単位で分けたものを共有できるサイトです。
ロールとは、
• 〇〇の動作をさせたい
• ××のの動作をさせたい
など、一定の細かい動きや効果などを記載したコードのテンプレートようなものです。拡張機能をイメージしてもらうと分かりやすいかもしれません。
Ansible-Galaxyでは、ユーザーが作ったさまざまなロールがダウンロードできます。
4.2 Ansible Tower
Ansible Towerは、RedHat社がサブスクリプションとして提供しているサービスの1つです。2016年から日本でも利用できるようになりました。
Ansible単体ではできなかった、アクセス権限を複数人で管理できるようになっているほかにも、視覚的にも使いやすいのが特徴です。
Playbookの連携機能があり
• GUI(画面操作)
• CLI(コマンド操作)
• RESTAPI(外部から操作しやすい仕組み)
に対応しているため、非プログラマでも使いやすいインターフェースになっているのが特徴です。
ダッシュボードに機能が全てまとまっており、スケジュール管理からアクセス権限、ユーザーの管理までさまざまな操作できます。
4.3 Ansible-Container
Ansible-Containerは、Ansibleを用いたDockerコンテナを作成するツールです。
2021年現在は非推奨となっているため使われることは少ないです。
Ansibleロールを使って
• イメージの構築
• プロジェクトの初期化
• 既存プロジェクトのサービス追加
などができる機能がありました。
4.4 TestInfra
TestInfraとは、Python製のインフラテストツールの1つです。
Ansible専用のものではなく、Ansible以外にもChef、Puppetなどの構成管理ツールでも使えます。
デプロイする時やバージョンの更新、アップデート時バグは起きていないか、問題なく正常に機能しているか確認するために使うツールです。
「pip」がインストールされていれば以下のOSで利用できます。
• Linux
• BSD
5.【CentOS向け】Ansibleの導入手順
先に簡単に流れを説明すると以下の通りです。
2. Pythonのパッケージツール「pip」をアップデート
3. Ansibleをインストール
4. Ansibleが正常にインストールできているか確認
インストールする際のコマンドと合わせて分かりやすく解説します!
【環境】
CentOS | 8.0.1905 |
---|---|
Python | 3.6.8 |
Ansible | 2.9.2 |
1. Pythonを下記のコマンドでインストール
すでにPythonを追加している人は、インストール手順2. へ進んでください。
$ sudo dnf install python3 -y
Pythonがインストールされているか確認したい場合は、下記のコマンドで確認してみてください。
$ python --version
2. Pythonのパッケージ管理ツール「pip」のアップデートを行う
$ sudo pip3 install --upgrade pip
3. Ansibleをインストールする
$ sudo yum install ansible
4. Ansibleのインストールがちゃんとできたか確認する
$ ansible --version
6.【Ubuntu向け】Ansibleの導入手順
先に簡単に流れを紹介すると以下の通りです。
2. Ansibleをインストールする
3. Ansibleがインストールできているか確認する
インストールする際のコマンドと合わせて詳しく紹介します。
【環境】
Ubuntu | 20.04 LTS |
---|---|
Python | 3.8.5 |
Ansible | 2.9.2 |
1. 以下のサイトで、PPAをシステムにインストールする
https://launchpad.net/~ansible/+archive/ubuntu/ansible
2. 以下のコマンドを入力しAnsibleをインストールする
$ sudo apt update
$ sudo apt install software-properties-common
$ sudo add-apt-repository --yes --update ppa:ansible/ansible
$ sudo apt install ansible
3. Ansibleが正常にインストールできているか確認する
$ ansible --version
上記のコマンドを入力し、「Ansible 2.9.2」と表示されたら正常にインストールが完了しています。
7.【エンジニア向け】Ansible案件の概要・傾向・相場
Ansibleの案件の多くは、インフラエンジニア・サーバーエンジニア向けが多いです。
案件例
• サービスのインフラ運用
• システムサービスの保守
• スマートフォンアプリ向けのゲーム開発
基本的にはインフラの運用と保守が多く、中には開発に携わる案件もあります。相場はおよそ月50~85万円です。
Ansibleのみを扱う案件もありますが、開発に関連した案件もあります。場合によっては、開発に携わるプログラミング言語の経験や知識を求められることもあるでしょう。
また、
• AWSによるインフラ構築や運用経験
• Azureによるインフラ構築や運用経験
• GitやGitHubの利用経験
• 自動化プロダクトの経験
などがあると、保守や運用の案件でも高単価となりやすいです。
8. まとめ
ここまで、Ansibleについてさまざまなことをお伝えしてきました。最後に改めておさらいしましょう。
Ansibleとは、構成管理ツールの1つです。
Ansibleは以下の特徴があります。
• エージェントレスなため対象ホストにシステムなどをインストールする必要がない
• YAML形式を採用しているため読みやすく書きやすい
• 多数の製品や機器に対応、連携可能
Ansibleは構成管理ツールのなかでも導入しやすく、YAML形式を採用しているため非プログラマでも管理しやすいです。
一方で、以下はAnsibleでできない点なので、導入前に確認しておきましょう。
• GUIによる制御や組織での運用は発展途上
• Windows対応も発展途上
とはいえ構成管理ツールの中では扱いやすく、これからインフラ構築周りを勉強したい方、扱えるようになりたい方にもおすすめのツールです。インストール方法も難しくないため、興味のある方はぜひ試してみてはいかがでしょう。