コンテンツにスキップ

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)

sudo apt update && sudo apt install -y ansible

2. リポジトリの取得(作業 PC)

git clone https://github.com/scramble-robot/questix.git
cd questix/ansible

3. インベントリファイルの作成

cp inventory.ini.example inventory.ini

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. 接続確認

ansible robotics_kits -i inventory.ini -m ping

全ホストが 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 であることを確認します。他のアーキテクチャでは失敗します。


次のステップ