#author("2019-03-14T06:30:13+00:00","","")
#author("2019-03-14T10:25:50+00:00","","")
#mynavi(AWSメモ)
#setlinebreak(on);

* 目次 [#wef7852b]
#contents
- 関連
-- [[AWSメモ]]
- 参考
-- https://aws.amazon.com/jp/getting-started/projects/setup-jenkins-build-server/
-- https://aws.amazon.com/jp/blogs/devops/integrating-aws-codecommit-with-jenkins/


* 概要 [#w74ec372]
#html(<div style="padding-left: 10px;">)
EC2インスタンス上にJenkinsをインストールして、API Gateway & Lambda をテスト/デプロイする環境を構築する。
#html(</div>)

* CodeCommitリポジトリの作成 [#be04414e]
* IAMロールの作成 [#aad49cfb]
#html(<div style="padding-left: 10px;">)
- [[マネジメントコンソール>https://ap-northeast-1.console.aws.amazon.com/codesuite/codecommit/repositories?region=ap-northeast-1]] からリポジトリを作成しておく。
- CodeCommit にアクセスに使用するIAMユーザ または EC2用のIAMロールを作成しておく。
[[マネジメントコンソール>https://console.aws.amazon.com/iam/home?region=ap-northeast-1#/roles]] からCodeCommit にアクセスする為のEC2用のロールを作成する。
#TODO(アタッチするポリシーを書く)
#html(</div>)

* IAMユーザの作成 [#dc777e43]
#html(<div style="padding-left: 10px;">)
[[マネジメントコンソール>https://console.aws.amazon.com/iam/home?region=ap-northeast-1#/users]] から CodeCommit への接続用ユーザを作成しておく。
[[マネジメントコンソール>https://console.aws.amazon.com/iam/home?region=ap-northeast-1#/users]] から デプロイ等に使用するIAMユーザを作成する。
#TODO(アタッチするポリシーを書く)
// AWSCodeCommitFullAccess
#html(</div>)

* CodeCommitリポジトリの作成 [#be04414e]
#html(<div style="padding-left: 10px;">)
[[マネジメントコンソール>https://ap-northeast-1.console.aws.amazon.com/codesuite/codecommit/repositories?region=ap-northeast-1]] からリポジトリを作成しておく。
#html(</div>)

* EC2インスタンスの作成 [#p40f0751]
#html(<div style="padding-left: 10px;">)
[[マネジメントコンソール>https://ap-northeast-1.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-1#Instances:sort=instanceId]] からJenkinsをインストールするEC2インスタンスを作成する。
※セキュリティグループでポート 8080 を許可しておく事。
※CodeCommitアクセス用のIAMロールを作成している場合は、ここでロールに設定しておく。
※先程作成しておいたIAMロールを設定しておく事。
#html(</div>)

* EC2インスタンスの設定 [#bbce0ba9]
#html(<div style="padding-left: 10px;">)

** aws-cli の設定 [#s769b608]
EC2インスタンスに接続して以下の作業を行う。

** ec2-user用の aws-cli の設定 [#s769b608]
確認用に ec2-user 用に aws-cli の設定をしておく。
ここでは、作成しておいたIAMユーザの AWS Access Key ID、AWS Secret Access Key、リージョン等を設定する。
#myterm2(){{
aws configure
AWS Access Key ID [None]: XXXXXXXXXXXXXXXXXXXX
AWS Secret Access Key [None]: XXXXX.......XXXXXX
Default region name [None]: ap-northeast-1
Default output format [None]:
}}

** SSH鍵の作成 [#se150636]
** ec2-user 用の git の設定 [#oc27edcb]
確認用に ec2-user 用に git クライアントの設定を行っておく。
認証にはIAMを使用する為、以下の通り設定する。
#myterm2(){{
ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ec2-user/.ssh/id_rsa): /home/ec2-user/.ssh/codecommit_rsa        
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/ec2-user/.ssh/codecommit_rsa.
Your public key has been saved in /home/ec2-user/.ssh/codecommit_rsa.pub.
.
.
git config --global credential.helper '!aws codecommit credential-helper $@'
git config --global credential.useHttpPath true
git config --global user.name "ユーザ名"
git config --global user.email "メールアドレス"
}}

** SSH鍵の確認とIAMユーザへの設定 [#k24ec9e8]

SSH鍵を確認し、上記で作成したIAMユーザの AWS CodeCommit の SSH キーとして登録しておく。
** CodeCommit へのアクセス確認 [#tf811b0a]
先ほど作成した CodeCommit リポジトリにIAMでアクセスできるか確認する。
#myterm2(){{
cat ~/.ssh/codecommit_rsa.pub
ssh-rsa AAAAB3N....QcMiiO7V ec2-user@ip-XXX-XX-XX-XX
git clone https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/Xxxxxxx
}}
※Jenkins からのアクセスは jenkinsユーザでのアクセスになる為、別途設定が必要。(後述)

** Jenkinsのインストール [#c31e9f98]
起動したEC2インスタンスで以下の作業を行う。
※参考: https://d1.awsstatic.com/Projects/P5505030/aws-project_Jenkins-build-server.pdf

** JDK8 のインストール [#f664e401]
#myterm2(){{
sudo yum install -y java-1.8.0-openjdk-devel
}}

** 使用するJavaバージョンの切替 [#r78e8b85]
#myterm2(){{
sudo alternatives --config java

2 プログラムがあり 'java' を提供します。

  選択       コマンド
-----------------------------------------------
*+ 1           /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
   2           /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2
}}

バージョンが切り替わったか確認
#myterm2(){{
java -version
openjdk version "1.8.0_201"
OpenJDK Runtime Environment (build 1.8.0_201-b09)
OpenJDK 64-Bit Server VM (build 25.201-b09, mixed mode)
}}

** Gitのインストール [#w1c5446a]
#myterm2(){{
sudo yum install git -y
}}

** Jenkinsのインストール [#n4605e1f]
#myterm2(){{
sudo yum update -y
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
sudo yum install jenkins -y
}}

** Jenkins ユーザ用の git 設定 [#f9310d5f]

jenkins からCodeCommit にアクセスする際に IAMロールでアクセスするように設定する。
jenkins ユーザのホームディレクトリは /var/lib/jenkins になっているので、その配下に .gitconfig を以下の通り作成する。

#myterm2(){{
sudo touch /var/lib/jenkins/.gitconfig
sudo chmod 664 /var/lib/jenkins/.gitconfig
sudo chown jenkins:jenkins /var/lib/jenkins/.gitconfig
sudo vim /var/lib/jenkins/.gitconfig

[user]
        name = ユーザ名
        email = メールアドレス
[credential]
        helper = !aws codecommit credential-helper $@
        useHttpPath = true
}}

** Jenkinsユーザ用の aws-cliの設定 [#p686d994]
作成しておいたIAMユーザの AWS Access Key ID、AWS Secret Access Key、リージョン等を設定する。
#myterm2(){{
sudo -u jenkins aws configure
AWS Access Key ID [None]: XXXXXXXXXXXXXXXXXXXX
AWS Secret Access Key [None]: XXXXX.......XXXXXX
Default region name [None]: ap-northeast-1
Default output format [None]:
}}

** Jenkinsのサービス開始 [#gdbfc49e]
#myterm2(){{
sudo service jenkins start
}}

** Jenkinsインストール用の管理者パスワードを確認 [#lc81743b]
#myterm2(){{
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
ffee.....b6e8
}}

** Jenkinsにログイン [#g017c319]
http://ec2-XX-XXX-XX-XX.ap-northeast-1.compute.amazonaws.com:8080 にアクセスし、Administrator password に、先程確認した管理者パスワードを入力する
※ [Install suggested plugins] で適当なプラグインをインストールしておく。
#html(</div>)

* デプロイする処理の作成 [#dffd36c5]
#html(<div style="padding-left: 10px;">)

** 準備 [#c8596510]
#html(<div style="padding-left: 10px;">)

*** git チェックアウト [#v0d4c0f8]
#html(<div style="padding-left: 10px;">)
#myterm2(){{
mkdir ~/workspace
git clone https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/SampleRepo    # 作成しておいたCodeCommitリポジトリのURL
cd SampleRepo
git checkout develop
}}
#html(</div>)

* Jenkinsの設定 [#c6e4a45a]
#html(</div>)

** 処理の作成 [#lb9987cf]
#html(<div style="padding-left: 10px;">)

** XXXXXXXXXX [#q24626d6]
*** index.py [#od3ba411]
#html(<div style="padding-left: 10px;">)
#mycode2(){{
TODO
}}
#html(</div>)

** XXXXXXXXXX [#m88eb6d4]
*** template.yml [#w4800203]
#html(<div style="padding-left: 10px;">)
#mycode2(){{
TODO
}}
#html(</div>)

*** build.sh [#i06fa1fa]
#html(<div style="padding-left: 10px;">)
#mycode2(){{
TODO
}}
#html(</div>)

* API Gateway & Lambda の作成 [#q5a620ba]
#html(</div>)

** git リポジトリにプッシュ [#s974f195]
#html(<div style="padding-left: 10px;">)

*** git commit & push [#ae6e2eca]
#html(<div style="padding-left: 10px;">)
#myterm2(){{
git add .
git commit -m 'first commit'
git push
}}
#html(</div>)

*** masterにマージ [#pab838ad]
#html(<div style="padding-left: 10px;">)
#myterm2(){{
git checkout master
git merge develop
git push
}}
#html(</div>)

#html(</div>)

#html(</div>)

* Jenkinsの設定 [#c6e4a45a]
#html(<div style="padding-left: 10px;">)

** Jenkinsにログイン [#g017c319]
#html(<div style="padding-left: 10px;">)
http://ec2-XX-XXX-XX-XX.ap-northeast-1.compute.amazonaws.com:8080 にアクセスし、Administrator password に、先程確認した管理者パスワードを入力する
※ [Install suggested plugins] で適当なプラグインをインストールしておく。
#html(</div>)

** ジョブの作成 [#gd3abfe0]
#html(<div style="padding-left: 10px;">)
#TODO
#html(</div>)

* XXXXXXXXXX [#qd3126e9]
** XXXXXXXXXX [#m88eb6d4]
#html(<div style="padding-left: 10px;">)
#TODO
#html(</div>)

#html(</div>)


トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS