【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を使ってサーバー構築を試してみよう!