LoginSignup
47
43

More than 5 years have passed since last update.

Ansibleを使ってRaspberryPiをセットアップ

Posted at

はじめに

 Raspberry Pi(RasPi)のセットアップ、毎回同じことをやるには手間がかかるので、Ansibleを使って初期セットアップをする。

動作環境および準備

ホスト側

  • CentOS 6.6
  • Ansible 1.9.2
  • sshpass 1.05

リモート側:RasPi

  • Raspberry Pi (typeB)

事前準備

  1. RasPiが起動できるよう、SDカードにRASPBIAN(Debian Wheezy,Release date:2015-05-05)をインストール
  2. RasPiを起動。IPアドレスをメモする
  3. ホスト側にAnsibleをインストール。Ansibleがsshでリモート接続するとき、sshが必要になるので、sshpassもインストール

できること/できないこと

できること

  • タイムゾーン設定
  • キーボード設定
  • MySQLインストール
  • PHP5インストール
  • Apache2インストール
  • Wordpress

できないこと

  • Expand Filesystem …… raspi-config内に書いてある内容を移植すればできるかも
  • pi/root password …… 初期パスワードのまま

Playbookいろいろ

 Ansibleを使ってRasPiをセットアップするPlaybookを用意する。
躓いた部分のPlaybookを掲載していきます。全体像はGitHubを参照してください。

インベントリファイル設定

INVENTORY:棚卸し表

 初期セットアップをするRasPiをリストアップ。事前に調べておいたIPアドレスをインベントリファイルに羅列する。ここに羅列されたIPアドレスへ順次 Playbookの内容が実行されていく。

 RASPBIANのパスワードも固定&公開されているのでインベントリファイルに記載してしまう。

[raspi]
192.168.1.2

[raspi:vars]
ansible_ssh_port=22
ansible_ssh_user=pi
ansible_ssh_pass=raspberry
#ansible_sudo_pass=
backup=yes

【参考】

Playbook

YAML形式で作業を内容を記述していく。

raspi.yml

 RasPiのSDカードを書き換えのたびにサーバ側のホスト鍵指紋が変わってしまうため、同一IPアドレスを指定してSSHを接続した時 キャッシュ保持されているホスト鍵指紋と一致しない。そのためAnsibleがリモート(RasPi)側にssh接続するときにエラーが出てしまうため、ssh-keygen -R {{ inventory_hostname }}でホスト鍵指紋のキャッシュを削除している。

 inventory_hostnameはマジック変数。対象となるインベントリが代入される。

 あとは、roles/setup内のPlaybookが実行されていく。

raspi.yml
---
- name: remove Raspberry Pi ssh-publickey
  hosts: 127.0.0.1
  tasks:
   - name: remove ssh publickey
     shell: ssh-keygen -R {{ inventory_hostname }}

- name: Setup Raspberry Pi
  hosts: raspi
  sudo: yes

  roles:
   - setup

timezone.yml

 タイムゾーンを設定。Asia/Tokyo/etc/timezoneに書き込むだけなので、copyで直接文字打ちしてしまう。

timezone.yml
---
- name : Create Timezone file.
  copy : content='Asia/Tokyo'
         dest=/etc/timezone
         owner=root
         group=root
         mode=0644
         backup={{ backup }}

- name: update timezone
  shell: dpkg-reconfigure --frontend noninteractive tzdata

keyboard.yml

キーボード設定。
複数行あるので、あらかじめ用意したファイルをcopy。

keyboard.yml
---
- name: Create keyboard keymap file.
  copy: src=keyboard
        dest=/etc/default/keyboard
        owner=root
        group=root
        mode=0644
        backup={{ backup }}

- name: update keymap
  shell: /etc/init.d/keyboard-setup reload
# KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL="pc105"
XKBLAYOUT="jp"
XKBVARIANT=""
XKBOPTIONS=""

BACKSPACE="guess"

GitHub

47
43
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
47
43