Linux(shellコマンド)
ファイル検索
dir/
配下の.py
または .ipynb
ファイルで hogehoge
を含むものを検索したい
grep -r --include='*.py' --include='*.ipynb' "hogehoge" dir/
dir/
配下の特定の文字列を含むファイルを一括で置換したい
例えば、 calender のタイポを一括で修正したい場合
find dir/* \( -name "*.py" -o -name "*.ipynb" \) | xargs sed -e 's/calender/calendar/g' -i
brew install gnu-sed --with-default-names
git
複数に分かれたコミットをまとめたい
すでに作成したコミットに対して、些細な修正を加えた場合など
git add hoge.py
git commit -m "Add important method"
git add hoge.py
git commit -m "些細な fix"
git rebase -i HEAD~~
# "些細な fix" のコミットを `pick` から `f` (`fixup`) に変更することで、直前のコミットにまとめられる
git push -f origin feature/branch_name
git rebase を行うとそれ以後のハッシュ値が変更されてしまうので、main ブランチを marge した後は行わないのが無難
terraform
tfstate ファイルから hoge.tf
に含まれるリソースを一括で削除する
grep "resource" hoge.tf | sed -e "s/resource //g" -e "s/\" \"/\./g" -e "s/\"//g" -e "s/ {//g" | xargs -I arg terraform
state rm arg
count や for_each で作成したリソースがどうなるかは検証していません
tfstate ファイルに稼働中のリソースを紐づける
事前に resource "aws_subnet" "example"
を .tf
ファイルに記載しておく
terraform import aws_subnet.example subnet-01234567890123456
コンソールから手作業で作ったリソースを紐づけるときに便利
tfstate ファイルに紐づいたリソースの状態を見る
terraform state show aws_subnet.example
ここから適当にコピペして .tf
ファイルに転記すると手作業で作ったリソースを削除せずにIaCができるが、以下に注意
- 他のリソースの値がリテラルで入る(
instance_id = i-hogehoge
などとされてしまう)ので、aws_instance.example.id
などで書き換える
id
や arn
などの自動的に決まるべき値も出力されるため、適宜削除する必要がある
- セキュリティーグループルールなど、忘れがちなリソースがあるので、検証環境で横着せずいったん削除してから作り直しておくと安心
tfstate ファイルの内容を全件見る
terraform show -json | jq . | tee current_tfstate.json
パスワードなどの機微情報も見えてしまうので、作業したらファイルを消すこと、パブリックな環境では実行しないこと
SSMを使って踏み台サーバーを経由せずにSSHトンネリングを実現する
aws ssm start-session \
--target i-hogehoge --document-name AWS-StartPortForwardingSession \
--parameters "portNumber=80, localPortNumber=56789" \
--region ap-northeast-1 --profile profile_name```
この状態で localhost:56789
にアクセスするとトラフィックが i-hogehoge
の 80番ポートにリダイレクトされる
windows(command prompt)
SSMを使って踏み台サーバーを経由せずにSSHトンネリングを実現する
aws ssm start-session --target i-hogehoge --document-name AWS-StartPortForwardingSession --parameters "portNumber=3389, localPortNumber=13389" --region ap-northeast-1 --profile profile_name
この状態で「リモートデスクトップ接続」から localhost:13389
に接続すると i-hogehoge
にRDP接続することができる。
- i-hogehoge は Windowsマシンであること
- ログイン時に求められるユーザー名は
Administrator
, パスワードはEC2のコンソール画面から取得する
- ちなみに、Windows マシンは Linux マシンに比べて(同一スペックの場合)割高です