Ansible をざっくり理解する
VPS 障害で初期化することになり、運用方針を見直しているところです。
各種ツールのインストールやアプリのデプロイを自動化するようにしました。
Ansible というツールを使います。
手動でサーバー構築する運用を見直しているところです。
さっと復旧できるようにするのが目的です。
自作サービスなどは Podman でコンテナ化して Systemd で起動管理するようにしました。
(前の記事:Podman でサービス運用)
順番が前後するのですが、まずは VPS を構築する必要があります。
nginx や podman のインストールを行い、それから自作サービスをデプロイします。
こんなことを Ansible を使って自動化できます。
Ansible とは
Ansible is an open source IT automation engine that automates provisioning, configuration management, application deployment, orchestration, and many other IT processes.
(AnsibleはオープンソースのIT自動化エンジンであり、サーバーの構築から設定管理、アプリのデプロイ、オーケストレーションなど、幅広いIT工程の自動化を実現します。)- Ansible の構成図です。ドキュメントより(Getting started with Ansible — Ansible Community Documentation)。
- Control node: Ansible を実行するホストです。例えばローカルPC。
- Inventory: 構築する対象のホストのリストです。
- Managed nodes: 構築する対象のホストです。

- Control node から Managed node へ SSH でアクセスして操作を行います。操作対象ホストに Ansible をインストールする必要はありません。
- 操作には冪等性があり、何回実行しても同じ結果になるように作られています。
(参考:Wikipedia: Ansible)
設定ファイル
以下の2つのファイルが設定ファイルです。
インベントリー
構築する対象のホストを書いておきます。[web_servers] vpsvpsのところは、~/.ssh/configの Host 名で設定することが出来ます。プレイブック
操作する内容を書いておきます(詳細後述)。
プレイブックの内容をざっくり理解
本当はちゃんと理解して書けるようになりたいところですが、今後は AI に書いてもらうことになりそうです。
読めるようにはなることを目指します。
プレイブックの例
AI が作ってくれたプレイブックです。(一部抜粋です。)
- name: VPS サーバーセットアップ
hosts: web_servers
become: yes
vars:
ansible_user: crescpia
tasks:
# --- パッケージインストール ---
- name: apt キャッシュを更新する
apt:
update_cache: yes
cache_valid_time: 3600
tags: [nginx, podman, python, certbot]
- name: nginx をインストールする
apt:
name: nginx
state: present
tags: [nginx]
- name: nginx サービスを有効化・起動する
service:
name: nginx
state: started
enabled: yes
tags: [nginx]
- name: podman をインストールする
apt:
name: podman
state: present
tags: [podman]
プレイブックは以下のような構造です。
- hosts: インストールなどの操作する対象のホストです。
- vars: 変数です。
- tasks: 実行する操作です。操作をいくつも書いていくことになります。
タスクについて
タスク部分は以下のような構造です。
# --- パッケージインストール ---
- name: apt キャッシュを更新する
apt:
update_cache: yes
cache_valid_time: 3600
tags: [nginx, podman, python, certbot]
- name: nginx をインストールする
apt:
name: nginx
state: present
tags: [nginx]
上記のaptの部分が操作に当たります。モジュール(module)と呼びます。
モジュールはたくさん定義されており、この定義名を指定します。
Index of all Modules — Ansible Community Documentation
モジュールというのは Python のモジュールとして理解すればいいと思います。apt installの apt を指定しているわけではなく、apt install の操作をする Python のモジュールがあるのでその名前を指定することになります。
ドキュメントによるとaptではなくansible.builtin.aptというように FQCN で書きなさいということです。AI にはまだこの情報は浸透していないのかな。
General tips — Ansible Community Documentation
# --- パッケージインストール ---
- name: apt キャッシュを更新する
apt:
update_cache: yes
cache_valid_time: 3600
tags: [nginx, podman, python, certbot]
- name: nginx をインストールする
apt:
name: nginx
state: present
tags: [nginx]
update_cache, cache_valid_time, name, state などはパラメータで、モジュールごとに指定できるパラメータがあります。
どんなパラメータを指定すればいいのかは・・・ドキュメントを見ます。
ドキュメントにはパラメータの説明の他に、Examples があり、いろいろな書き方の例が示されているので参考になります。
ansible.builtin.apt module – Manages apt-packages — Ansible Community Documentation
state というのが冪等性を指定する部分で、aptモジュールの場合は以下のように選択肢が定義されています。
・・・ここに説明はないですが、presentはインストール済みの状態にするということになります。
まとめ
Ansible のさわりだけ紹介しました。
サーバーのセットアップだけでなく、個人としても PC の買い替え時のセットアップなんかにも利用できると思います。
この時期、新しいメンバーの PC セットアップなどにも利用できるのではないでしょうか。
あと、プレイブックは YAML ファイルで、何をインストールしてどんな設定をしたかのドキュメントにもなります。