LoginSignup
4
1

More than 3 years have passed since last update.

AnsibleでSymbol テストノードを量産できる体制を作る(https化もできるよ)

Last updated at Posted at 2020-11-03

こんにちは、急にテストノードを建てたくなったので、建てました。
テストノードを量産したかったのでAnsibleを使いました。
本番では秘密鍵を安全に扱える方法を考えたり、セキュリティ対策をしっかりしないとですね。
※動かなくても責任は取れません…

この記事でやること

  • 最小構成でsymbolテストノード構築

出来上がるノードの状態

  • symbol-bootstrap, symbol-cliが入っています。
  • バックグラウンド(systemd)でノードが立ち上がっています。
  • 用意した秘密鍵を使ってハーベスティング準備ができます。
  • ドメインを用意できればhttps化まで自動でできます。
  • ポート制限(ufw)
    • 22
    • 80
    • 443
    • 3000
    • 7900
    • 7902
  • conohaは3000円くらいのプランで動作確認済み
    • スワップを作るといい感じに動きました。

アカウント準備

symbolのデスクトップアプリケーションをインストールして、テストネットに適当なアカウントを作成します。

作成したらfaucetからsymbol.xymを入手しましょう。
ボタンは連打可能ですが控えめにしておきましょう。また使い終わったら返却しましょうね。

サーバー準備

  • 使うスクリプトの関係でUbuntu18.04利用前提です。
  • 私はLightSail利用ですが、おそらくOSが同じで公開鍵認証できればどこでも良いです。マシンを使い捨てられるところで試しましょう。私は20回くらい作り直しました。
  • メモリ4GB以上のマシンを利用しましょう。メモリが足りないとブロックの同期中に落ちます。

Ansibleインストール

  • macならhomebrewを利用してbrew install ansibleで入ります。
  • windowsは…わかりません
  • Linuxはここを参考にすると良いでしょう。

ノードの設定

githubからテストノード構築用のスクリプトをダウンロードして設定しましょう。

# リポジトリをクローン
git clone https://github.com/keisukefunatsu/symbol-testnode-ansible

# コンフィグファイルサンプルをコピーする
cp config-sample.yml config.yml

config.ymlを以下のように編集します。


# あなたのノードのIPアドレスを入力してください。
server_host: "xxx.xxx.xxx.xxxx"
# あなたのノードのログインユーザ名を入力してください
server_user_name: "xxxxxx"

# ノードにSSHログインするためのキーが存在するパスを入力します。
# 大体~/.ssh以下にあるのではないでしょうか。
ssh_key_file_path: "~/.ssh/xxx.pem"

# テストノードを実行するためのユーザ名とグループ名を決めましょう。
node_user_name: "xxxxxx"
node_user_group: "xxxxxx"


docker_compose_version: 1.27.4
# あなたのノードの名前を書きましょう。
node_friendlyName: "my-awesome-node!"

# 必ずテストネット用の秘密鍵を使うこと! 
# signing_privateKeyの行を削除すると新しい秘密鍵が生成されるので心配なら空にしてもOK!
signing_privateKey: "xxxxxxxxxxx"
# こちらも空でもOKです。
vrf_signing_privateKey: "xxxxxxxxxxx" 

# メモリ不足で落ちるパターンがあったので4GBくらいスワップを作っておきます。
swap_file_size_mb: '4096'

# ドメインを持っている場合はこちらにドメイン名とlet's encryptからのメールの受取先を入力しておくと自動でhttps化してくれます。
# letsencrypt_email: "youremailaddress@example.com" # To receive email from let's encrypt
# domain_name: "example.com" # Domain name to be https

構築

ここまで準備できたら以下のコマンドを叩いてテストノードを構築しましょう。

ansible-galaxy install geerlingguy.swap
ansible-playbook -i hosts.yml playbook.yml

成功すると以下のようにokchangedだけがステータスに表示されるはずです。

Screen Shot 2020-10-27 at 21.24.35.png

https化した場合はこんな感じでドメインを入れてノードの状態確認ができます。

https://example.com/node/info
https://example.com/chain/info

ハーベスティングの準備

ここからはサーバーにログインしての作業です。

  • ノードのブロック同期が完了するまで待ちましょう。

    • 同期の完了確認はcurl http://localhost:3000/chain/infoを打って出力された内容の"height"の項目がここで確認できる最新のものと一致しているか確認してください。
  • 同期が完了したら最後に以下のコマンドを打ちます

symbol-bootstrap link

以上です、アカウント情報を見に行くとimportanceの項目が追加されているはずです。
image.png

あとは狂タヌ尊様の記事のようにハーベスティングされるのを待つだけです。
https://nemlog.nem.social/blog/50604

ノードは以下の一覧に出てきます。
https://symbolnodes.org/nodes_testnet/

確認コマンドなど

  • このノード用のもの
# 稼働状況とノードのログなんかが見れます。
sudo systemctl status symbol-testnet.service 

# ↑のコマンドでノードが死んでいたら打ってみましょう。
sudo systemctl restart symbol-testnet.service 
  • symbolのもの
# ノードが正常に稼働しているか調べます
symbol-bootstrap healthCheck
# ノードの名前とかがわかります。
curl http://localhost:3000/node/info
# ブロック高なんかがわかります。
curl http://localhost:3000/chain/info

教えて下さい

  • 作成したノードがノードリストに出てこないのなんでなんでしょう?他にやるべきことがあるのか…
  • 全然まだハーベストが始まってません…
4
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1