Skip to content

Instantly share code, notes, and snippets.

:octocat:
🐙 + 🐱 = :octocat:

tkuchiki

View GitHub Profile
@tkuchiki
tkuchiki / memo.md
Last active Apr 13, 2019
timezone について
View memo.md
@tkuchiki
tkuchiki / get-ec2-security-credentials
Last active Jun 24, 2018
get ec2 security credentials
View get-ec2-security-credentials
#!/bin/sh
# https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html
base_url="http://169.254.169.254/latest/meta-data/iam/security-credentials"
iam_role=`curl -s $base_url/`
curl -s "$base_url/$iam_role"
@tkuchiki
tkuchiki / memo.md
Last active Nov 1, 2017
パブリックアクセス可能なVPC 内で起動したインスタンスの hostname は VPC内/外で別の IP を返す
View memo.md
  • パブリックアクセス可能なVPC 内で起動したインスタンス(EC2 だけでなく、RDS なども)の hostname ec2-xx-xx-xxx-xx.REGION.compute.amazonaws.com は VPC 外では global IPを返し、VPC 内では private IP を返す
    • RDS などをパブリックアクセス可能な状態で起動すると、CNAME で ec2-xx-xx-xxx-xx.REGION.compute.amazonaws.com が返る(中身が EC2 だから)

関連: VPC 内の DB インスタンスに同じ VPC 内の EC2 インスタンスがアクセスする
http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_VPC.Scenarios.html#USER_VPC.Scenario1

# VPC内
$ dig ec2-xx-xx-xxx-xx.REGION.compute.amazonaws.com ns
@tkuchiki
tkuchiki / modify_aurora_writer.sh
Created Aug 4, 2017
Aurora Writer のインスタンスサイズを変更した後、もう一度 Writer にする
View modify_aurora_writer.sh
#!/bin/bash
set -u
INSTANCE="${1}"
SIZE="${2}"
CLUSTER="${3}"
echo "modify db instance: ${INSTANCE} ${SIZE}"
aws rds modify-db-instance --db-instance-identifier ${INSTANCE} --db-instance-class ${SIZE} --apply-immediately
@tkuchiki
tkuchiki / shell.md
Created Aug 2, 2017
pip でインストールしたモジュールが /usr/lib と /usr/local/lib どちらに入っているか調べる
View shell.md

/usr/local/lib 以下に入っているモジュールの一覧を出力

$ for p in $(pip list --format=columns | awk 'NR > 2 {print $1}'); do pip show $p | grep ^Location | grep -qs local && echo $p ; done

/usr/lib 以下に入っているモジュールの一覧を出力

$ for p in $(pip list --format=columns | awk 'NR > 2 {print $1}'); do pip show $p | grep ^Location | grep -vqs local && echo $p ; done
@tkuchiki
tkuchiki / _memo.md
Created Jul 27, 2017
apache(httpd) でファイルの有無で 503 を返すようにする
View _memo.md
  • DocumentRoot = /var/www/html なので 503.html は /var/www/html/503.html にあるとする
  • /tmp/503 があればステータスコード 503 + 503.thml を返す

/tmp/503 は cron や at で作成、削除すれば一定期間だけ自動でメンテにできそう。

# メンテ開始
at $(LANG=C date +"%H:%M %Y-%m-%d" -d "2017-07-27T08:00") -f /path/to/start_maintenance.sh

# メンテ終了
@tkuchiki
tkuchiki / _memo.md
Last active Jul 26, 2017
Redmine 3.3.1 から 3.4.2 にアップグレード時の CSS の対応
View _memo.md
  • http://www.redmine.org/issues/23310 に対応していない theme の場合、表示が崩れる
  • 暫定対応として、デフォルトテーマの CSS を一部そのまま使う
    • public/stylesheets/project_jump.css を設置
    • app/views/layouts/base.html.erb で project_jump.css を読み込むように修正
@tkuchiki
tkuchiki / yum.md
Created Jul 18, 2017
yum groupinstall "Development Tools" は docker build でキャッシュされない気がするので、package を展開して yum install に置き換える
View yum.md
$ yum groupinfo "Development Tools" | egrep -v "(Loaded|Group|Description|Packages)" | awk '{print $1}' | sed -e 's/^+//g' | tr '\n' ' '
 autoconf automake binutils bison flex gcc gcc-c++ gdb gettext kexec-tools latrace libtool make patch pkgconfig rpm-build strace system-rpm-config systemtap-runtime byacc crash cscope ctags cvs diffstat doxygen elfutils gcc-gfortran git indent intltool ltrace patchutils rcs subversion swig systemtap texinfo valgrind ant bzr-python27 chrpath cmake dejagnu expect gcc-gnat glibc-utils imake jpackage-utils lslk mercurial-python27 mod_dav_svn nasm perltidy python27-babel python27-docs rpmdevtools rpmlint systemtap-initscript
View import_job.sh
#!/bin/bash
TOKEN="${1}"
PROJECT="${2}"
curl -s -X POST \
-H "X-Rundeck-Auth-Token: ${TOKEN}" \
-F "xmlBatch=@/tmp/job.yaml" \
"http://localhost:4440/api/19/project/${PROJECT}/jobs/import?fileformat=yaml"
@tkuchiki
tkuchiki / memo.md
Created Jun 5, 2017
CloudFront + EC2 の構成で、EC2 に直接アクセスしたときは 403 を返す
View memo.md
  • CloudFront の Origin Custom Headers に秘密の鍵を設定する
    • X-Pre-Shared-Key : aen1caixahCha4Eb1aeKohpeeshii7quaiz7eT9Aequae3hophah0uh3lecoquoo みたいな
  • Nginx に以下の設定を入れる
        location / {
            if ($http_x_pre_shared_key = "aen1caixahCha4Eb1aeKohpeeshii7quaiz7eT9Aequae3hophah0uh3lecoquoo") {
                return 200 "OK";
            }
            return 403;
You can’t perform that action at this time.