AWS IoT Greengrass CoreをRaspberry Piにサイレントインストールする手順


こちらにある gg-device-setup-latest.sh スクリプトを利用します。サイレントインストールの元情報もここを参考にしています。

以下の項目を組み合わせてサイレントインストールします。

事前準備

SSHを有効化して、作業フォルダを作成します。

mkdir ~/work
cd ~/work

作業PC側で、以下のワンライナーでAWS認証情報を取得します。

aws sts get-session-token --query 'Credentials | {A:AccessKeyId,B:SecretAccessKey,C:SessionToken}' --output yaml | awk  'NR==1{print "export AWS_ACCESS_KEY_ID="$2} NR==2{print "export AWS_SECRET_ACCESS_KEY="$2} NR==3{print "export AWS_SESSION_TOKEN="$2}'

変数の設定

# ワンライナーで取得したAWS認証情報
export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
export AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=

# 以下は適当に調整します
MAC_ADDR=$(ethtool -P eth0 | cut -d" " -f3 | tr -d :)
export GG_GROUP_NAME=otomo-pi-grp-${MAC_ADDR}
export GG_CORE_NAME=otomo-pi-core--${MAC_ADDR}
export AWS_REGION=ap-northeast-1

OS設定とConfigの生成

wget -q -O ./gg-device-setup-latest.sh https://d1onfpft10uf5o.cloudfront.net/greengrass-device-setup/downloads/gg-device-setup-latest.sh && chmod +x ./gg-device-setup-latest.sh && sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass \
--region ${AWS_REGION} \
--group-name ${GG_GROUP_NAME} \
--core-name ${GG_CORE_NAME} \
--ggc-root-path / --log-path ./ --deployment-timeout 300  \
--verbose

スクリプトが完了した時点で、以下のように GreengrassDeviceSetup.config.info が出力されています。

cgroup等のOS設定を反映させるため再起動します。

sudo reboot

Greengrass Coreのインストール

Raspbean再度SSHにてログオンします。

# AWS認証情報の設定
export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
export AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=

# ワークディレクトリに移動
cd ~/work

# プロンプトの答えのyesを流し込みスクリプトを実行
echo "yes" | sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass

以下のように表示されればインストール完了です。

[Option] Python3.7のgreengrasssdkインストール

greengrasssdkは初期では導入されてないので、必要に応じてインストールします。

curl -kL https://bootstrap.pypa.io/get-pip.py | sudo python3.7
sudo pip3.7 install greengrasssdk

[Option] systemdの設定

以下のコマンドでGreengrass Coreをサービス化します。

# systemdの設定を投入
cat <<EOF | sudo tee /etc/systemd/system/greengrassd.service
[Unit]
Description=Greengrass Daemon

[Service]
Type=forking
PIDFile=/var/run/greengrassd.pid
Restart=on-failure
ExecStart=/greengrass/ggc/core/greengrassd start
ExecReload=/greengrass/ggc/core/greengrassd restart
ExecStop=/greengrass/ggc/core/greengrassd stop

[Install]
WantedBy=multi-user.target
EOF
# サービスを有効化
sudo systemctl daemon-reload
sudo systemctl enable greengrassd.service
sudo systemctl start greengrassd.service

Ansible化

こちらの自分のブログ記事でAnsible化もしてみました。