Ubuntu システムへの Ansible のデプロイ

AnsibleBeginner
オンラインで実践に進む

はじめに

このチュートリアルでは、強力なオープンソースの 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 のインストール

  1. パッケージインデックスを更新します。
sudo apt update
  1. 必要なパッケージをインストールします。
sudo apt install software-properties-common
  1. Ansible の PPA (Personal Package Archive) をシステムのソースリストに追加します。
sudo add-apt-repository --yes --update ppa:ansible/ansible
  1. Ansible をインストールします。
sudo apt install ansible
  1. インストールを確認します。
ansible --version

Ansible のバージョン情報が表示されるはずです。

Ansible の設定

  1. Ansible インベントリファイルを作成します。
sudo nano /etc/ansible/hosts

インベントリファイルにターゲットホストを追加します。たとえば:

[webservers]
192.168.1.100
192.168.1.101

[databases]
192.168.1.200
192.168.1.201
  1. Ansible 設定ファイルを作成します。
sudo nano /etc/ansible/ansible.cfg

必要な設定オプションを追加します。たとえば:

[defaults]
inventory = /etc/ansible/hosts
remote_user = ubuntu
  1. 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 を実行するには、以下の手順に従います。

  1. Playbook をファイル (例:apache.yml) に保存します。
  2. 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 を使用してインフラストラクチャ管理タスクを自動化するための知識をしっかりと習得しているはずです。