家のラズパイを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
アクティベーションの作成
マネジメントコンソールでは以下のような画面から作成できる。
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台登録する。
登録されたことを確認。