ラズパイをSystems Managerで管理してみる

家のラズパイをSSMで管理してみたメモ。

参考リンク

サービスロールの作成

マネジメントコンソールからアクティベーションを作成する場合、AmazonEC2RunCommandRoleForManagedInstancesというロールを自動で作成することができるのでそちらを使うこともできるが、今回は自分でロールを作成する。権限はどちらも同じ。

信頼ポリシーを用意する。

cat <<EOF > SSMService-Trust.json
{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Principal": {"Service": "ssm.amazonaws.com"},
    "Action": "sts:AssumeRole"
  }
}
EOF

IAMロールを作成する。

aws iam create-role \
  --role-name SSMServiceRole \
  --assume-role-policy-document file://SSMService-Trust.json

IAMロールにポリシーをアタッチする。

aws iam attach-role-policy \
  --role-name SSMServiceRole \
  --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore

アクティベーションの作成

マネジメントコンソールでは以下のような画面から作成できる。

f:id:sotoiwa:20200602105652p:plain

f:id:sotoiwa:20200602105705p:plain

CLIの場合は以下のようにする。

aws ssm create-activation \
  --default-instance-name "Raspberry Pi" \
  --iam-role "SSMServiceRole" \
  --registration-limit 5 | tee activation.json

ラズパイが4台あるので、リミットを5にした。

ssm-agentの導入

ラズパイにssm-agentを導入し、登録を行う。

ラズパイにログインして以下を実行する。

region="ap-northeast-1"
activation_id="<アクティベーションID>"
activation_code="<アクティベーションコード>"

mkdir /tmp/ssm
sudo curl https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/debian_arm/amazon-ssm-agent.deb -o /tmp/ssm/amazon-ssm-agent.deb
sudo dpkg -i /tmp/ssm/amazon-ssm-agent.deb
sudo service amazon-ssm-agent stop
sudo amazon-ssm-agent -register -code "${activation_code}" -id "${activation_id}" -region "${region}"
sudo service amazon-ssm-agent start

他のラズパイも同じアクティベーションで繰り返して合計4台登録する。

登録されたことを確認。

f:id:sotoiwa:20200602105725p:plain

f:id:sotoiwa:20200602105739p:plain