Last active
January 28, 2020 10:23
-
-
Save 44uk/d762ff2629ad684ae5234b686e30dd90 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# Amazon Linux 2 AMI (HVM), SSD Volume Type - ami-062f7200baf2fa504 (64 ビット x86) で動作確認済み | |
# AWS EC2 の ステップ3: インスタンスの詳細の設定 高度な詳細 > ユーザーデータ に貼り付けることで、 | |
# インスタンス起動時にcatapult-testnet-bootstrapのapi-harvestノードのセットアップを行います。 | |
# http://__ip_addr__:3000/chain/height | |
# | |
# このスクリプトは次の作業を行います。 | |
# * ssh接続ポートの変更 | |
# * docker,docker-composeのインストール | |
# * catapult-testnet-bootstrapのapi-harvest-assemblyのdocker-composeをサービス化 | |
# * 任意のfriendly_nameを設定(変数に値を入れてください) | |
# * 任意のhostを設定(変数に値を入れてください) | |
# * (既存ノードを接続先として取得して設定) | |
# | |
# セキュリティグループでは次のポートを公開してください。 | |
# * 3000 API Gatewayの通信用 | |
# * 7900 peerノード間の通信用 | |
# * 50022 sshd (変数で任意に変更可) | |
SSHD_PORT=50022 | |
DOCKER_COMPOSE_VER=1.25.1 | |
BOOTSTRAP_TAG=0.1-beta | |
CAT_GATEWAY=http://cat-testnet.44uk.net:3000 | |
FRIENDLY_NAME= | |
NODE_HOST= | |
# パッケージを最新へアップデート | |
yum upgrade -y | |
# sshdの接続ポート変更 | |
/bin/sed -i -e "s/^#Port 22$/Port $SSHD_PORT/" /etc/ssh/sshd_config | |
systemctl restart sshd | |
# dockerのインストールとサービス開始 | |
yum install -y docker | |
usermod -a -G docker ec2-user | |
systemctl enable docker | |
systemctl start docker | |
# docker-composeのインストール | |
curl -L https://github.com/docker/compose/releases/download/$DOCKER_COMPOSE_VER/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose | |
chmod +x /usr/local/bin/docker-compose | |
# docker info | |
# docker-compose --version | |
# catapultノードを常時起動させる設定 | |
# User=rootなのはDockerのマウントしたボリュームのオーナー問題を手抜き解決するため | |
cat << __EOD__ > /etc/systemd/system/catapult.service | |
[Unit] | |
Description=Catapult Node Daemon | |
After=docker.service | |
[Service] | |
Type=simple | |
User=root | |
WorkingDirectory=/home/ec2-user/catapult-testnet-bootstrap-$BOOTSTRAP_TAG/api-harvest-assembly | |
Environment=COMPOSE_FILE=/home/ec2-user/catapult-testnet-bootstrap-$BOOTSTRAP_TAG/api-harvest-assembly/docker-compose.yaml | |
ExecStartPre=/usr/local/bin/docker-compose -f \$COMPOSE_FILE down | |
ExecStartPre=/usr/local/bin/docker-compose -f \$COMPOSE_FILE rm -f | |
ExecStart=/usr/local/bin/docker-compose -f \$COMPOSE_FILE up --build | |
ExecStop=/usr/local/bin/docker-compose -f \$COMPOSE_FILE stop | |
ExecStopPost=/usr/local/bin/docker-compose -f \$COMPOSE_FILE down | |
ExecStopPost=/usr/local/bin/docker-compose -f \$COMPOSE_FILE rm -f | |
ExecReload=/usr/local/bin/docker-compose -f \$COMPOSE_FILE restart | |
Restart=always | |
RestartSec=60s | |
[Install] | |
WantedBy=multi-user.target | |
__EOD__ | |
# ホームディレクトリへ移動 | |
cd /home/ec2-user | |
# catapultノードブートストラップを取得 | |
curl -L https://github.com/nemfoundation/catapult-testnet-bootstrap/archive/v$BOOTSTRAP_TAG.tar.gz | tar zx | |
chown -R ec2-user: catapult-testnet-bootstrap-$BOOTSTRAP_TAG | |
cd catapult-testnet-bootstrap-$BOOTSTRAP_TAG/api-harvest-assembly | |
# knownPeersを取得して設定ファイルを生成 | |
# リポジトリに入っている設定では都合が悪い場合に有効にしてください。 | |
# https://github.com/nemfoundation/catapult-testnet-bootstrap/blob/master/peer-assembly/peer-node/userconfig/resources/peers-p2p.json | |
# curl -o /usr/bin/jq http://stedolan.github.io/jq/download/linux64/jq | |
# chmod +x /usr/bin/jq | |
# curl -s $CAT_GATEWAY/node/peers \ | |
# | jq '.[] | {publicKey:.publicKey,endpoint:{host:.host,port:7900},metadata:{name:.friendlyName,roles:"Peer"}}' \ | |
# | jq -s '{knownPeers:.}' \ | |
# > api-node/userconfig/resources/peers-p2p.json | |
# chown ec2-user: api-node/userconfig/resources/peers-p2p.json | |
# 設定ファイルの書き換えと更新 | |
# 設定ファイル生成だけ先に済ませる | |
docker-compose -f docker-compose.yaml up --build generate-raw-addresses store-addresses update_vars | |
if [ -n "$FRIENDLY_NAME" ]; then | |
sed -i.bak "/friendly_name/ s/[0-9A-Z]\{8\}/$FRIENDLY_NAME/" api-node/config-input.yaml | |
# 設定ファイルの適用 | |
docker-compose -f docker-compose.yaml up --build update_vars | |
fi | |
if [ -n "$NODE_HOST" ]; then | |
mv api-node/userconfig/resources/config-node.properties.template{,.bk} | |
tr -d \\r < api-node/userconfig/resources/config-node.properties.template.bk | sed "/^host/ s/$/$NODE_HOST/" > api-node/userconfig/resources/config-node.properties.template | |
fi | |
# 生成されたファイルの所有者がrootになるのでec2-userに補正 | |
chown -R ec2-user: api-node/userconfig | |
# catapultサービスログ確認用 | |
# journalctl -fu catapult | |
# ブートストラップの常時起動設定とサービスの開始 | |
systemctl daemon-reload | |
systemctl enable catapult && systemctl start catapult | |
# パッケージマネージャキャッシュ削除 | |
yum clean all | |
# 古いカーネルを削除 | |
package-cleanup --oldkernels --count=1 -y |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment