はじめに
最近CloudformationのCLIツールであるRainが使いやすいと聞くことがあったので、まずはインストールと設定からやってみることにしました。
https://github.com/aws-cloudformation/rain
ただ、極力自分の環境を汚したくないという思いもあり、以下の記事の下部にあるDockerfileを参考にコンテナ環境でRainを実行させたいと思います。
https://dev.classmethod.jp/articles/try-cloudformation-rain-on-windows/
毎回docker runコマンドを実行するのは手間なので、よく使用するPowershellとWSL(ubuntu20.04)でdocker runコマンドをaliasに設定して、Dockerを使っていることを意識せずにできるようにしてみます。
環境
Windows 10 Home
PowerShell 5.1.19041.1151
Ubuntu-20.04
Rain v1.1.2
前提
wslでDockerが実行できる環境は既に設定済み
AWS CLIインストールとデフォルトプロファイルは設定済み
Docker実行
以下の記事を参考にRainのdocker runコマンドが実行できることまで確認します。
- WindowsでCloudFormation Rainを動くようにしてみた
以下のコマンドでRainのバージョンが確認出来たらOKです。
WSL(ubuntu20.04)
$ docker run --rm -it -v "$HOME/.aws/:/root/.aws" -v "$(pwd):/aws" aws-cfn-rain --version
Rain v1.1.2 linux/amd64
Powershell
PS> docker run --rm -it -v "$HOME/.aws/:/root/.aws" -v "$($pwd.Path):/aws" -e AWS_PROFILE aws-cfn-rain --version
Rain v1.1.2 linux/amd64
alias設定(WSL)
.bashrcファイルを編集して、Rainのaliasを追加します。
$ vi ~/.bashrc
~省略~
# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
# add Rain alias
alias rain='docker run --rm -it -v "$HOME/.aws/:/root/.aws" -v "$(pwd):/aws" aws-cfn-rain'
~省略~
.bashrcを再読み込みして実行するとrainコマンドだけで実行できるようになっています。
色々と試すのはこれからですが、とりあえずは問題なさそうです。
$ source ~/.bashrc
$ rain --version
Rain v1.1.2 linux/amd64
alias設定(PowerShell)
以下のコマンドを実行します。(.bashrcと同じようなファイルです)
PS> notepad $profile
以下のようにファイルに追記します。
※function awsがありますが、元々aws cliもPowershellのaliasに設定していたので入っていました。
function rain {
docker run --rm -it -v "$HOME/.aws/:/root/.aws" -v "${PWD}:/aws" aws-cfn-rain $args
}
$profileを再読み込みして実行するとrainコマンドだけで実行できるようになっています。
こちらも問題なさそうです。
PS> . $profile
PS> rain --version
Rain v1.1.2 linux/amd64
補足
AWS CLIのプロファイルを指定することで使用する認証情報を変更することができます。
PS> rain info --profile default
Account: XXXXXXXXXXXX
Region: ap-northeast-1
Identity: arn:aws:iam::XXXXXXXXXXXX:user/user1
Profile: default
$ rain info --profile default
Account: XXXXXXXXXXXX
Region: ap-northeast-1
Identity: arn:aws:iam::XXXXXXXXXXXX:user/user1
Profile: default
おわりに
Rainの設定ができたので、これを使って実際に構築をしていきたいと思います。