はじめに
このチュートリアルでは、強力な IT オートメーションツールである Ansible の実験(Lab)をセットアップする手順を案内します。これは、Ansible を学びたい初心者にとって重要なステップです。Ansible のインストールと設定方法、最初の Ansible プレイブックの実行方法を学び、インフラストラクチャをコードとして扱う世界への旅の基礎を築きます。
Ansible 入門
Ansible は、複数のホストにまたがるインフラストラクチャ、アプリケーション、システムを管理および構成することができる強力なオープンソースのオートメーションツールです。シンプルでエージェントレス(agentless)かつ高いスケーラビリティを備えているため、小規模環境から大規模環境まで幅広く利用できる優れたツールです。
Ansible とは何か?
Ansible は、インフラストラクチャの望ましい状態を宣言的な言語で定義する構成管理およびデプロイメントツールです。ターゲットホストに接続し、コマンドを実行し、望ましい構成が適用されるようにします。Ansible はエージェントレス(agentless)であり、ターゲットホストに追加のソフトウェアをインストールする必要がないため、セットアップとメンテナンスが簡単です。
Ansible の主要な機能
- エージェントレス(agentless): Ansible はターゲットホストに追加のソフトウェアをインストールする必要がないため、セットアップとメンテナンスが容易です。
- 宣言的言語: Ansible は宣言的言語を使用しており、インフラストラクチャの望ましい状態を定義すると、Ansible がその状態を達成するために必要な手順を処理します。
- シンプルで直感的: Ansible の構文は読みやすく書きやすいため、経験豊富なユーザーでも初心者でも使いやすいです。
- モジュール型設計: Ansible はモジュール型アプローチで設計されており、カスタムモジュールを作成して機能を拡張することができます。
- 冪等性(Idempotent): Ansible のアクションは冪等性があり、つまり何度実行しても意図しない変更が生じることはありません。
Ansible のユースケース
Ansible は、以下を含む幅広いタスクに使用できます。
- 構成管理: Ansible はサーバー、アプリケーション、インフラストラクチャコンポーネントの構成管理に使用できます。
- アプリケーションデプロイメント: Ansible は複数のホストにアプリケーションやサービスをデプロイし、一貫性のある信頼性の高いデプロイを実現できます。
- オーケストレーション: Ansible はローリングアップデートや災害復旧などの複雑なワークフローやプロセスのオーケストレーションに使用できます。
- セキュリティとコンプライアンス: Ansible はセキュリティポリシーを強制し、インフラストラクチャ全体でコンプライアンスを確保するために使用できます。
graph TD
A[Ansible] --> B[Configuration Management]
A --> C[Application Deployment]
A --> D[Orchestration]
A --> E[Security and Compliance]
次のセクションでは、Ansible 環境のセットアップ方法と最初の Ansible プレイブックの作成方法について説明します。
Ansible 環境のセットアップ
Ansible のインストール
Ansible を始めるには、まずコントロールノード(Ansible コマンドを実行するマシン)に Ansible をインストールする必要があります。この例では、コントロールノードとして Ubuntu 22.04 を使用します。
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository --yes --update ppa:ansible/ansible
sudo apt install ansible
インストールが完了したら、以下のコマンドを実行してインストールを確認できます。
ansible --version
これにより、システムにインストールされている Ansible のバージョンが表示されます。
Ansible の設定
Ansible の設定は /etc/ansible/ansible.cfg ファイルに保存されています。このファイルをカスタマイズして、デフォルトのインベントリファイル、リモートユーザー、SSH 接続パラメータなどを設定できます。
以下は、基本的な ansible.cfg ファイルの例です。
[defaults]
inventory = ./hosts
remote_user = ubuntu
private_key_file = ~/.ssh/id_rsa
この例では、インベントリファイルを ./hosts、リモートユーザーを ubuntu、秘密鍵ファイルを ~/.ssh/id_rsa に設定しています。
インベントリの作成
インベントリファイルは、Ansible が管理するホストを定義する場所です。単純なテキストファイルや動的インベントリスクリプトなど、さまざまな形式を使用できます。
以下は、単純なインベントリファイル (hosts) の例です。
[webservers]
web01 ansible_host=192.168.1.100
web02 ansible_host=192.168.1.101
[databases]
db01 ansible_host=192.168.1.150
db02 ansible_host=192.168.1.151
この例では、webservers と databases の 2 つのグループを定義し、それぞれに 2 つのホストを設定しています。
これで Ansible 環境のセットアップとインベントリの作成が完了したので、最初の Ansible プレイブックを実行する準備ができました。
最初の Ansible プレイブックの実行
Ansible プレイブックの作成
Ansible プレイブックは、ターゲットホストで実行したいタスクを定義する YAML ファイルです。webservers グループに Apache Web サーバーをインストールする単純なプレイブックを作成しましょう。
- hosts: webservers
tasks:
- name: Install Apache
apt:
name: apache2
state: present
- name: Start Apache service
service:
name: apache2
state: started
enabled: true
このプレイブックでは、2 つのタスクを定義しています。
- Apache Web サーバーパッケージをインストールする。
- Apache サービスを起動し、システム起動時に自動的に起動するように設定する。
Ansible プレイブックの実行
プレイブックを実行するには、YAML ファイル(例:apache.yml)を保存し、以下のコマンドを実行します。
ansible-playbook -i hosts apache.yml
このコマンドは、hosts インベントリファイルを使用して apache.yml プレイブックを実行します。
プレイブック実行の検証
プレイブックを実行した後、ターゲットホストで Apache サービスの状態を確認することで、インストールを検証できます。
ansible -i hosts -m service -a "name=apache2 state=status" webservers
このコマンドは、service モジュールを使用して webservers グループの Apache サービスの状態を確認します。
また、ターゲットホストの IP アドレスまたはホスト名を使用して Apache Web サーバーにアクセスすることで、インストールを検証することもできます。
Ansible プレイブックの構造
Ansible プレイブックは YAML 形式で記述され、いくつかの重要なコンポーネントで構成されています。
hosts: タスクを実行するターゲットホストまたはグループを指定します。tasks: ターゲットホストで実行するアクションを定義します。modules: パッケージのインストール、サービスの管理、ファイルの操作など、さまざまなタスクを実行する機能を提供する Ansible の組み込みモジュールです。
これらの基本概念を理解することで、インフラストラクチャやアプリケーションの管理タスクを自動化するためのより複雑な Ansible プレイブックを作成し始めることができます。
まとめ
このチュートリアルが終わる頃には、完全に機能する Ansible の実験(Lab)環境が整い、このツールの幅広い機能を探索する準備ができているでしょう。最初の Ansible プレイブックを実行できるようになり、インフラストラクチャの自動化と IT 運用の効率化の基礎が築けます。Ansible の初心者であろうと、スキルを拡充したい人であろうと、このガイドは Ansible の実験環境を始めるために必要な手順を提供します。


