1
0

More than 1 year has passed since last update.

AnsibleをAWS Systems Managerから実行するCI/CDを構築する。(その2:CodeCommitの準備)

Last updated at Posted at 2022-10-01

はじめに

前回はSystems ManagerRunCommand機能を使ってAnsibleを実行してみました。

今回はAnsiblePlaybook等を格納するGitリポジトリをCodeCommitを使用して作成&アップロードしてみようと思います。

CodeCommitとは

CodeCommitAWSで提供しているGitリポジトリとなり、他のAWSサービスと連携がしやすくなっているサービスとなります。

CodeCommitの作成

CodeCommitのGitリポジトリの作成は簡単で、マネジメントコンソールから「AWS CodeCommit」→「リポジトリを作成」でリポジトリを作成します。

Monosnap_20220914_203433.png

リポジトリ名は適当な名前をつけて「作成」をクリックすれば完成です。

Monosnap_20220914_203515.png

CodeCommit使用前準備

リポジトリの準備ができたので、クライアント側のセットアップを行います。

CodeCommitからファイルを取得する方法はいくつかありますが、今回は操作端末に設定されているIAMユーザで取得する方法を紹介します。

Gitのインストール

操作端末にGitがインストールされていなければ、各OSごとのインストール方法に従ってGitのダウンロード&インストールを行います。

以下はMacでインストールする場合の例。

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

【参考】

(MacOSのみ)キーチェーンパスワード自動削除

MacOSCodeCommitを使用すると先程までpullpushができていたのに急に403エラーとなり、以降エラーとなり続けるという事象が発生します。

これはMacOSCodeCommitに接続する際に使用している認証情報は15分しか使えないキーチェーンとなり、期限が切れるとキーが使えなくなることから接続できなくなってしまいます。

Launchpad」→「その他」→「キーチェーンアクセス」より以下のような「git-codecommit.ap-northeast-1.amazonaws.com」といった名前のキーを削除すればまたアクセスできるようになりますが、いちいち削除するのは面倒なので、以下のサイトを参考に、CodeCommitで使用している認証情報を定期的に削除する処理を追加しておきます。

Monosnap_20220919_124042.png

 - 【macOS】リポジトリアクセス時の403エラー対策!AWS CodeCommitのキーチェインパスワードを自動的に削除してみる

CodeCommitへのpush

準備ができたので、作業端末の適当な場所に移動し、以下コマンドでCodeCommitリポジトリをクローンします。

なお、現時点ではCodeCommitのリポジトリには何も登録されていないため、「warning: You appear to have cloned an empty repository.」といったワーニングが出力されても無視します。

CodeCommitからクローン取得
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します。

CodeCommitへのpush
git push origin master

マネジメントコンソールより先程pushしたファイル・ディレクトリが表示されていれば成功です。

Monosnap_20220919_125947.png

おわりに

今回はCodeCommitを作成し、前回作成したPlaybookのファイルをリポジトリ登録するところまで実施しました。

次回はSNSChatbotの準備を行い、Slackへ通知するための仕組み作りをしようと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0