Skip to content

Instantly share code, notes, and snippets.

@ohga
Last active December 8, 2017 07:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ohga/ea7db4c85d2fc0370b432acfef426a2c to your computer and use it in GitHub Desktop.
Save ohga/ea7db4c85d2fc0370b432acfef426a2c to your computer and use it in GitHub Desktop.
# --- 8< --- 8< --- 8< --- 8< --- 8< --- 8< --- 8< --- 8< ---
# upload 先の s3 情報と書き込む事のできる iam 情報
## TODO:修正して使うこと
export AWS_ACCESS_KEY_ID=xxxxxxxxxxxxxxxxxxxx
export AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
REGION=us-east-2
BUCKETNAME=apery-teacher-v`curl -q https://hiraokatakuya.github.io/aperygenerateteacher/version.txt`
# 作成する教師局面情報
TEACHERNODES=10000000
OUTPUTFILENAME=out_`od -vAn -N8 -tu8 < /dev/urandom | tr -d "[:space:]"`.hcpe
# --- 8< --- 8< --- 8< --- 8< --- 8< --- 8< --- 8< --- 8< ---
# ubuntu/images/hvm-ssd/ubuntu-xenial-16.04-amd64-server-20171121.1 のセットアップ
sudo apt-get update
sudo apt-get install g++ make git unzip python-setuptools python2.7-dev -y
sudo easy_install pip
sudo pip install awscli
# 作業ディレクトリを掘っておく(ここを横展開して使う?)
mkdir /tmp/dist
# ifdef.hpp の LEARN を生かして build
## TODO:他にもあれば、適当に patch を書くこと。
cd /tmp
git clone https://github.com/HiraokaTakuya/apery
cd apery/src
curl -s https://gist.githubusercontent.com/ohga/f899d4f0db51efa0b19b6ee6badd2f3d/raw/56fb158cc104e20e927abb7ab690a6b17fa1fb47/apery_ifdef_learn.diff | patch -p2
make -j `nproc` bmi2
cp ./apery /tmp/dist/
# shuffle コマンドも build
cd ../utils/shuffle_hcpe
make
cp shuffle_hcpe /tmp/dist/
# roots.hcp と評価関数の取得
## TODO:とりあえず、aperygenerateteacher_v1.15.0.zip を使っているので、修正して使う。
# --- 8< --- 8< --- 8< --- 8< --- 8< --- 8< --- 8< --- 8< ---
cd /tmp/dist/
wget -q https://github.com/HiraokaTakuya/aperygenerateteacher/releases/download/v1.15.0/aperygenerateteacher_v1.15.0.zip
unzip aperygenerateteacher_v1.15.0.zip
mv aperygenerateteacher_v1.15.0/bin/roots.hcp .
mv aperygenerateteacher_v1.15.0/bin/20161007 ./20171106
rm -Rf aperygenerateteacher_v1.15.0.zip aperygenerateteacher_v1.15.0
# --- 8< --- 8< --- 8< --- 8< --- 8< --- 8< --- 8< --- 8< ---
# 実行
./apery make_teacher roots.hcp ${OUTPUTFILENAME} `nproc` ${TEACHERNODES}
./shuffle_hcpe ${OUTPUTFILENAME} shuf${OUTPUTFILENAME}
# 送信
aws --region ${REGION} s3 cp shuf${OUTPUTFILENAME} s3://${BUCKETNAME}/
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
# gmail の smtp を使って通知してhalt、の例。(gmailのアカウントとか、アプリパスワードとかが必要)
# ## TODO:ちょっとアタマ悪そう。
#
# sudo DEBIAN_FRONTEND=noninteractive apt-get install mutt -y
#
# MAIL=to_mail_address@example.com
# export HOME=/tmp
# echo 'set smtp_url = "smtp://xxxxxxxx@smtp.gmail.com:587/"' >> ~/.muttrc
# echo 'set smtp_pass = "xxxxxxxxxxxxxxxx"' >> ~/.muttrc
#
# echo 'aperygenerateteacher report.' | mutt -s 'aws aperygenerateteacher end' -a /var/log/cloud-init-output.log -- $MAIL
#
# unset HOME
#
# sudo halt
@ohga
Copy link
Author

ohga commented Dec 8, 2017

  • wget -q にしないと遅かったので修正
  • 起動時に実行するかもなので HOME が無いことを考慮
  • メールで終了を通知して終る例を追加

@ohga
Copy link
Author

ohga commented Dec 8, 2017

https://xxxxxx/xxxxx から、こいつを清書したものが読めるようにしてあれば、以下みたいなコマンドで実行できるはず。
ami-82f4dae7 とか c4.large とか id_rsa とかは、好みに合わせること。
--instance-market-options は、この前から使えるオプションで、スポットインスタンスで起動できるやつ。
効かない場合は sudo pip install -U awscli すること。

aws ec2 run-instances --image-id ami-82f4dae7 \
 --instance-type c4.large \
 --instance-market-options '{"MarketType":"spot","SpotOptions":{"MaxPrice":"0.5"}}' \
 --key-name id_rsa \
 --user-data  file://startup.sh \
 --count 1 --associate-public-ip-addres

startup.sh

#!/bin/sh

curl -q https://xxxxxx/xxxxx | sh -x

@ohga
Copy link
Author

ohga commented Dec 8, 2017

一応。
上記のは、かなりカジュアルにやる場合で説明の為にいろいろはしょってます。

とりあえず、鍵値とか入ってるスクリプトを公開領域に置くのは危険なので、curl で引くんじゃなくて、
user-data のスクリプトに鍵を埋め込んで環境変数で渡すようにするとか、AMI にしておいて起動するとか、そこらの工夫は必要。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment