はじめに
前回はSystems ManagerのRunCommand機能を使ってAnsibleを実行してみました。
今回はAnsibleのPlaybook等を格納するGitリポジトリをCodeCommitを使用して作成&アップロードしてみようと思います。
- 【前】AnsibleをAWS Systems Managerから実行するCI/CDを構築する。(その1:Systems ManagerからのAnsible実行)
- 【次】AnsibleをAWS Systems Managerから実行するCI/CDを構築する。(その3:SNS、Chatbotの準備)
CodeCommitとは
CodeCommitはAWSで提供しているGitリポジトリとなり、他のAWSサービスと連携がしやすくなっているサービスとなります。
CodeCommitの作成
CodeCommitのGitリポジトリの作成は簡単で、マネジメントコンソールから「AWS CodeCommit」→「リポジトリを作成」でリポジトリを作成します。
リポジトリ名は適当な名前をつけて「作成」をクリックすれば完成です。
CodeCommit使用前準備
リポジトリの準備ができたので、クライアント側のセットアップを行います。
CodeCommitからファイルを取得する方法はいくつかありますが、今回は操作端末に設定されているIAMユーザで取得する方法を紹介します。
Gitのインストール
操作端末にGitがインストールされていなければ、各OSごとのインストール方法に従ってGitのダウンロード&インストールを行います。
以下はMacでインストールする場合の例。
brew install git
クレデンシャルの設定
操作端末の~/.aws/credentialsにクレデンシャルが登録されていなければ登録しておきます。
aws configure
認証情報ヘルパー設定
以下の設定を行わない場合、CodeCommitにアクセスした際に、認証情報が聞かれてしまうため、認証情報ヘルパーをセットアップします。
git config --global credential.helper '!aws codecommit credential-helper $@'
git config --global credential.UseHttpPath true
【参考】
- AWS CodeCommit 認証情報ヘルパーを使用して Windows で AWS CLI リポジトリへの HTTPS 接続をセットアップする手順
- AWS CLI 認証情報ヘルパーを使用した、Linux、macOS、または UNIX での AWS CodeCommit リポジトリへの HTTPS 接続のセットアップ手順
- AWS CodeCommit 認証情報ヘルパーを使用して Windows で AWS CLI リポジトリへの HTTPS 接続をセットアップする手順
(MacOSのみ)キーチェーンパスワード自動削除
MacOSでCodeCommitを使用すると先程までpullやpushができていたのに急に403エラーとなり、以降エラーとなり続けるという事象が発生します。
これはMacOSでCodeCommitに接続する際に使用している認証情報は15分しか使えないキーチェーンとなり、期限が切れるとキーが使えなくなることから接続できなくなってしまいます。
「Launchpad」→「その他」→「キーチェーンアクセス」より以下のような「git-codecommit.ap-northeast-1.amazonaws.com」といった名前のキーを削除すればまたアクセスできるようになりますが、いちいち削除するのは面倒なので、以下のサイトを参考に、CodeCommitで使用している認証情報を定期的に削除する処理を追加しておきます。
- 【macOS】リポジトリアクセス時の403エラー対策!AWS CodeCommitのキーチェインパスワードを自動的に削除してみる
CodeCommitへのpush
準備ができたので、作業端末の適当な場所に移動し、以下コマンドでCodeCommitリポジトリをクローンします。
なお、現時点ではCodeCommitのリポジトリには何も登録されていないため、「warning: You appear to have cloned an empty repository.」といったワーニングが出力されても無視します。
git clone https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/[CodeCommitリポジトリ名]
Ansible Playbookソース登録
カレントディレクトリにクローンしたディレクトリが存在するはずなので、クローンしたディレクトリ配下に、前回使用したAnsible Playbookのソースを登録します。
クローンしたディレクトリ配下に前回ansible_playbookディレクトリ配下に格納した各種ソースをコピーまたは移動してしまいます。
以下、前回作成したansible_playbookディレクトリと今回Gitクローンしたssm_ansibleディレクトリが同階層にある前提で説明します。
cd ansible_playbook
mv * ../ssm_ansible
cd ../ssm_ansible
git add .
git commit -m "first commit"
CodeCommitへのpush
ローカルのリポジトリにコミットしたソースをリモートリポジトリ(CodeCommit)にpushします。
git push origin master
マネジメントコンソールより先程pushしたファイル・ディレクトリが表示されていれば成功です。
おわりに
今回はCodeCommitを作成し、前回作成したPlaybookのファイルをリポジトリ登録するところまで実施しました。
次回はSNS、Chatbotの準備を行い、Slackへ通知するための仕組み作りをしようと思います。



