
【この記事はこんな方に向けて書いています】
・サーバ設定やミドルウェア構築の手作業が面倒になってきたインフラエンジニア
・IaC(Infrastructure as Code)に挑戦したいけど何から始めればいいかわからない方
・Ansibleを導入して運用工数を半減したいと考えている方
「サーバのパッチ適用に毎週10時間かかってる…」「手順書どおりに設定しても抜け漏れがある…」――そんなお悩み、Ansibleが秒で解決してくれます。実際、ある調査ではAnsible導入後の手作業が74%削減され、運用工数が平均45%短縮されたと報告されています※1。この記事ではAnsibleの基本から実践まで、9つのステップでわかりやすく解説します!
- Ansibleとは?運用自動化の基礎
AnsibleはPython製のエージェントレス自動化ツール。SSH接続だけで管理対象ノードを操作し、Playbookと呼ばれるYAMLファイルに基づき設定・デプロイ・監視などを実行します。エージェント不要なため導入・運用コストが低く、学習コストも比較的ゆるやかです。 - 導入前の要件整理
- 制御ノード:Ansibleを実行するサーバ(Linux推奨)
- 管理対象ノード:SSHアクセス可能なサーバ群(Linux/Unix系、WindowsはWinRM)
- Python環境:制御・管理ノードともにPython 3.6以上推奨
- アクセス権限:SSH鍵やsudo権限の事前設定
- 制御ノード:Ansibleを実行するサーバ(Linux推奨)
インストールと初期設定
bash
コピーする編集する
# pip でインストール
pip install ansible==2.9.27
# バージョン確認
ansible –version
/etc/ansible/hosts に管理対象ノードをグループ化し、SSH鍵認証の設定を行います。
csharp
コピーする編集する
[webservers]
web1.example.com
web2.example.com
[dbservers]
db1.example.com
- インベントリと変数管理
インベントリにはグループ単位・ホスト単位でvarsディレクトリから変数を読み込むことが可能。ホスト固有のIPやポート設定はhost_vars/web1.example.com.ymlというファイルに書いておくと管理が楽になります。 - Playbookの基本構造
Playbookは以下5要素で構成されます:
- hosts:対象ホスト(例:webservers)
- become:sudo権限の有無
- vars:タスク内で使う変数
- tasks:実行するモジュールのリスト
- handlers:通知処理(再起動など)
- hosts:対象ホスト(例:webservers)
yaml
コピーする編集する
– hosts: webservers
become: yes
tasks:
– name: Apacheをインストール
apt:
name: apache2
state: present
– name: コンテンツを配置
copy:
src: index.html
dest: /var/www/html/index.html
handlers:
– name: Apache再起動
service:
name: apache2
state: restarted
- 主要モジュール活用法
- apt/yum:パッケージ管理
- copy/template:ファイル転送・テンプレート展開(Jinja2対応)
- service/systemd:サービス起動・停止
- user/group:ユーザー/グループ管理
- git:リポジトリ取得・更新
モジュールひとつで複数手順を置き換えられるため、手作業と比べてエラー率は平均90%減少します※2。
- apt/yum:パッケージ管理
ロール(Roles)で大規模化対応
Playbookが長くなる場合は、ロール機能で機能単位に分割すると再利用性・可読性が向上。
css
コピーする編集する
roles/
webserver/
tasks/
main.yml
templates/
vhost.conf.j2
vars/
main.yml
- こうすると、別プロジェクトでもroles: [webserver]で同じ設定を適用可能。
Vaultで機密情報を安全に管理
データベースパスワードやAPIキーはAnsible Vaultで暗号化。
bash
コピーする編集する
ansible-vault create secret.yml
# 実行時は –ask-vault-pass オプションで復号
ansible-playbook playbook.yml –ask-vault-pass
CI/CD連携で自動デプロイ
GitLab CIやGitHub Actionsなどに組み込み、コードのマージ時に自動テスト&デプロイを実行。
yaml
コピーする編集する
# .gitlab-ci.yml例
stages:
– deploy
deploy:
stage: deploy
script:
– ansible-playbook -i inventory/production playbook.yml
数値データで見る効果
- 手作業工数削減率:74%※1
- ユニットデプロイ時間:従来30分→5分(▲83%)
- 人為的ミス削減:エラー率5%→0.5%(▲90%)
- 学習曲線:初学習者が基本プレイブック作成までに要する時間は約20時間(Udemy受講者平均)※3
Ansibleを使えば、単なる設定自動化だけでなく、運用の標準化・属人化排除・CI/CD連携まで一気通貫で実現できます。最初は小さなPlaybookから始め、ステップごとに拡張していくのがおすすめ。今日から「9つのステップ」でAnsibleマスターを目指しましょう!
コメント