自宅内Raspberry Piへのデプロイ自動化 その① -AWS System Managerへの登録-

エンジニア

自宅内でスマートホーム用のサーバとして動かしているRaspberry Piは今のところ手動でデプロイ、アプリケーション実行などの管理をしており、このあたりを自動化したい。

現状やり方として見つかったのは2つ

AWSCodePipelineはubuntuでないと試せないので、ひとまずAWS System Managerを使ってどんなことができるのか、ひとまず試してみる。

Step1: hybrid environment用のIAM service roleを作成する

Windowsのaws cliで実施。linuxも同様。下記公式参照。

Create the IAM service role required for Systems Manager in hybrid and multicloud environments - AWS Systems Manager
Learn how to grant AssumeRole trust to the Systems Manager service so that it can communicate with non-EC2 machines in hybrid and multicloud environments.

下記のtrust policyでSSMService-Trust.json を作成

{
            "Version": "2012-10-17",
            "Statement": {
                "Effect": "Allow",
                "Principal": {"Service": "ssm.amazonaws.com"},
                "Action": "sts:AssumeRole"
            }
}

service roleを作成

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

session tokenを作成するために、上記で作成したservice roleを有効にする。
session tokenはmanaged instance permissionにSystems Managerを使ってコマンドを実行する権限を与える。

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

いくつかOptionalがあるが、該当しないので省略。

Step 2: hybrid environment用にManaged-Instance Activationを作成

Create a hybrid activation to register nodes with Systems Manager - AWS Systems Manager
Learn how to create a managed-node activation to provide secure access to the Systems Manager service from your managed nodes.

AWS Systems Managerの「ハイブリッドアクティベーション」を選択
「アクティベーションの作成」をクリック

アクティベーション設定が開く

インスタンス制限は登録したい数に合わせれば良さそう。
IAM roleには先程作成したものを指定。

「アクティベーションの作成」をクリックすると、遷移先の画面上にActivation CodeとActivate IDが表示されるのでメモ。次で使う。

Step3: ラズパイにログインし、Raspbian上でインストール

Install SSM Agent on hybrid Linux nodes - AWS Systems Manager
Learn how to install SSM Agent on non-EC2 Linux machines in a hybrid and multicloud environment.

下記を実行。activation-code, activation-idは上記に書き換え。regionはap-northeast-1にした。

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

これでSystem Managerに登録され、Run Commandからコマンドの実行ができる。
コマンドドキュメントにて、実行するコマンドのタイプにAWS-RunShellScriptを選択、コマンドのパラメータに実行するスクリプトを書けば何でもできそう。

コメント

  1. […] 自宅内Raspberry Piへのデプロイ自動化 その① -AWS System Managerへの登録- […]

タイトルとURLをコピーしました