Raspbian OS のセットアップ
AWS SSM が Raspbian OS に 対応してたので、
Raspbian のセットアップ復習がてら検証してみる
Raspbian OS のインストール
ラズパイで Raspbian OS を動かすために SD カードに焼く必要があるが、
現在は RaspberryPi 用のイメージ焼き付けようツールが準備されていて簡単になっていた
作業端末は Windows なので Windows 用インストーラー imager_1.4.exe
をダウンロードしインストールする
起動すると下記のような感じになっており
インストールする OS の設定、あるいはフォーマット
書き込む対象のデバイス
と選択出来る
これだけあればイメージをダウンロードじて、書き込み用ソフト入れて~とかやらずにシンプルに出来るようになった
OSのバージョン等々細かく指定できるようになると更に嬉しいかな
ここでは Raspberry Pi OS (other)
にある Raspberry Pi OS LITE
をインストールする
GUI が無いバージョンでその分OSイメージサイズが小さく、インストールに時間がかからない
※Raspberry Pi OS (32-bit)
は Full のイメージで 4GB 相当あるためイメージを焼くだけで 1時間くらいかかる
SDカードリーダーは無ければ適当に用意しておく
SSH のデフォルト有効化
CDカードへのOSイメージ焼き後このままラズパイにセットして起動してもよいが、
デフォルトでは SSH が有効化されておらず、キーボード、マウス、モニターを用意して・・・と面倒なので
最初から起動時に SSH を起動するようにしておく
恐らくデフォルトで無効化されているのは Raspbian のデフォルト OS ユーザー情報はパブリックに公開されていて
IoT の利用性質上 DMZ ネットワークに置かれることからちゃんとセットアップするまでのリスク回避策でしょう
先程焼き付けたSDカードをもう一度Windowsに取り付け
焼き付けると boot
というデバイス名で認識されるためデバイスを開き、ssh という空のテキストファイルを追加しておく
これだけで起動時にSSHが有効化される
接続と初期セットアップ
準備できたSDカードでラズパイを起動し、ネットワークにつなげる
デフォルトで WiFi は有効化されているがプロファイル設定は出来ていないため当然繋がらない
SSH同様に最初から設定を埋め込む方法も有るみたいだけど、NICが付いているラズパイ3、4 であれば有線LAN繋げればいいだけなので楽
任意のツールでいいのでローカルネットワーク上のラズパイを検索しIPを特定
Raspbian のデフォルトOSユーザー pi
/ raspberry
でSSH接続できればOK
初期セットアップはいつもどおりに
apt update && apt upgrade
- 必要なパッケージの追加
- 日本語、日本環境用設定
pi
ユーザーのパスワード変更、任意ユーザーの追加- FW(iptables)設定
- Wifi設定
- NTP(systemd-timesync)設定
- SSH設定あれば
手順ややること忘れないように Ansible でプレイブック化しておこうと思うrapi-config
コマンドがあるけどそれだけだとプレイブック化出来ない気がしてるので調べながら
AWS SSM 設定
ハイブリットアクティベーションの有効化
オンプレミス環境のサーバを SSM 上で管理するためのアクティベーションコードを発行する
オンプレミス環境のサーバを管理する場合には管理対象が1000台以上を超える場合 アドバンスドプラン に変更する必要がある
詳しくは料金表を参照
AWS Systems Manager の料金
またアクティベーションの有効期限を指定する必要があり、最大でも作成したコードは30日まで有効となり、
失効後は同一のコードを利用してインスタンスの追加は行えない
失効後に管理インスタンスを追加したい場合は新規でアクティベーションコードを作成する必要がある
作成するとコードが表示されるので
表示された Activation Code と Activation ID をメモしておいて SSM Agent に登録する
SSM Agent のインストール
環境に合わせた手順に則って SSM Agent をインストールする
Install SSM エージェント for a hybrid environment (Linux)
# mkdir /tmp/ssm
# curl https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/debian_arm/amazon-ssm-agent.deb -o /tmp/ssm/amazon-ssm-agent.deb
# dpkg -i /tmp/ssm/amazon-ssm-agent.deb
# service amazon-ssm-agent stop
# amazon-ssm-agent -register -code "activation-code" -id "activation-id" -region "region" -y
Error occurred fetching the seelog config file path: open /etc/amazon/ssm/seelog.xml: no such file or directory
Initializing new seelog logger
New Seelog Logger Creation Complete
2020-08-20 18:29:32 INFO Successfully registered the instance with AWS SSM using Managed instance-id: *************
# service amazon-ssm-agent start
インストールと関連付けが成功すると ~/.aws/credentials
にセッション用トークンが登録され
SSM上もマネージドインスタンスで確認できる
セッションマネージャーの利用
マネージドインスタンスへの登録が完了すれば一旦は完了
試しにセションマネージャーを利用してみる
オンプレサービスだとインスタンス状態は表示されないらしい
いざセッションマネージャーを利用しようとすると
ハイブリッドアクティベーションによって登録されたインスタンスに対してセッションマネージャーを利用する場合
アドバンストインスタンスプランに変更する必要があり、さらに変更した場合 同AWSアカウントで管理している全てのマネージドインスタンスも同様のプラン扱いになる
アドバンスドプランは先の登録インスタンス数制限にあったように、別途従量課金が発生する
利用時間ではなく、登録時間なのでインスタンス数が多い場合結構な金額になるため注意が必要
ここでは確認のためプランを変更して接続してみると無事接続できた(凄い!)
スタンダートブランについて
細かくは確認していないが、セッションマネージャーと台数制限を超えたい場合のみアドバンスドプランに変更する必要があるようだ
プランの変更自体は SSM の管理画面からできるため 変更/無効 を行う運用も考えられそうだがどうでしょうね
時代は1週して周りめぐり、オンプレサーバに対してどうやってリモートからmンテナンスする?の悩みを IoT でもう一回考え直させられるとは思わなかった
クラウド前提だからこそ、もう忘れてたけどオンプレサーバーは簡単にメンテナンス出来ないという前提をもう一度思い出して
監視やオペレーション処理を過去から掘り起こしてこようと思う
SSM を利用する場合 RunCommand を行うだけであればスタンダードプランで利用できるので一旦この運用で考える
VPNを入れるとか、方法は色々あるけれど IoT だと Wifi ルータで 個別 GIP も買わないしどうやるのが良いのか勉強しないと
AWSさーん わかるけどオンプレに対してのセッションマネージャーも無料か、利用時間での従量課金にしてくれー!