サーバを1台ずつ手で設定していませんか?Ansibleを使うと、構築手順を「コード」にして、何台でも同じ状態を再現できます。入門として要点をまとめます。
Ansibleの何が嬉しいのか
- 再現性: 同じPlaybookを流せば、誰がやっても同じ状態になる
- エージェントレス: 対象サーバに何も入れず、SSHで動く
- 冪等性: 何回流しても結果が同じ(すでに設定済みならスキップ)
手順書をWordで書いて手作業、から卒業できます。
インベントリ(対象一覧)
[web]
web01 ansible_host=192.168.10.11
web02 ansible_host=192.168.10.12
Playbook(やることの定義)
- hosts: web
become: true
tasks:
- name: nginxをインストール
apt:
name: nginx
state: present
- name: nginxを起動・自動起動
service:
name: nginx
state: started
enabled: true
「nginxが入っていて、起動している状態にする」を宣言的に書きます。どうやるかではなくどうあってほしいかを書くのがポイントです。
実行
ansible-playbook -i inventory site.yml
冪等性という考え方
Ansibleは「すでにその状態なら何もしない」ので、2回流しても壊れません。1回目は changed、2回目は ok(変更なし)になります。この安心感が、手作業との決定的な違いです。
まず小さく始める
いきなり全構築を自動化しなくて大丈夫です。「パッケージを入れる」「設定ファイルを配る」「サービスを起動する」——この3つができれば、日々の作業の多くをコード化できます。
つまずきポイント
- 対象へSSH鍵でログインできる状態を先に作る
become: true(sudo)の付け忘れで権限エラー- YAMLのインデント(スペース)に厳しい
まとめ
Ansibleは「手順書を実行可能なコードにする」ツールです。構築が再現でき、レビューでき、履歴を残せる。台数が増えるほど効果は絶大です。まずは1タスクから、手作業を1つずつコードに置き換えていくのがおすすめです。