はじめに
前回は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
へ通知するための仕組み作りをしようと思います。