✍️
備忘録:Ansible PlaybookによるRaspberry Pi 5のロケール設定とDockerインストールの自動化
Ansible PlaybookによるRaspberry Pi 5の自動設定の備忘録。
1. 動作環境
- macOS : 15.7.3
- Raspberry Pi OS : Debian 13 Trixie
- ansible : 11.8.0
2. 概要
Ansibleを使ってRaspberry Pi 5の以下の設定を自動化する。
- ロケール(ja_JP.UTF-8)の設定
- Dockerのインストール
- piユーザーのdockerグループへの追加
3. 事前準備
-
Ansibleのインストール
以下の公式サイトを参考にAnsibleをインストールする。 -
Raspberry Pi OSのインストール
Raspberry piにSSHでリモートログインできる状態にする。以下の手順を参照。
4. Ansible Playbookによる自動化
以下の2つのファイルを準備してansible-playbookコマンドを実行する。
- インベントリー
- Playbook
4.1. インベントリーの記述
対象サーバの一覧(イベントリー)を記述する。
hosts.ini
[RPi5]
raspberrypi5.local ansible_user=pi ansible_ssh_private_key_file=~/.ssh/id_raspberrypi ansible_python_interpreter=/usr/bin/python3
-
raspberrypi5.local
対象サーバのホスト名 -
ansible_user=pi
対象サーバへ接続するユーザー名 -
ansible_ssh_private_key_file=~/.ssh/id_raspberrypi
対象サーバへの接続用ssh秘密鍵 -
ansible_python_interpreter=/usr/bin/python3
対象サーバ側の設定を行うPythonのパス
4.2. Playbookの記述
対象サーバで実行するタスクをPlaybookに記述する。
playbook.yml
---
- name: Raspberry Pi Setup (Update, Locale, and Docker)
hosts: RPi5
become: true
tasks:
# 1. パッケージの更新
- name: Update and upgrade apt packages
ansible.builtin.apt:
update_cache: true
upgrade: full
autoremove: true
# 2. ja_JP.UTF-8の生成
- name: Generate ja_JP.UTF-8
community.general.locale_gen:
name: ja_JP.UTF-8
state: present
register: locale_gen
# 3. デフォルトロケールの設定
- name: Set default system locale to ja_JP.UTF-8
ansible.builtin.lineinfile:
path: /etc/default/locale
regexp: '^LANG='
line: 'LANG=ja_JP.UTF-8'
# 4. 旧バージョンのDocker関連パッケージの削除
- name: Remove old Docker related packages
ansible.builtin.apt:
name:
- docker.io
- docker-compose
- docker-doc
- podman-docker
- containerd
- runc
state: absent
# 5. Dockerのインストールに必要なパッケージの追加
- name: Install dependencies for Docker
ansible.builtin.apt:
name: [ca-certificates, curl]
state: present
# 6. keyrings ディレクトリの作成
- name: Create keyrings directory
ansible.builtin.file:
path: /etc/apt/keyrings
state: directory
mode: '0755'
# 7. Docker GPG key のダウンロード
- name: Download Docker GPG key
ansible.builtin.get_url:
url: https://download.docker.com/linux/debian/gpg
dest: /etc/apt/keyrings/docker.asc
mode: '0644'
# 8. Dockerリポジトリの追加 (DEB822形式)
- name: Add Docker repository to sources.list.d
ansible.builtin.copy:
dest: /etc/apt/sources.list.d/docker.sources
mode: '0644'
content: |
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: {{ ansible_distribution_release }}
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
# 9. Dockerのインストール
- name: Install Docker CE and plugins
ansible.builtin.apt:
name:
- docker-ce
- docker-ce-cli
- containerd.io
- docker-buildx-plugin
- docker-compose-plugin
update_cache: true
state: present
# 10. piユーザーのdockerグループへの追加(sudoを不要にする)
- name: Add user to docker group
ansible.builtin.user:
name: pi
groups: docker
append: true
4.3. ansible-playbookコマンドの実行
以下のコマンドを実行する。
$ ansible-playbook -i ./hosts.ini ./playbook.yml
Discussion