Amazon SSM エージェントがOS再起動時こける
AWSのEC2インスタンスでCentOS7を作成し、Amazon SSMエージェントを使うためインストールしたが、OSを再起動したらAmazon SSMエージェントがこけていたので、その対応した時の備忘録。
今回の環境
- Amazon EC2 (Instance Type: t2.micro)
- CentOS-7 (AMI ID ami-eec1c380)
再起動したときのエラー
Jan 6 19:09:23 hogehoge2 systemd: Started amazon-ssm-agent.
Jan 6 19:09:23 hogehoge2 systemd: Starting amazon-ssm-agent...
Jan 6 19:09:23 hogehoge2 amazon-ssm-agent: 2017/01/06 19:09:23 Failed to load instance info from vault. RegistrationKey does not exist.
Jan 6 19:09:23 hogehoge2 amazon-ssm-agent: Error occured fetching the seelog config file path: open /etc/amazon/ssm/seelog.xml: no such file or directory
Jan 6 19:09:23 hogehoge2 amazon-ssm-agent: 2017-01-06 19:09:23 INFO Starting Agent: amazon-ssm-agent - v2.0.562.0
Jan 6 19:09:23 hogehoge2 amazon-ssm-agent: 2017-01-06 19:09:23 INFO OS: linux, Arch: amd64
Jan 6 19:09:25 hogehoge2 amazon-ssm-agent: 2017-01-06 19:09:25 ERROR error fetching the region, Failed to fetch region. Data from vault is empty. Get http://169.254.169.254/latest/dynamic/instance-identity/document: dial tcp 169.254.169.254:80: connect: network is unreachable
Jan 6 19:09:25 hogehoge2 amazon-ssm-agent: 2017-01-06 19:09:25 ERROR error occured when starting core manager: Failed to fetch region. Data from vault is empty. Get http://169.254.169.254/latest/dynamic/instance-identity/document: dial tcp 169.254.169.254:80: connect: network is unreachable
Jan 6 19:09:25 hogehoge2 amazon-ssm-agent: 2017-01-06 19:09:25 ERROR error occured when starting amazon-ssm-agent: Failed to fetch region. Data from vault is empty. Get http://169.254.169.254/latest/dynamic/instance-identity/document: dial tcp 169.254.169.254:80: connect: network is unreachable
エラーが表示されているところで Get http://169.254.169.254/latest/dynamic/instance-identity/document: dial tcp 169.254.169.254:80: connect: network is unreachable
とあり、ネットワークがまだ立ち上がろうとしている前にAmazon SSM エージェントが立ち上がろうとし、コケているのではと推測しました。
ps
コマンドで確認するも、Amazon SSM エージェントのプロセスは無かったです。
対応
社内で「systemdの順序を定義してやれば、解消する気がしますね。」という話とともに、Systemd メモ書き - Qiita の記事をもらいましたのでやってみました。
やってみた
[Unit]
Description=amazon-ssm-agent
After=network.target ←追記部分
〜〜snip〜〜
結果、うまく動いた感じっぽ・・・
上記にある /etc/systemd/system/amazon-ssm-agent.service
のファイルに、 After=network.target
を追記してOSを再起動した。
そのときのログ
Jan 10 12:38:25 hogehoge2 systemd: Started amazon-ssm-agent.
Jan 10 12:38:25 hogehoge2 systemd: Starting amazon-ssm-agent...
Jan 10 12:38:25 hogehoge2 amazon-ssm-agent: 2017/01/10 12:38:25 Failed to load instance info from vault. RegistrationKey does not exist.
Jan 10 12:38:25 hogehoge2 amazon-ssm-agent: Error occured fetching the seelog config file path: open /etc/amazon/ssm/seelog.xml: no such file or directory
Jan 10 12:38:25 hogehoge2 amazon-ssm-agent: 2017-01-10 12:38:25 INFO Starting Agent: amazon-ssm-agent - v2.0.562.0
Jan 10 12:38:25 hogehoge2 amazon-ssm-agent: 2017-01-10 12:38:25 INFO OS: linux, Arch: amd64
Jan 10 12:38:25 hogehoge2 amazon-ssm-agent: 2017-01-10 12:38:25 INFO Initializing bookkeeping folders
Jan 10 12:38:25 hogehoge2 amazon-ssm-agent: datastore file /var/lib/amazon/ssm/i-XXXXXXXXXXXXXXXXX/longrunningplugins/datastore/store doesn't exist - no long running plugins to execute
Jan 10 12:38:25 hogehoge2 amazon-ssm-agent: 2017-01-10 12:38:25 INFO Initializing bookkeeping folders for long running plugins
Jan 10 12:38:25 hogehoge2 amazon-ssm-agent: 2017-01-10 12:38:25 INFO Initializing healthcheck folders for long running plugins
Jan 10 12:38:25 hogehoge2 amazon-ssm-agent: 2017-01-10 12:38:25 INFO Initializing locations for inventory plugin
Jan 10 12:38:25 hogehoge2 amazon-ssm-agent: 2017-01-10 12:38:25 INFO Initializing default location for custom inventory
Jan 10 12:38:25 hogehoge2 amazon-ssm-agent: 2017-01-10 12:38:25 INFO [instanceID=i-XXXXXXXXXXXXXXXXX] Create new startup processor
うまく動いたようです〜!
以下の様にプロセスも確認できました。
$ ps -ax | grep ssm
756 ? Ssl 0:00 /usr/bin/amazon-ssm-agent
最後に・・・
Amazon Linux (AMI ID ami-9f0c67f8)で同じ事になっているか同じように確認したのですが、こちらは /etc/systemd/system/amazon-ssm-agent.service
を設定する事なく、デフォルトのままでOSを再起動をしてもSSMエージェントが立ち上がらないということは無いようでした。
理由はわかりませんが、こんな事もあったと言うことで、備忘録として記録しておきます。