コマンドラインから雑に、指定したIPアドレスの国情報を取得する

運用しているサーバにDoS攻撃っぽいリクエストが飛んでくることがまれによくある。 同じIPアドレスから多数のリクエストが飛んでくる場合、どこの国のお客さんか把握したいのが人情だ。特に国内向けのサービスを運営してるのに、国外からのトラフィックが大…

「markdownlint」を使ってメンテナブルなMarkdownを目指してみる

markdownlintとは markdownlintは、Markdownファイル用のLinterだ。そして、markdownlint-cliは、markdownlintをCLIで使うためのラッパーである。 たとえば、README.md という下記のMarkdownファイルがあるとしよう。 プログラミング、完全に理解した。 これ…

よく使う「AWS Organizations」のAWS CLIチートシート

アカウント確認 最初にマスターアカウントかどうか確認する。本記事では 999999999999 をマスターアカウントとする。 $ aws sts get-caller-identity { "Account": "999999999999", "UserId": "AIDAIBIY7OM4E3EXAMPLE", "Arn": "arn:aws:iam::999999999999:u…

Docker HubとGitHubを自動連携させる「Automated Build」が楽チンすぎる件

Automated Buildとは Docker Hubの「Automated Build」は、GitHubでの変更を検知して、Dockerイメージのビルドを自動的に行う機能である。 Docker Hubへイメージをpushするのに、ローカル環境やCI環境でいちいちdocker build・docker pushするというルーチン…

コマンドラインから雑に、自分のグローバルIPアドレスを取得する

開発しているときに、自分のマシンのグローバルIPアドレスを知りたくなるときがまれによくある。そんなときは↓を叩く。 curl -s ifconfig.io ifconfig.io は自分のIPアドレスを返してくれるだけのシンプルなWebサービスで、フツーにブラウザからも見れる。 …

「hadolint」にシバかれながら美しいDockerfileを書き上げる

hadolintとは hadolintはDockerfile用のLintツールだ。 たとえば、下記のようなDockerfileを作って、チェックしてみる。 FROM alpine RUN cd /tmp && echo 'hello' すると、次のような警告をしてくれるようになる。 /dev/stdin:1 DL3006 Always tag the vers…

「ECS Fargate」をAWSマネジメントコンソールで構築すると何が起きるか

ECS Fargate Dockerコンテナを管理してくれる君。Fargate起動タイプを選択すると、クラスタのEC2の管理が不要になる。ひゃっほーい。詳細は、公式ドキュメントを参照する。 AWSマネジメントコンソールによる構築 とりあえず、動かしてみるぐらいだったら、ポ…

「ShellCheck」を使って、メンテナンス性の高いシェルスクリプトを実装する

ShellCheckとは ShellCheckは、シェルスクリプトの静的解析ツールで、マズい書き方をしてると怒ってくれるLinterだ。 たとえば、example.sh という下記のシェルスクリプトがあるとしよう。 echo $0 これをShellCheckでチェックすると、こんな警告を出してく…

「cli-highlight」で無味乾燥なターミナル表示をカラフルに

cli-highlightとは cli-highlightはターミナルでもエディタのように、シンタックスハイライトをしてくれるツールだ。 無味乾燥なターミナルがとっても見やすくなる。 Before なんの面白みもない表示。 After とってもカラフルで見やすい!

GitHubのWikiをマークダウン形式で取得する

背景 ときどき、GitHubのリポジトリで、ツールの使い方などがバージョン管理されたファイルではなく、Wikiに書かれていることがある。 ブラウザから参照することも可能だが、このWikiで書かれたテキストをマークダウンで取得したくなるときがまれによくある…

雑にシェルスクリプトのみを一覧取得するコマンド

CLI

ファイル名に拡張子 .sh が付いていれば見つけるのは簡単だが、拡張子なしのファイルも見つけたかったので、試行錯誤をメモ。 最初に結論 $ grep '^#!' -rn . | grep ':1:#!' | cut -d: -f1 | grep -v .git 試行錯誤 shebangで検索 $ grep '^#!' -rl . 行頭…

「VPC Flow Logs」をAWSマネジメントコンソールで設定する

VPC Flow Logs 概要 VPC Flow LogsはVPC内のIPトラフィックをキャプチャして、CloudWatch Logsに保存してくれる機能である。VPC Flow Logsでは、下記の単位でキャプチャすることが可能である。 VPC サブネット ネットワークインターフェイス 本記事では、サ…

ECS初回構築時に自動作成されるIAMロール「AWSServiceRoleForECS」とTerraformでの予期せぬ挙動

AWSServiceRoleForECSとは ECSを作成すると、勝手に作られるIAMロール。Terraformでaws_ecs_clusterリソースを作ったときにも自動作成される。Service-Linked Rolesというヤツの一種らしい。 公式ドキュメントから、AWSServiceRoleForECSについての説明を引…

「ECR」をAWSマネジメントコンソールから作成する

ECR ECR(Elastic Container Registry)とは、AWSのDockerレジストリサービスである。Dockerイメージをプライベートに管理し、IAMによるアクセス制御も可能である。 詳細は公式ドキュメントを参照すること。 ECRでは、Dockerイメージごとに、リポジトリを作…

「NATゲートウェイ」をAWSマネジメントコンソールから構築すると何が起きるか

NATゲートウェイ 概要 NAT Gateway は AWS のフルマネージド NAT(ネットワークアドレス変換)サービスである。自前でNATインスタンスをオモリする必要がないのがウリ。控えめに言えば、最高である。詳細は、公式ドキュメントを参照する。 構築手順 おおまか…

SlackのGitHub連携の手順

通知したいチャンネルで、Slackのスラッシュコマンドを叩いて、通知設定を行う。 Sign in Sign in しておかないと、GitHubと連携できない。最初、コレに気づかずハマった。 /github signin すると、こんなボタンが出てくるのでクリック。 で、接続が完了した…

coinbase/assume-role でシュッと多要素認証を突破して、マルチアカウント環境で快適にTerraformライフを送る

なにこれ? CLIコンソールで、AWSのIAMユーザの多要素認証(MFA)を簡単に実行できる。 https://github.com/coinbase/assume-role 背景 Terraform 単体だと、多要素認証したうえで AssumeRole することができない。terraform-provider-aws リポジトリに Issu…

IntelliJが「Not a valid command: idea-shell (similar: shell)」とか言って死ぬ

そのときは突然に 突然IntelliJさんがエラーを吐くようになった。何もしてないのに! [error] Not a valid command: idea-shell (similar: shell) [error] Not a valid project ID: idea-shell [error] Expected ':' (if selecting a configuration) [error]…

最もシンプルに「macOS High Sierra」をクリーンインストールする全手順

Macをクリーンインストールしたのでその全手順を公開する。 コンセプトは、極力余計な設定は入れないである。後追いで可能な、Apple IDの入力や、各種設定は全部スキップする。

terraformのaws_default_network_aclリソースを素人が安易に使ってはいけない

最初組み込んでたんだけど、調べてみるとなんかキワイ。 公式ドキュメント カッコ書きは、Google翻訳を使いながら、適当に翻訳したものである。(残念英語力なので、間違ってたらゴメンね https://www.terraform.io/docs/providers/aws/r/default_network_ac…

Terraformのバックエンド用のS3バケットは、Terraformで管理してはいけない

新規にAWSアカウントを取得するにあたって、極力AWSリソースの管理はterraformに寄せようと思ったのだが、ふとterraformのtfstateファイルを置くS3は、terraform管理していいのか気になった。ので、調べてみた。 公式ソース 結論としてはタイトルどおりなわ…

超速でCentOS6.6(さくらのVPS)をセットアップする俺史上最強のFabricスクリプトをさらす

先日公開したはじめてでも爆速でCentOS6.6(さくらのVPS)をセキュアにセットアップする方法まとめの事実上の後編だ。本記事ではセットアップ手順をFabricのスクリプトにして公開する。

さくらのVPS(CentOS)のネットワーク通信が遅いよヽ(`Д´)ノウワァァン!! って場合の対処法

さくらのVPSをセットアップしていると、エラくモジュールのダウンロードに時間がかかることに気づいた。 VPSだし、こんなもんなのかなとも思ったが、対処法があったのでメモ。 VPSにログインして、suしてrootになった前提での手順だよ。 # ethtool -K eth0 t…

はじめてでも爆速でCentOS6.6(さくらのVPS)をセキュアにセットアップする方法まとめ

爆速でセットアップを完了するため、極力コピペで設定できるようにしてみたよ(・∀・) 動作検証は、さくらのVPSで標準OSをインストールして行った。記事執筆時点ではCentOS6.6がインストールされたぞ。 # cat /etc/issue CentOS release 6.6 (Final) # unam…

Macをセットアップしたら最初にやっておきたいオススメの設定

OS X Yosemiteを対象にしています。他のバージョンだと、多少設定方法が異なるかもしれないので、その点はご承知をm(._.)m

IntelliJでファイル保存時にコードフォマット&import文の整理を自動実行する

IntelliJのコードフォーマット IntelliJを使っていると、リアルタイムに大体いい感じにフォーマットしてくれるけど、括弧類の前後に空白を入れるかどうかとか細かいところまでは面倒見てくれない。 かといって、手動でいちいちコードフォーマットするのも面…

MacのRubyをアップデートして、knife-solo入れたった

Chef-Soloをやるにあたって、とりあえずknife-soloを入れとけって、「入門Chef Solo」に書いてあったので、入れてみることにしたよ。 knife-soloのインストールを試みる $ sudo gem install knife-solo ERROR: Error installing knife-solo: mime-types requ…

Vagrant+VirtualBox+CentOS環境でMySQL5.6が起動しない場合の対処法

発生した現象 Vagrant+VirtualBox+CentOSって環境にMySQL5.6をインストールして起動しようとしたところ $ sudo service mysqld start MySQL Daemon failed to start. Starting mysqld: [FAILED] とこんな感じで起動できなかったので調べてみたよ。 まず、ロ…

本日の戦利品:GitHub実践入門 /シェルスクリプト基本リファレンス/エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド

GitHub実践入門 ~Pull Requestによる開発の変革 http://www.amazon.co.jp/dp/477416366X GitHubを最近真面目に使い出したので購入。 コンパクトにGithubの活用法が書かれていて非常に勉強になった。 CI連携や、チーム開発のフローの提案も記述されていて、実…

本日の戦利品:入門vi 第6版・データベース徹底攻略・Redis入門・MongoDBイン・アクション

入門vi 第6版 http://www.amazon.co.jp/dp/4873110831/ これまでなんとなく敬遠してきたviを習得すべく購入。 これからちょっとずつ、viに慣れていく予定。(頑張れ自分! データベース徹底攻略 http://www.amazon.co.jp/dp/4774163651/ 立ち読みしたら結構…