awsの勉強。とりあえずblue/green deployやるつもり
このエラーに2時間くらい苦戦しているがこれをみるといいらしい。
service test231 was unable to place a task because no container instance met all of its requirements. Reason: No Container Instances were found in your cluster. For more information, see the Troubleshooting section.
ってstackoverflowに書いてた
なんかわからんけど、ec2インスタンス起動したらdefaultっていうクラスターが増えたなって思ったけど、そういうことか。
By default, your container instance launches into your default cluster. To launch into a non-default cluster, choose the Advanced Details list. Then, paste the following script into the User data field, replacing your_cluster_name with the name of your cluster.
てことはこれですね
#!/bin/bash
echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config
ん?適当に見てたらどこにもない
あったね。インスタンスの設定→高度な詳細
your_clustrer_nameを書き換えて。インスタンス作成。
おっ、コンテナインスタンスができました
サービスを更新してみた。codedeployが実行された。成功するかな
だめでした。10分くらいここで停止している
多分イベントにエラーログが残ってたんだ。でもログが出てないと私が勝手に勘違いしていた可能性が高い
blue/greenの前にそもそも200返ってなかったから直した
もう一回デプロイ
30分くらい待機したけど終わらない。
というか何で失敗してるのか不明。logでないんですかcodedeploy
27分待機してた
この人はhealthcheckでログが出たらしい
blue/greenのためにtarget group2つ作ったんだけど、これloadbalancerに紐付けるのって、私ですか?codedeployが勝手にやるのかとおもってるんですが。
やってみよう
いやー設定方法が不明。調べよう
これかな
そしてこれかな
良さそうなもの見つけた。これでやってみよう
放置してたら1時間のタイムアウトで終わったやつ
さっき使ったやつと合体
region変えてねって書いてありますね。
#!/bin/bash
echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config
wget https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py
wget https://s3.amazonaws.com/aws-codedeploy-us-east-1/cloudwatch/codedeploy_logs.conf
chmod +x ./awslogs-agent-setup.py
python awslogs-agent-setup.py -n -r REGION -c s3://aws-codedeploy-us-east-1/cloudwatch/awslogs.conf
mkdir -p /var/awslogs/etc/config
cp codedeploy_logs.conf /var/awslogs/etc/config/
service awslogs restart
出てきませーん
さっきの記事2015年だな。古いのかもな
これかなー
ssmをinstall
sudo yum install -y https://s3.region.amazonaws.com/amazon-ssm-region/latest/linux_amd64/amazon-ssm-agent.rpm
cloudwatch agentをinstall
sudo yum install amazon-cloudwatch-agent
うーん、起動するときに勝手に実行されるやつだとよくわからん。sshをできるようにしてそれでやろう
sudo yum install -y amazon-cloudwatch-agent
これでとりあえずinstallできた
起動はこれでssmを使ってやってみる
インスタンスの一覧が出ません
どうやらロールとかポリシーのあたり
ちょっと覚えること多すぎるね
何回も行ったり来たりしてるから操作は慣れてきた
ただ、既存のポリシーと作る必要があるポリシーがあったりして、めんどい
ドキュメントも全ての箇所にこれは作ってくださいとか書いてないから、ちょっと別のドキュメントみて作る必要あったりで大変
あと、元からあったロールに色々足してたら、元とは違うロールになっててよくわかんなくなってきた。コピーして作成みたいなのあったからそれでやろう
現状把握、ecsのblue/greenデプロイをしようとしていた。
しかし、うまくいかない、そしてログが見れないのがつらい。
どうやら、cloudwatchのagentとやらを入れると見れる
入れようとしてるがドキュメントが結構大量で辛い
て感じ
cloudwatch agentのドキュメントを途中から読んでもいまいちうまく動かなかったので、最初から読んでみよう
色々触ってるが今の所$1に到達していない。
install command
sudo yum install amazon-cloudwatch-agent
ssm-managerをinstallこれはマシンによって違うようです。また、regionを指定します。
このurlのページのTOCからさかのぼって、見つけてください
sudo yum install -y https://s3.region.amazonaws.com/amazon-ssm-region/latest/linux_amd64/amazon-ssm-agent.rpm
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
更新します : amazon-ssm-agent-3.1.127.0-1.x86_64 1/2
整理中 : amazon-ssm-agent-3.0.1124.0-1.amzn2.x86_64 2/2
Failed to execute operation: File exists
検証中 : amazon-ssm-agent-3.1.127.0-1.x86_64 1/2
検証中 : amazon-ssm-agent-3.0.1124.0-1.amzn2.x86_64 2/2
更新:
amazon-ssm-agent.x86_64 0:3.1.127.0-1
version 3.1がinstallされたっぽいので2.2は超えてるので大丈夫だろう
Amazon EC2 インスタンスでは、CloudWatch エージェントを使用するにはバージョン 2.2.93.0 以降のインスタンスが実行されている必要があります。CloudWatch エージェントをインストールする前に、SSM エージェントを更新するか、インスタンスにインストールしてください (まだの場合)。
ドキュメントって長いですね
(オプション) Systems Manager の前提条件を確認する
省略できることない。めっちゃ時間かかる
インスタンスの一覧がssmのRun commandに表示されていなかったので、頑張ってドキュメント読んでちゃんとやったらやっぱりちゃんと表示されました。いつも通りでした。読み飛ばすなよっていう。はい
初期アカウントはセキュリティ厳重にして封印しよう
厳重にして封印しました。adminアカウントを別で作成
ssm のruncommand続き
やりました run command 成功
また、run command にインスタん出て来なくなったとおもったら、なぜかregionが変わってた。触った記憶がないよ
Systems Manager Run Command を使用して CloudWatch エージェントを起動する
やりました、ついに起動しました
これで、code deployのログが見れるはず
とりあえず ecsが動いてることを確認した。
ログは今の段階で出てるのかな
今は出てない。
これで再度codedeployでデプロイすれば出るはず
ログ出るとおもってたんですが、出てきませんね
一つ思った。今私がやっているのはblue/greenデプロイ。
今起動しているインスタンスと新しく立ち上げているインスタンスがある。
今起動している方にagentを色々入れていた。
が、新しく立ち上げた方がうまく起動しない、だからログが欲しいのではないか?
ならば、新しく立ち上げ方にagentを入れるべきでは?
しかし、今の方法だと起動済みのインスタンスにしかagentを入れることができない。
やっぱり起動する時のコマンドでうまいことやらないとダメかな。
この時にやった、起動時のコマンドに含めればいいのではと思った。が、次に起動するインスタンスはタスク定義に基づいて作られるはず。意味なくない?
一応これやったらcloudwatch agentがインスタンスに入ってた
#!/bin/bash
sudo yum install amazon-cloudwatch-agent -y
cloudtrailなんじゃないかって思い始めた
思ってたやつじゃない。私が何かを始めたとか、監査ログの雰囲気だった。証跡の作成って書いてあるしな。
困ったな
blue/greenて2つ目が起動して最初のやつが消えるんだよね?
だったら、2つ目が起動しようとするよね?
全くでインスタンス一覧に出て来ないんだよね。
なんかおかしい。
blue/greenとかいう問題じゃない気がしてきた
結局logは出てない