はじめに
このチュートリアルでは、強力なオープンソースの IT 自動化ツールである Ansible を Ubuntu オペレーティングシステムにインストールする手順を案内します。Ansible の設定方法と、Ansible playbook を実行してインフラストラクチャ管理タスクを効率化する手順を学びます。
Ansible の理解
Ansible は、オープンソースのソフトウェアプロビジョニング、構成管理、アプリケーションデプロイメントツールです。シンプルで強力、かつエージェントレスな設計で、複数のリモートシステムを同時に管理および構成できます。
Ansible とは?
Ansible は、インフラストラクチャ、アプリケーション、サービスを宣言的かつイデンプテントな方法で管理する強力な自動化ツールです。システムの目標状態を定義するために、YAML というシンプルで人間が読みやすい言語を使用し、その状態を実現するために必要なタスクを実行します。
Ansible の主な機能
- エージェントレス: Ansible は、リモートシステムに特別なソフトウェアやエージェントをインストールする必要がありません。SSH (または Windows リモート管理) を使用してターゲットシステムと通信します。
- 宣言的アプローチ: Ansible は宣言的アプローチを採用しており、システムの目標状態を定義すると、Ansible がその状態を実現するための必要な手順を処理します。
- イデンプテント: Ansible のタスクはイデンプテントに設計されており、意図しない変更を引き起こすことなく、複数回実行できます。
- モジュール設計: Ansible はモジュール設計を採用しており、ファイルの管理、パッケージのインストール、クラウドサービスとの連携など、さまざまなタスクを実行できる幅広い組み込みモジュールがあります。
- シンプルで読みやすい: Ansible の YAML ベースの言語は、シンプルで読みやすく、開発者とシステム管理者の両方にアクセスしやすくなっています。
Ansible のユースケース
Ansible は、以下の広範なタスクに使用できます。
- インフラストラクチャプロビジョニング
- 構成管理
- アプリケーションデプロイメント
- オーケストレーション
- セキュリティとコンプライアンス
- CI/CD (継続的インテグレーション/継続的デリバリー)
Ansible のアーキテクチャ
Ansible は、クライアント - サーバーアーキテクチャを採用しています。Ansible コントロールノード (Ansible がインストールされているシステム) は、SSH または Windows リモート管理を介して、リモートターゲットシステム (管理対象のシステム) と通信します。
graph TD
A[Ansible コントロールノード] -- SSH/WinRM --> B[ターゲットシステム 1]
A -- SSH/WinRM --> C[ターゲットシステム 2]
A -- SSH/WinRM --> D[ターゲットシステム 3]
Ansible コントロールノードは、ターゲットシステム上で必要なタスクを実行し、ターゲットシステムは結果をコントロールノードに返します。
Ubuntu に Ansible をインストールする
前提条件
Ansible をインストールする前に、以下の前提条件を満たしていることを確認してください。
- Ubuntu 22.04 LTS システム
- Python 3 がインストールされている
- sudo 権限またはルート権限
Ansible のインストール
- パッケージインデックスを更新します。
sudo apt update
- 必要なパッケージをインストールします。
sudo apt install software-properties-common
- Ansible の PPA (Personal Package Archive) をシステムのソースリストに追加します。
sudo add-apt-repository --yes --update ppa:ansible/ansible
- Ansible をインストールします。
sudo apt install ansible
- インストールを確認します。
ansible --version
Ansible のバージョン情報が表示されるはずです。
Ansible の設定
- Ansible インベントリファイルを作成します。
sudo nano /etc/ansible/hosts
インベントリファイルにターゲットホストを追加します。たとえば:
[webservers]
192.168.1.100
192.168.1.101
[databases]
192.168.1.200
192.168.1.201
- Ansible 設定ファイルを作成します。
sudo nano /etc/ansible/ansible.cfg
必要な設定オプションを追加します。たとえば:
[defaults]
inventory = /etc/ansible/hosts
remote_user = ubuntu
- Ansible 接続をテストします。
ansible all -m ping
このコマンドは、インベントリファイル内のすべてのホストに ping を送り、接続を確認します。
これで、Ubuntu 22.04 システムに Ansible を正常にインストールし、ターゲットホストを管理するように設定しました。
Ansible Playbook の実行
Ansible Playbook とは?
Ansible Playbook は、YAML 形式のファイルで、インフラストラクチャやアプリケーションの目標状態を定義します。目標状態を実現するために、特定の順序で実行される一連のタスクを含んでいます。
Ansible Playbook の構成要素
基本的な Ansible Playbook は、以下の要素で構成されます。
- ホスト: Playbook が実行されるターゲットホストまたはグループ。
- タスク: Ansible がターゲットホスト上で実行するアクション。
- 変数: Playbook 全体で使用できる値。
- ハンドラ: その他のタスクによってトリガーされるタスク。
Ubuntu ホストのグループに Apache Web サーバーをインストールする例を示します。
- hosts: webservers
tasks:
- name: Install Apache
apt:
name: apache2
state: present
- name: Start Apache
service:
name: apache2
state: started
enabled: yes
Ansible Playbook の実行
Ansible Playbook を実行するには、以下の手順に従います。
- Playbook をファイル (例:
apache.yml) に保存します。 ansible-playbookコマンドを使用して Playbook を実行します。
ansible-playbook apache.yml
これにより、Playbook に定義されたタスクがターゲットホスト上で実行されます。
Playbook 実行オプション
さまざまなオプションを使用して、Playbook の実行をカスタマイズできます。
- Limit: 特定のホストまたはグループ上で Playbook を実行します。
ansible-playbook apache.yml -l webservers - Check: ドライランを実行して、変更される内容を確認します。
ansible-playbook apache.yml --check - Become: 管理者権限で Playbook を実行します。
ansible-playbook apache.yml --become
Ansible Playbook を理解し、活用することで、Ubuntu システム上のインフラストラクチャやアプリケーションのデプロイと設定を簡単に自動化できます。
まとめ
このチュートリアルを終了すると、Ansible とその機能、および Ubuntu システムに Ansible をインストールし、Ansible playbook を使用してインフラストラクチャ管理タスクを自動化するための知識をしっかりと習得しているはずです。


