0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Cloud9での各種アプリ(Terraform関連)インストールとCodeCommit(git)

Last updated at Posted at 2023-02-20

備忘兼メモ。

Cloud9でのTerraform環境整備とCodeCommitリポジトリ作成については、こちらを参考に行いました(素晴らしいまとめです)。brewとtfenvもインストールできる。

Cloud9 + CodeCommitでサクッとterraform実行環境を作成する

IAMロールの設定、TFLint/tfsec/AWS CLIのインストールについて、以下を参考にさせていただきました。こちらもまた素晴らしい記事です。
Cloud9にTerraform環境を作ってみる
AdministratorAccessを指定しているが、要件に応じて調整。ただし、AWSで開発するとなるとこれぐらいの権限は必要だと感じる。

ほぼ上記リンクを見れば作成できますが、いったん自身の手順をまとめるために記載する。

各手順

初期設定、インストール関連

Cloud9インスタンスのパスワード変更の実施。任意パスワードに変更する。

Cloud9コンソール
$ sudo passwd ec2-user

brewインストール。

Cloud9コンソール
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"

  • brewにpathを通す
Cloud9コンソール
$ test -d ~/.linuxbrew && PATH="$HOME/.linuxbrew/bin:$HOME/.linuxbrew/sbin:$PATH"
$ test -d /home/linuxbrew/.linuxbrew && PATH="/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:$PATH"
$ test -r ~/.bash_profile && echo "export PATH='$(brew --prefix)/bin:$(brew --prefix)/sbin'":'"$PATH"' >>~/.bash_profile
$ echo "export PATH='$(brew --prefix)/bin:$(brew --prefix)/sbin'":'"$PATH"' >>~/.profile
$ brew

credentialの設定

4. .aws/credentialの設定をする
 に記載のとおり、自動認証機能を無効にする(セキュリティ上の観点から)。

IAMロール

神記事記載の通り。

terraform関連インストール

  • tfenvインストール。
Cloud9コンソール
$ brew install tfenv
$ tfenv list-remote
$ tfenv install x.xx.x #指定バージョンのterraformをinstall
  • tfenvによるTerraformバージョン指定、インストール確認。
Cloud9コンソール
$ tfenv use 1.2.4
$ terraform --version
$ tfenv list

  • tflintのインストール
    構文解析ツール。かなり使う。planでは問題なかったのに、applyできないような状況が格段に減ります。
Cloud9コンソール
$ curl -s https://raw.githubusercontent.com/terraform-linters/tflint/master/install_linux.sh | bash
$ tflint --version

  • tfsecインストール
    セキュリティに問題がありそうなコードを検知してくれるツール。パブリックIPなどの外部公開がある部分などを危険と通知してくれたりする。外部公開が前提だとちょっと過剰に見えるが、あるとヒヤリハットの意味で有用。
Cloud9コンソール
$ curl -L https://github.com/aquasecurity/tfsec/releases/download/v0.63.1/tfsec-linux-amd64 --output tfsec
$ chmod +x tfsec
$ sudo mv tfsec /usr/local/bin/
$ ll /usr/local/bin/tfsec
$ tfsec -v

  • aws cliのインストール。
Cloud9コンソール
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ sudo ./aws/install
$ aws --version

  • Cloud9でAWSの認証を通す
    先のIAMユーザー情報を使って操作を行うため、Cloud9に認証を通す。
    Cloud9内部にシークレットを残したくないため、AWS公式手順に従って、シェルセッションが終わるまでの一時的なクレデンシャルとする。
    IAMユーザーから払い出したアクセスキーとシークレットアクセスキー、利用リージョン名を環境変数に入れる。ダブルクォーテーションはそのまま。
Cloud9コンソール
$ export AWS_ACCESS_KEY_ID="アクセスキー"
$ export AWS_SECRET_ACCESS_KEY="シークレットアクセスキー"
$ export AWS_DEFAULT_REGION="リージョン名"

終わったら、「aws configure」で認証情報として環境変数を指定。

Cloud9コンソール
$ aws configure
AWS Access Key ID [None]: ${AWS_ACCESS_KEY_ID}
AWS Secret Access Key [None]: ${AWS_SECRET_ACCESS_KEY}
Default region name [None]: ${AWS_DEFAULT_REGION}
Default output format [None]: json

AWSへの認証が通ったか、確認する。

Cloud9コンソール
$ aws sts get-caller-identity

次回以降、「Cloud9でAWSの認証を通す」の手順を最初に実施することで、セキュアに認証情報を扱うことができる。

IAMユーザ

個別にCloud9専用ユーザーを作り、CLIアクセスのみにしてセキュリティを担保するか、自身のユーザーは多要素認証も入れてそこで担保するのかは、個々の好みやセキュリティ要件に依存する。個人的にはユーザーを増やして管理の手間を増やしたくないので、自身がいま使ってるIAMユーザーにしたうえで、多要素認証をかけてからキーを払い出すようにしている。
ネットに情報があるので詳しくは書かないが、ここでIAMユーザーからシークレットキーを払い出す。

Terraform初期設定

Terraformをのソースを格納するディレクトリを作成。prodはproduction(本番、実運用環境)を意味する。よしなにフォルダ名は決める。以下は作成したフォルダにカレントを移動している。

Cloud9コンソール
$ mkdir /home/ec2-user/environment/tfm/prod
$ cd /home/ec2-user/environment/tfm/prod
$ pwd 

移動したらそこでterraform initする。

Cloud9コンソール
prod $ terraform init

prodはカレントディレクトリが「/home/ec2-user/environment/tfm/prod」であることを意味する。

ここまででTerraform実行環境の整備が終わった。

CodeCommit+IAM

インフラ屋さんなので、あまりGitなどに慣れ親しんでいない(今回初めて導入した)が、ファイルなどのバージョン管理などをフォルダ名年月日でコピーして、という運用に嫌気がさしていた。そのことから、今回Gitを導入にチャレンジしてみた。

マネジメントコンソールよりCodeCommitを選択する。
image.png

リポジトリを作成する
image.png

任意名前を決めてリポジトリを作成する。
image.png

作成したらIAMに移動し、Cloud9で利用するIAMユーザーを選択し、認証情報タブを選ぶ。
image.png

AWS CodeCommitのHTTPS Git 認証情報にて、認証情報を生成する。
image.png

HTTPS Git 認証情報はメモ等しておく。
image.png

Git 初期設定、ローカルリポジトリ設定、リモートプッシュ

Gitを使うために(Commitするために)、初回はお約束の作業とのこと。ユーザー名やEメールは実在しないものでもよいらしい。USERNAMEとMYEMAILADDRESSの部分を、任意値に変更する。

Cloud9コンソール
$ git config --global user.name USERNAME
$ git config --global user.email MYEMAILADDRESS

バージョン管理したいディレクトリに移動する。今回は先ほどのディレクトリをGit管理対象とする。

Cloud9コンソール
$ cd /home/ec2-user/environment/tfm/prod
prod $ git init
prod(master) $ 

git initするとプロンプトがmasterとなり、masterブランチが切られたことがわかる。
続いて、ローカルリポジトリにadd、commitする。-mでcommit内容にコメントをつけている。

Cloud9コンソール
prod(master) $ git add /home/ec2-user/environment/tfm/prod
prod(master) $ git commit -m 'first commit'

ローカルリポジトリにadd、commitできたら、CodeCommitリポジトリに対して、ローカルリポジトリのmasterブランチをプッシュする。ユーザー名とパスワード入力を求められるため、AWS CodeCommitのHTTPS Git 認証情報で取得した値を入力する。

Cloud9コンソール
prod(master) $ sudo git push --set-upstream https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/CodeCommitリポジトリ名 master
>AWS CodeCommitのHTTPS Git 認証情報のユーザー名を入力
>AWS CodeCommitのHTTPS Git 認証情報のパスワードを入力

上記で、初回リモートリポジトリのpushの際、エラーが出たため、-set-upstreamオプションをつけている。こちらに記載の通り、-uオプションだけでもいいのかもしれない。

初回以降のリモートリポジトリへのmasterブランチのpushはこのように実施。

Cloud9コンソール
prod(master) $ git push https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/CodeCommitリポジトリ名 master

これで一通りCloud9+CodeCommitを利用できる環境が整いました。
あとはTerraform等でバリバリ書いていくのみ。

余談

インフラ系やExcel管理が多い環境だったため、なかなかGitなどに触れる機会がなかったが、今回触ってみてかなり勉強になった。覚えることも多かったが、今後はGitをもっと使っていきたい。

参考

Cloud9にTerraform環境を作ってみる
https://anikitech.com/cloud9-terraform/

Cloud9 + CodeCommitでサクッとterraform実行環境を作成する
https://qiita.com/d_e_n/items/1539623175e2370a60cd

0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?