公式 Buster イメージから 4GPi のセットアップ


# はじめに

# 概要

公式Busterイメージをインストールしたラズパイに対して
4GPiセットアップの手順を2つ紹介します。

**A. curlを使って4GPiのセットアップ**
**B. ansibleを使って4GPiのセットアップ**


# 4GPiとは？

4GPi（フォージーパイ）は、ラズベリーパイ専用に開発された4G（LTE）通信モジュールです。

4GPiの用途の一例を以下記事で紹介しております。
[Stretch 版 4GPi のイメージから Buster へのアップグレード～4GPiを使うメリット～](https://qiita.com/vascodagama/items/e8e2546a7b359ed20f64#4gpi%E3%82%92%E4%BD%BF%E3%81%86%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88)

# 必要なもの
◎ ラズベリーパイ用4G(LTE)通信モジュール「4GPi」
◎ ACアダプタ(12V 2A)　
◎ 標準SIM(私の場合は"NanoSIM" + "標準SIMへの変換アダプタ"で対応)
◎ ラズパイ
◎ パソコン
◎ MicroSDカード


取り付け手順・機器の画像・補足事項は[Stretch 版 4GPi のイメージから Buster へのアップグレード～必要な物～](https://qiita.com/vascodagama/items/e8e2546a7b359ed20f64#%E5%BF%85%E8%A6%81%E3%81%AA%E7%89%A9)で紹介しておりますのでそちらを参照ください！

前回の記事では、ラズパイにHDMIで直接ディスプレイを接続していましたが今回はパソコンからsshでラズパイに接続します。

# 下準備(Busterをラズパイにインストール)

## 公式Busterイメージのダウンロード

公式サイトからBusterのイメージをダウンロードします。
https://www.raspberrypi.org/downloads/raspbian/

イメージを3種類の中から選べますが、どのイメージでも問題ありません。
私は軽量な「Raspbian Buster Lite」をダウンロードしました。

## OSイメージをMicroSDカードへ書き込み

zipファイルのままMicoSDカードにコピーしただけではラズパイはOSを読み込むことができません。
ラズパイが読み取れるように書き込みソフトを利用しましょう。

今回は有名な書き込みソフト「Etcher」を使用しました。
書き込み手順は[こちら](https://azriton.github.io/2017/11/12/%E3%83%A9%E3%82%BA%E3%83%91%E3%82%A4%E3%81%AEOS%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8%E3%82%92%E7%84%BC%E3%81%8F%E3%81%A8%E3%81%8D%E3%81%AFEtcher%E3%81%8C%E4%BE%BF%E5%88%A9%EF%BC%86UI%E3%82%AB%E3%83%83%E3%82%B3%E3%81%84%E3%81%84/)

##ssh接続用のWiFi設定ファイルをbootフォルダ直下に配置
SDカードに展開されたbootフォルダ直下にSSIDとパスワードを記載したwpa_supplicant.confを配置します。
これにより、ラズパイにWiFiを設定できます。
[![2019-09-10_22h08_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146895/d5cf1b92-8202-594c-2639-15109f4c1c5b.png)


wpa_supplicant.conf内は以下のように記載にします。
※ssid名とパスワードはご自身のWiFiの値を適応ください。

```bash
country=JP
update_config=1
ctrl_interface=/var/run/wpa_supplicant
        
network={
    scan_ssid=1
    ssid="ssid名"
    psk="パスワード"
}
```


##sshの許可のフォルダを配置

root直下に「ssh」という名前のフォルダを新規作成してください。
これでラズパイへssh通信が可能となります。
![2019-09-10_22h09_19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146895/d68e550a-fd99-5163-d050-23c6eb2d5818.png)


##ラズパイとssh接続
ラズパイにSDカードを挿入後、電源投入します。
数十秒後、下記コマンドを使用してパソコンからラズパイへssh接続します。

```bash
ssh pi@raspberrypi.local
```

初期パスワードは「raspberry」です。
※セキュリティを考慮して初期パスワードは早めに変更しましょう。

# A. curlを使って4GPiのセットアップ

##4GPiのインストール
4GPiのパッケージを更新用にリポジトリを追加します。

```bash
curl https://mechatrax.github.io/setup.sh | sudo bash
```

curl(Client for URLs)は、URL先のデータをプロトコルを用いて送受信するコマンドです。
対応プロトコルはHTTP、HTTPS、FTP、FTPS、SCP、SFTP、TFTP、DICT、TELNET、LDAP、FILEなど多数あります。
今回curlはデータをダウンロードする目的で使用します。

次に4GPiのツールをインストールします。

```bush
sudo apt install 4gpi-utils 4gpi-net-mods 4gpi-networkmanager
```

パッケージをアップデートしましょう。

```bush
sudo apt update
sudo apt upgrade
```

4GPiのソフトウェアが入っているか確認しましょう。

```bash

dpkg -l | grep 4gpi
```

##SIMカードの情報を登録

各SIMカードで開示されているAPNを設定します。

```bash
sudo nmcli con add type gsm ifname "*" con-name 「接続名」 apn 「ＡＰＮ」 user 「ユーザー」 password 「パスワード」
```

「接続名」は任意の名称を付けてください。
「APN」,「ユーザー」,「パスワード」は各SIM会社のサイトを参照ください。
[※0SIMのAPNははこちら](http://mobile.nuro.jp/0sim/pdf/sonet_sim_manual.pdf)

0SIMの場合は以下のように設定します。

```bush
sudo nmcli con add type gsm ifname "*" con-name 0sim apn so-net.jp user nuro password nuro
```

設定を反映するために再起動します。

```bush
sudo reboot
```

再起動後は再びssh接続し、SIMカードが通信できているかを確認しましょう。

```bush
sudo ifconfig wwan0 
```

inetにアドレスが表示されていればOKです。

# B. ansibleを使って4GPiのセットアップ

[ラズパイとssh接続](https://qiita.com/drafts/114619c2bcf020226cd7/edit#%E3%83%A9%E3%82%BA%E3%83%91%E3%82%A4%E3%81%A8ssh%E6%8E%A5%E7%B6%9A)まで手順を進めてください。

## ansibleのインストール

ansibleのインストールのためPythonのpipをインストールします。

```bash
sudo apt-get install python-pip
```

ansibleをインストールします。

```bash
sudo pip install ansible
```

**ansibleとは構成管理ツール**です。
例えば複数台のラズパイを同じパッケージの構成(パッケージ数は100個)でセットアップするとします。

1つ1つを手作業でパッケージをインストールするのは手間ですし、ミスが生じる可能性があります。

**しかし、ansibleでは設定ファイルに複数パッケージを記載することで、まとめてインストールできます。**

ansibleの設定ファイルを最初に1つ作っておけば同じ構成のラズパイを量産できます。

注意ですが、ansibleはWindows内のインストールをサポートしておりませんので、linux環境で実行しましょう。
(私はここで1時間は浪費しました・・・)


## ansible playbookによる環境構築
今回はホスト側であるラズパイから直接実行しています。
また、別PCからラズパイへリモート(ssh接続)でansible-playbookを実行してもセットアップが可能です。

playbookをダウンロードするためgitをインストールします。

```bash
sudo apt-get install git
```

メカトラックス様が公開しているGitHubよりplaybookのデータをインストールします。

```bash
git clone https://github.com/mechatrax/ansible-mechatrax-playbook.git
```

インストール後のフォルダに移動します。

```bash
cd ansible-mechatrax-playbook/
```

hostsのデータを変更します。

```bash
vi hosts 
```

を「raspberrypi.local」から「localhost」へ変更します。

```bash
[raspi]
localhost

[raspi:vars]
ansible_ssh_user=pi
ansible_ssh_pass=raspberry
```

sshpassをインストールします。

```bash
sudo apt-get install sshpass
```

playbookを実行します。

```bash
ansible-playbook -i hosts 4gpi.yml
```

インストール完了後はssh接続が一度切断されるので再度ssh接続し、
4GPiがインストールできているかを確認します。

```bash
dpkg -l | grep 4gpi
```
と打って、以下のように表示されていれば無事インストールされています。

```bash
ii  4gpi-net-mods         1.0.0  all  Network configuration for 4GPi
ii  4gpi-networkmanager   1.0.1  all  NetworkManager settings for 4GPi
ii  4gpi-utils            1.0.1  all  Utilities for 4GPi family
```


##SIMカードの情報を登録
各SIMカードで開示されているAPNを設定します。

0SIMの場合は以下のように設定します。

```bush
sudo nmcli con add type gsm ifname "*" con-name 0sim apn so-net.jp user nuro password nuro
```

設定を反映するために再起動します。

```bush
sudo reboot
```

再起動後は再びssh接続し、SIMカードが通信できているかを確認しましょう。

```bush
sudo ifconfig wwan0 
```

inetにアドレスが表示されていればOKです。

以上で設定完了です！