Ansible プロビジョニング¶
このページでわかること
setup_kit.yaml を使って Raspberry Pi 5 を自動構成する手順、変数のカスタマイズ方法、複数台を遠隔プロビジョニングする方法がわかります。
方式の選択¶
| 方式 | 手順 | 向いている場面 |
|---|---|---|
| Pi 本体で実行(推奨) | Pi 上で bash setup.sh |
1〜数台、Pi に直接ログインできる |
| 遠隔実行(複数台向け) | 作業 PC から ansible-playbook |
多数台を一括構成 |
方式 A:Pi 本体で実行(setup.sh)¶
Pi 本体で実行する場合は Raspberry Pi 5 セットアップ の手順と同じです。
# Pi 上で実行
sudo apt update && sudo apt install -y git ansible
git clone https://github.com/scramble-robot/questix.git
cd questix
bash setup.sh
setup.sh は内部で以下を実行します。
ansible-playbook ansible/playbooks/setup_kit.yaml \
-i localhost, --connection=local --ask-become-pass
方式 B:作業 PC から遠隔実行¶
複数台のロボットを一括構成する場合に使います。
前提¶
- 作業 PC(Linux または macOS)に Ansible がインストールされていること
- 各 Pi に SSH 公開鍵認証でログインできること
- Pi は Ubuntu 24.04 Server が起動済みであること
1. 前提パッケージのインストール(作業 PC)¶
2. リポジトリの取得(作業 PC)¶
3. インベントリファイルの作成¶
inventory.ini を実際の IP アドレス・ユーザー名に合わせて編集します。
[robotics_kits]
robot-kit-01 ansible_host=192.168.1.200 ansible_user=ubuntu
robot-kit-02 ansible_host=192.168.1.201 ansible_user=ubuntu
robot-kit-03 ansible_host=192.168.1.202 ansible_user=ubuntu
[all:vars]
ansible_ssh_common_args='-o StrictHostKeyChecking=no'
ansible_python_interpreter=/usr/bin/python3
[robotics_kits:vars]
target_arch=arm64
4. 接続確認¶
全ホストが pong を返したら接続 OK です。
5. プレイブックの実行¶
# 全台に対して実行
ansible-playbook -i inventory.ini playbooks/setup_kit.yaml --ask-become-pass
# 特定の 1 台のみ
ansible-playbook -i inventory.ini playbooks/setup_kit.yaml \
--limit robot-kit-01 --ask-become-pass
変数のカスタマイズ¶
ansible/playbooks/vars/setup_kit_vars.yaml の主要変数です。
| 変数 | 既定値 | 説明 |
|---|---|---|
ros2_distro |
jazzy |
ROS 2 ディストリビューション |
target_ubuntu_version |
24.04 |
対象 Ubuntu バージョン |
ros_domain_id |
42 |
ROS_DOMAIN_ID(複数台では機体ごとに変更) |
workspace_path |
~/robot_ws |
ロボットワークスペースのパス |
robot_mode |
practice |
起動モード(practice / competition) |
install_robot_manager |
false |
Robot Manager Web UI をインストールするか |
enable_i2c |
true |
I2C インターフェースを有効化するか |
enable_spi |
true |
SPI インターフェースを有効化するか |
実行時に変数を上書きする場合:
# ROS_DOMAIN_ID を台ごとに変える例
ansible-playbook -i inventory.ini playbooks/setup_kit.yaml \
-e "ros_domain_id=43" --limit robot-kit-02
# 追加パッケージを指定
ansible-playbook -i inventory.ini playbooks/setup_kit.yaml \
-e "ros2_additional_packages=['ros-jazzy-navigation2']"
プレイブックが実行するロール¶
setup_kit.yaml は以下のロールを順番に実行します。
| ロール | 主な処理 |
|---|---|
ros2_installation |
ROS 2 Jazzy のインストール、colcon / rosdep |
raspberry_pi_setup |
gpio / input / dialout グループ設定、Pi 用ユーティリティ |
hardware_interfaces |
I2C / SPI の有効化(/boot/firmware/config.txt)、udev ルール適用 |
robotics_workspace |
~/robot_ws の作成、colcon 設定 |
robot_autostart |
systemd サービス・polkit・起動スクリプトの導入 |
display_settings |
自動ログイン・スクリーンブランク無効化 |
アーキテクチャチェック
プレイブックは実行前に aarch64(ARM64)であること、Ubuntu 24.04 であること、Raspberry Pi であることを確認します。他のアーキテクチャでは失敗します。
次のステップ¶
- Robot Manager Web UI — オプションの管理 UI を有効化する
- 完了確認チェックリスト — セットアップが正しく完了したか確認する