terraform/piculet/roadworker他ツール導入

AWSのリソース管理ツールとして以下の通り便利ツールを導入する際のメモを記載する。

Terraform

1. 概要

・インフラ構成管理ツール
▼参考URL
https://qiita.com/Chanmoro/items/55bf0da3aaf37dc26f73

2. インストール手順

・インストール手順
https://qiita.com/acron/items/d47a634852036ed3ce04
※ docker利用

3. vscode拡張設定

・Terraform mauve.terraform ▼参考URL
https://qiita.com/pypypyo14/items/5520f3defa55119f3a1a

4. メモ

・destroyはterraform.tfstateを参照しその対象を全て削除する。
- 選択して削除する場合は、-targetで指定する。
- 参考URL:http://reboooot.net/post/what-is-terraform/
・direnvを利用する際は、環境変数から読むためtfvarsファイルにアクセスキー情報は記載しなくても良い。
- 参考URL:https://dev.classmethod.jp/cloud/terraform-getting-started-with-aws/#toc-4
・ALB443リスナー追加資料
- https://tech.enechange.co.jp/entry/2018/08/23/094300
- http://blog.serverworks.co.jp/tech/2019/02/07/post-68849/
・v0.11の tags は ”=”は不要だったが、v0.12からは”=”が必要となった。
aws_route_tableでapply時に、宛先ルートのlocalを明示的に指定していたためエラーが発生。localは暗黙的に作成してくれる旨、公式docsに書かれていた。
- https://www.terraform.io/docs/providers/aws/r/route_table.html

[1m[31mError: [0m[0m[1mError creating route: MissingParameter: The request must contain exactly one of gatewayId, natGatewayId, networkInterfaceId, vpcPeeringConnectionId, egressOnlyInternetGatewayId, transitGatewayId or instanceId
    status code: 400, request id: 1d7e2111-83b8-4e95-a94f-20c973d9f372[0m

piculet

1. 概要

・セキュリティグループの設定をRuby DSLで管理できるコマンドラインツール
▼参考URL
https://dev.classmethod.jp/cloud/migrate-security-group-settings-by-piculet/

2. rbenv、rubyインストール

・インストール手順
https://qiita.com/nishina555/items/63ebd4a508a09c481150

3. Piculetインストール

・インストール手順
https://dev.classmethod.jp/cloud/migrate-security-group-settings-by-piculet/

4. エラー

・Piculetインストール時に「ERROR: While executing gem ... (Gem::FilePermissionError)」が発生したので、rbenvでrubyを管理する。 gem install piculet --no-ri --no-rdocでエラー
- [--no-ri --no-rdoc] はドキュメントをインストールしないオプション。これがあるとインストール時間が倍になるとか。。。 http://blog.ruedap.com/2011/05/14/ruby-gem-install-no-ri-no-rdoc-gemrc
- [--no-ri --no-rdoc]は-Nのオプションと一緒
https://qiita.com/noanoa07/items/dd88845aa5d43e5d1e4a

$ gem install piculet --no-ri --no-rdoc
ERROR:  While executing gem ... (OptionParser::InvalidOption)
    invalid option: --no-ri

5. コマンド例

SGをアウトプットする。

$ piculet -e -r ap-northeast-1 > Groupfile

SGをVPCごとにアウトプットする。

$ piculet -e -o Groupfile -r ap-northeast-1 --split

SGをVPC IDを指定してアウトプットする。

$ piculet -e -o Testfile -r ap-northeast-1 --ec2s vpc-XXXXXXXX

SGをグループ名を指定してアウトプットする。

$ piculet -e -r ap-northeast-1 -n "Group Name" > Groupfile

Groupfileの内容を反映する。(実行計画)

$ piculet -a --dry-run -r ap-northeast-1

Testfileファイルを指定して内容を反映する。(実行計画)

$ piculet -a --dry-run -r ap-northeast-1 -f Testfile

Groupfileの内容を反映する。(適用)

$ piculet -a -r ap-northeast-1

▼参考URL - https://qiita.com/makaaso/items/756ca8d76cd02b117d14
- https://dev.classmethod.jp/cloud/migrate-security-group-settings-by-piculet/

roadworker

1. 概要

Route53(DNS)のレコードをChefやPuppetのようにコードで管理できるもの ▼参考URL https://dev.classmethod.jp/cloud/aws/route53-as-code-roadworker/

2. roadworkerインストール

$ gem install roadworker -N

▼参考URL https://qiita.com/tomy103rider/items/71303c837e8aa060a330

3. コマンド例

・SGをアウトプットする。

$ roadwork -e -o Routefile

・SGをドメインごとにアウトプットする。

$ roadwork -e -o Routefile --split

・レコードを反映させる。(実行計画)

$ roadwork -a --dry-run -f Routefile

・Routefileの内容を反映する。(適用)

$ piculet -a -f Routefile

▼参考URL - https://kakakakakku.hatenablog.com/entry/2016/12/03/211432
- https://qiita.com/enomotodev/items/7ed5ee840a974605ca24

direnv

1. 概要

ディレクトリごとに環境変数を分けることができる。

2. メモ

・インストール手順
https://qiita.com/toshichanapp/items/c5d76144bf6938207f4e
※注意
このままではターミナル再起動時に.bashrcが読み込まれず、都度source ~/.bashrc をしないといけない。
上記手順でMac OSの.bashrcに追記しても.bash_profileで.bashrcを読み込む設定が入ってないので、下記を参考にターミナル再読み込み時に反映されるようにする。
▼参考URL
http://blog.ruedap.com/2010/09/13/mac-bash-bashrc

Git

1. 初期設定

SSH設定、.ssh/config
https://backlog.com/ja/git-tutorial/reference/ssh/
・.gitconfig設定
[[TD_AISINAW] git clone 初期設定]
https://www.kimoton.com/entry/2018/07/26/091619