【CI CD】Ansible(アンシブル)について - j-komatsu/myCheatSheet GitHub Wiki

Ansible(アンシブル)について

1. Ansibleとは?

読み方: アンシブル

Ansible は、サーバー構成管理やアプリケーションのデプロイを自動化するオープンソースツールです。シンプルでわかりやすい構文(YAML)を用いることが特徴です。

Ansibleの特徴

特徴 説明
エージェントレス クライアントに特別なソフトウェアをインストールせずに管理可能
シンプルな記法 YAMLを使ったPlaybookで構成管理
冪等性(べきとうせい) 何度実行しても同じ状態を維持できる
マルチプラットフォーム対応 Linux、Windows、クラウド環境など幅広く対応

【たとえ話】

Ansible は「リモートで指示を出すロボットの指揮官」。

  • 指揮官(Ansible)が兵士(サーバー)に指示(Playbook)を送り、環境を設定する。
  • 兵士(サーバー)は指示通り動作するが、特別な装備(エージェント)は不要。

2. Ansible の基本構成

Ansible の主な要素

要素 説明
Inventory 管理対象のサーバー情報を記述(ホストリスト)
Playbook 実行する処理を記述(YAML形式)
Module 各タスクを実行するための機能(ファイル操作、パッケージ管理など)
Task Playbook内で定義される具体的な処理
Role Playbookの再利用・整理のためのディレクトリ構造

Ansibleの処理フロー(Mermaid.js)

flowchart TD
  A[Ansible実行] -->|対象サーバーの指定| B(Inventory)
  B -->|タスク実行| C(Playbook)
  C -->|各処理を実行| D(Modules)
  D -->|サーバー状態変更| E(Managed Hosts)

3. Ansible のインストール

【初学者向け】

Ansible のインストール(Linux環境の場合)

# Ansibleをインストール(RedHat系)
sudo yum install ansible -y

# Ansibleをインストール(Debian系)
sudo apt install ansible -y

【専門者向け】

最新バージョンをPythonの仮想環境で管理する方法

# Python仮想環境を作成し、Ansibleをインストール
python3 -m venv ansible_env
source ansible_env/bin/activate
pip install ansible

4. 基本的な使い方

(1) Inventory ファイルの作成

# inventory.ini
[webservers]
192.168.1.10
192.168.1.11

[dbservers]
192.168.1.20

(2) Ansible の接続テスト

ansible all -i inventory.ini -m ping

(3) Playbook の作成と実行

【YAML形式のPlaybookの例】

- name: Apacheのインストール
  hosts: webservers
  become: yes
  tasks:
    - name: Apacheをインストール
      yum:
        name: httpd
        state: present
    - name: サービスを起動
      service:
        name: httpd
        state: started

【実行方法】

ansible-playbook -i inventory.ini playbook.yml

5. Ansible の応用例

(1) ユーザー作成の自動化

- name: ユーザー作成
  hosts: all
  become: yes
  tasks:
    - name: ユーザーを作成
      user:
        name: deployuser
        shell: /bin/bash

(2) Docker のセットアップ

- name: Dockerをインストール
  hosts: all
  become: yes
  tasks:
    - name: 必要なパッケージをインストール
      yum:
        name: ['yum-utils', 'device-mapper-persistent-data', 'lvm2']
        state: present
    - name: Dockerリポジトリを追加
      command: amazon-linux-extras enable docker
    - name: Dockerをインストール
      yum:
        name: docker
        state: present
    - name: Dockerサービスを起動
      service:
        name: docker
        state: started

6. まとめ

Ansible のメリットとデメリット

メリット デメリット
エージェントレスで簡単に導入可能 Windows管理はやや制限がある
YAML記法で直感的に書ける 大規模な環境では処理速度が遅くなることがある
冪等性があり、何度実行しても同じ結果になる 高度なカスタマイズにはJinja2やPythonスクリプトが必要

Ansible を活用することで、サーバーの設定管理をシンプルかつ自動化できます。特に、クラウド環境や大規模なインフラを管理する際には、非常に便利なツールとなります。

→ 次のステップ:実際にAnsibleを使ってサーバー構築を試してみよう!