AWS Systems Managerを使えば、設定ファイルもいい感じにGitで管理できるというのは記事にしましたが、ここでポイントとなってくるAWS-ApplyAnsiblePlaybooksが、CentOS7やRockyLinuxに対応していません。どうすればよいのか、調べました。
AWS-ApplyAnsiblePlaybooksがやること
AWSにログインしないと見れませんが、AWS-ApplyAnsiblePlaybooksはscriptです。プレイブックの実行オプションに"Install Dependencies"というものがあり、これをTrueにすると、playbookの実行に必要なプログラムをインストールします。
どうやってインストールするのか読んでみたところ、PyPI repoから入れるようです。ということは、CentOSでもRockyLinuxでも、PyPI repoから必要なものを入れておけば、AWS-ApplyAnsiblePlaybooksを動かせるようになります。
パッケージ管理はyumにまとめたい
PyPI repoから入れると言うことは、pipでパッケージを管理するということです。CentOSのパッケージ管理はyum(rpm)なので、パッケージ管理システムを2種類使うことになります。モノによっては二重管理となり、アップデートなど面倒な話になってきます。
AWS-ApplyAnsiblePlaybooksの実行に必要なコマンドは、ansible-python3 unzip wgetです。が、ansibleのプレイブックを実行するコマンドがansible-playbook-3になります。AWS-ApplyAnsiblePlaybooksはansible-playbookというコマンドを想定して作られているので、調整が必要です。
CentOS用のAWS-ApplyAnsiblePlaybooksを作った
ansible-playbook-3からansible-playbookにリンクを張ってもよかったのですが、そういった小細工をちゃんと管理していくのは難しいのと、パッケージ管理が二重になるのは面倒なことになりそうなので、CentOS用のAWS-ApplyAnsiblePlaybooksを作りました。といっても、コピーしてコマンドをansible-playbook-3に直しただけですが。
これだけだと"Install Dependencies"が動かないですが、事前に必要なパッケージを入れておけばよいだけです。作ったCentOS用のAWS-ApplyAnsiblePlaybooksはSSMのドキュメントとしてAWSで管理されるので、大した手間にはならないでしょう。
設定ファイルもGit管理
これで、CentOSでも設定ファイルをGit管理できるようになりました。設定ファイルの更新もSSMで行えるので、いちいち対象のサーバにログインする必要もありません。SSMでのプレイブックの実行はawsコマンドでも行えるので、GitOpsでやれることが広がります。