在Cloud9上安装各种应用程序(包括Terraform)并配置CodeCommit(git)
备忘与备忘录。
对于Cloud9的Terraform环境设置和CodeCommit仓库创建,我参考了这里的指南(非常详细)。还可以安装brew和tfenv工具。
使用Cloud9和CodeCommit轻松创建Terraform执行环境。
我已参考以下内容进行IAM角色设置、TFLint/tfsec/AWS CLI的安装。这也是一篇很棒的文章。
在Cloud9上创建了Terraform环境
虽然指定了AdministratorAccess,但可以根据要求进行调整。但是,在AWS上进行开发时,我觉得这种权限是必要的。
几乎可以通过查看上述链接来完成创建,但为了总结个人步骤而进行描述。
不同的步驟
进行最初的设置和安装相关的工作。
执行更改Cloud9实例的密码。将其更改为自定义密码。
$ sudo passwd ec2-user
安装Brew。
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
- brewにpathを通す
$ 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
凭证的设定
按照.aws/credential中的说明,禁用自动认证功能(出于安全考虑)。
我是IAM角色。
如同神圣的报道所述。
安装与Terraform相关的软件包
- tfenvインストール。
$ brew install tfenv
$ tfenv list-remote
$ tfenv install x.xx.x #指定バージョンのterraformをinstall
- tfenvによるTerraformバージョン指定、インストール確認。
$ tfenv use 1.2.4
$ terraform --version
$ tfenv list
-
- tflintのインストール
- 構文解析ツール。かなり使う。planでは問題なかったのに、applyできないような状況が格段に減ります。
$ curl -s https://raw.githubusercontent.com/terraform-linters/tflint/master/install_linux.sh | bash
$ tflint --version
-
- tfsecインストール
- セキュリティに問題がありそうなコードを検知してくれるツール。パブリックIPなどの外部公開がある部分などを危険と通知してくれたりする。外部公開が前提だとちょっと過剰に見えるが、あるとヒヤリハットの意味で有用。
$ 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のインストール。
$ 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ユーザーから払い出したアクセスキーとシークレットアクセスキー、利用リージョン名を環境変数に入れる。ダブルクォーテーションはそのまま。
$ export AWS_ACCESS_KEY_ID="アクセスキー"
$ export AWS_SECRET_ACCESS_KEY="シークレットアクセスキー"
$ export AWS_DEFAULT_REGION="リージョン名"
完成后,可以使用“aws configure”命令来指定环境变量作为身份验证信息。
$ 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的认证是否通过。
$ aws sts get-caller-identity
只需提供一种方式,以下是对这句话的汉语本地化表述:
之后的次回开始,通过在Cloud9上执行”通过AWS认证”的步骤,可以安全地处理认证信息。
我是IAM用户
根据个人喜好和安全要求,可以选择分别创建Cloud9专用用户并仅限制为CLI访问,以确保安全性,或者在自己的用户上添加多因素认证来确保安全性。个人而言,我不想增加用户和管理的工作量,因此我选择在我目前使用的IAM用户上,添加多因素认证后再生成密钥。有相关信息可在互联网上查询,故不详细叙述,此处是通过IAM用户生成访问密钥。
Terraform的初始配置
创建一个目录来存储Terraform源代码。”prod”是表示生产(本生产环境)的意思。请自行决定文件夹名称。接下来我们将当前目录切换到创建的文件夹中。
$ mkdir /home/ec2-user/environment/tfm/prod
$ cd /home/ec2-user/environment/tfm/prod
$ pwd
当你移动到那个位置时,执行terraform init。
prod $ terraform init
prod表示当前目录为 “/home/ec2-user/environment/tfm/prod”。
到此为止,Terraform执行环境的设置已经完成。
CodeCommit和IAM
因为我是基础设施工程师,所以并不太熟悉Git等工具(这是我首次使用它),但我对文件和版本管理以及按文件夹命名为年月日进行复制等运维方式感到不满。正因为如此,我决定尝试引入Git。






Git的初始设置、本地仓库设置、远程推送
为了使用Git(提交),第一次需要进行一些约定的工作。据说用户名和电子邮件可以是虚构的。将USERNAME和MYEMAILADDRESS这部分更改为任意值。
$ git config --global user.name USERNAME
$ git config --global user.email MYEMAILADDRESS
前往想要进行版本控制的目录。这次我们将之前的目录设为Git管理的目标。
$ cd /home/ec2-user/environment/tfm/prod
prod $ git init
prod(master) $
当我们执行”git init”命令后,命令行会显示”master”,表示已经创建了一个名为”master”的分支。
然后,我们可以向本地仓库添加文件并提交(commit)。通过”-m”选项,我们可以为提交的内容添加注释。
prod(master) $ git add /home/ec2-user/environment/tfm/prod
prod(master) $ git commit -m 'first commit'
当您能够在本地存储库中进行add和commit操作后,将本地存储库的主分支推送到CodeCommit存储库上。系统会要求您输入用户名和密码,此时您需要输入通过AWS CodeCommit的HTTPS Git认证信息获取到的值。
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 認証情報のパスワードを入力
在以前的情况下,当第一次推送远程仓库时出现错误,因此添加了”-set-upstream”选项。根据以上提到的,可能只用”-u”选项也可以。
以后的首次远程仓库主分支的推送操作如下所示。
prod(master) $ git push https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/CodeCommitリポジトリ名 master
通过以上步骤,您已经成功搭建起了可以使用Cloud9和CodeCommit的环境。
接下来只需要使用Terraform等工具来进行编写即可。
废话不多说
由于主要从事基础设施和Excel管理的工作,很少有机会接触Git等工具,但是这次尝试后我学到了很多知识。虽然需要记住很多东西,但今后我想要更多地使用Git。
以下是参考的中文本地化版本:
在Cloud9上尝试创建Terraform环境
使用Cloud9 + CodeCommit快速创建terraform执行环境。详情请参阅链接:https://qiita.com/d_e_n/items/1539623175e2370a60cd