【入門編】【コピペでOK】Ansibleのよく使う頻出モジュール20選と実践的な使い方 – インフラ構成管理(IaC)活用バイブル

やあ。クラウドの深淵を覗き込み、IaC(Infrastructure as Code)の荒波を乗り越えてきた君へ。

「サーバーの設定なんて、手作業でやればいいじゃないか」――かつて新人の頃の私もそう思っていた。だが、その考えがどれほど危険か、大規模環境で深夜3時の障害対応に追われた瞬間に思い知ることになる。

Ansibleは、単なる自動化ツールではない。それは、君が構築したインフラの「あるべき姿(State)」を定義し、何度実行しても同じ結果をもたらす「冪等性(Idempotency)」を担保するための最強の武器だ。

今日は、現場で血肉となっている「絶対に外せない頻出モジュール20選」を授けよう。これをマスターすれば、君の作業時間は劇的に短縮され、ヒューマンエラーは過去のものになる。

—

1. Ansibleを最短で最強の環境にする(セットアップ)

まずは環境を作ろう。Macなら一瞬だ。

Pythonの仮想環境を用意してAnsibleをインストール
python3 -m venv .venv
source .venv/bin/activate
pip install ansible

インストール確認
ansible –version

2. 最初のHello World: 「ping」で疎通を確認する

Ansibleにおいて最も重要なのは、対象サーバーと会話ができることだ。

自身のローカルを対象にpingを打つ
ansible all -i localhost, -c local -m ping

成功すれば `{“changed”: false, “ping”: “pong”}` が返ってくる。これが君の自動化の第一歩だ。

—

3. 現場で毎日使う!頻出モジュール20選

モジュールは「何をするか」を決める最小単位だ。これらを組み合わせれば、どんなサーバーも数分で組み上がる。

【パッケージ管理】

1. `apt` / `yum` / `dnf`: OSごとのパッケージマネージャ。`state: present` でインストール、`latest` で更新。
2. `package`: OSを意識せず共通化したい場合に使う。「とりあえず何か入れておけ」という時に便利。

【サービス制御】

3. `service`: プロセスの起動・停止・再起動。`enabled: yes` を忘れるな。再起動時に死ぬ事故を防げる。
4. `systemd`: より詳細なsystemd管理(リロードなど)が必要な場合に。

【ファイル操作(最重要)】

5. `template`: Jinja2テンプレートを用いて設定ファイルを動的生成する。実務の8割はこれだ。
6. `copy`: ローカルファイルをリモートへ送る。静的な設定に。
7. `file`: シンボリックリンク作成、パーミッション変更、ディレクトリ作成。
8. `lineinfile`: ファイル内の一部行だけ書き換える。多用注意(複雑化しやすいため)。

【システム・ユーザー管理】

9. `user`: ユーザー追加、削除、グループ付与。
10. `group`: グループ管理。
11. `hostname`: ホスト名の設定。
12. `authorized_key`: SSH公開鍵の配布。アクセス権限管理の要。

【コマンド実行】

13. `shell`: シェルスクリプト実行。ただし、「冪等性が担保できない」ため、極力モジュールを使うこと。
14. `command`: `shell`より安全だが、リダイレクトやパイプが使えない。

【その他便利機能】

15. `debug`: 変数の中身を表示する。デバッグの命綱。
16. `set_fact`: 実行中に変数を定義する。
17. `assert`: 前提条件のチェック。「OSがUbuntuじゃなければ止める」といった制御が可能。
18. `stat`: ファイルの存在確認。
19. `unarchive`: 圧縮ファイルの解凍。
20. `wait_for`: 指定したポートが開くまで待つ。デプロイ待ちに必須。

—

4. 実戦的なコード例:Webサーバー構築

これらを組み合わせた「現場のPlaybook」の雛形だ。これを読めば、Ansibleの作法が手に取るようにわかるはずだ。

—

  • name: Webサーバーの自動構築

hosts: webservers
become: yes # root権限で実行

tasks:

  • name: Nginxをインストール

apt:
name: nginx
state: latest
update_cache: yes

  • name: 設定ファイルをテンプレートから生成

template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
mode: ‘0644’
notify: restart nginx # 変更があった時だけ再起動する(効率化!)

  • name: サービスを起動して自動起動を有効化

service:
name: nginx
state: started
enabled: yes

handlers: # 変更があった時だけ発火する「ご褒美」のような機能

  • name: restart nginx

service:
name: nginx
state: restarted

—

先輩からのアドバイス:冪等性を守れ

Ansibleで最も大切なのは、「何度実行しても同じ結果になること(冪等性)」だ。
例えば、`shell: echo “127.0.0.1 site.com” >> /etc/hosts` を実行し続けると、実行するたびに同じ行が追記され、ファイルが巨大化して破綻する。

常に「そのモジュールは、既に設定済みなら何もしないか?」を意識してほしい。それができれば、君のインフラは強固で、管理コストが限りなくゼロに近い「美しいシステム」になる。

さあ、まずは小さな設定一つから自動化してみよう。分からないことがあれば、またいつでも聞きに来てくれ。エンジニアの旅は、まだ始まったばかりだ。

タイトルとURLをコピーしました