Blockchain & Devops, bitetiger

Ansible으로 Klaytn node 환경 구성해보기 본문

DevOps/Ansible

Ansible으로 Klaytn node 환경 구성해보기

호랑이한테물릴래 2022. 9. 30. 00:33
반응형

이전 EC2 Dynamic Inventory를 생성하는 테라폼 코드를 활용해서 그 위에 Ansible로 환경설정하는 과정을 진행해보려 한다.

Terraform은 Klaytn node의 전체적인 아키텍처의 인프라 리소스를 생성하는 역할, Ansible은 생성된 리소스에 필요한 패키지 설치와 node의 환경설정을 하는 용도로 사용한다.

테스트 용도기 때문에 아래와 같이 간단한 아키텍처로 구성.

Endpoint와 Service chain node만 진행, baobab 테스트넷

  • Controll node로 사용할 EC2 1개
  • Managed node로 사용할 EC 2개 (Endpoint node, Service chain node)

Ansible node

EC2에 접근하기 위한 kay-pair, aws dynamic inventory를 구성할 yml을 provisioner로 할당하고, EC2fullAccess 권한을 지정했다. 

Service chain node

1개의 서비스 체인으로 구축한다. 테라폼으로 구성된 node은 기본적인 Python3는 설치되어 있다.

진행해야하는 환경 구성

1) 노드에 SCN 설치 (kscn)

2) homi로 genesis.json과 nodekey 생성

3) static-nodes.json 수정

4) kscn을 이용하여 노드 초기화

5) nodekey와 static-nodes.json 설치

6) 노드 설정

7) 노드 시작

playbook

---
- name: install Service node
  hosts: _managed_server_2
  become: yes
  gather_facts: no

  tasks:
  - name: kscn download
    get_url:
      url: https://packages.klaytn.net/klaytn/v1.9.0/kscn-v1.9.0-0-linux-amd64.tar.gz     dest: /home/ubuntu/kscn-v1.9.0-0-linux-amd64.tar.gz

  - name: homi download
    get_url:
      url: https://packages.klaytn.net/klaytn/v1.9.0/homi-v1.9.0-0-linux-amd64.tar.gz     dest: /home/ubuntu/homi-v1.9.0-0-linux-amd64.tar.gz

  - name: unarchive kscn
    unarchive:
      remote_src: yes
      src: "/home/ubuntu/kscn-v1.9.0-0-linux-amd64.tar.gz"
      dest: "/home/ubuntu/"

  - name: unarchive homi
    unarchive:
      remote_src: yes
      src: "/home/ubuntu/homi-v1.9.0-0-linux-amd64.tar.gz"
      dest: "/home/ubuntu/"

* 8) main-bridges.json 생성 후 kscn 편집하여 재시작

Endpoint node

1) EN 설치

2) genesis.json 다운로드

3) EN 노드 초기화

4) EN 노드 설정

5) EN 노드 시작

6) EN 노드 KNI 확인하여 SCN에 main-bridge.json 생성

playbook

---
- name: install Endpoint node
  hosts: _managed_server_1
  become: yes 
  gather_facts: no
  
  tasks:
  - name: ken download
    get_url:
      url: https://packages.klaytn.net/klaytn/v1.9.0/ken-baobab-v1.9.0-0-linux-amd64.tar.gz
      dest: /home/ubuntu/ken-baobab-v1.9.0-0-linux-amd64.tar.gz

  - name: install ken.tar.gz
    ansible.builtin.unarchive:
      src: /home/ubuntu/ken-baobab-v1.9.0-0-linux-amd64.tar.gz
      dest: /home/ubuntu/
      remote_src: yes

  - name: genesis.json download
    get_url:
      url: https://packages.klaytn.net/baobab/genesis.json
      dest: /home/ubuntu/genesis.json

  - name: initialize ken
    become: yes
    shell:
      "/home/ubuntu/ken-linux-amd64/bin/ken --datadir ~/data init /home/ubuntu/genesis.json"
      
  - name: rename kend.conf
    ansible.builtin.copy:
      remote_src: yes
      src: /home/ubuntu/ken-linux-amd64/conf/kend_baobab.conf
      dest: /home/ubuntu/ken-linux-amd64/conf/kend.conf

  - name: modify kend.conf(SC_MAIN_BRIDGE)
    lineinfile:
      path: /home/ubuntu/ken-linux-amd64/conf/kend.conf
      regexp: '^SC_MAIN_BRIDGE='
      line: 'SC_MAIN_BRIDGE=1'

  - name: modify kend.conf(DATA_DIR)
    lineinfile:
      path: /home/ubuntu/ken-linux-amd64/conf/kend.conf
      regexp: '^DATA_DIR='
      line: 'DATA_DIR=~/data'

아직 수정 중..

반응형
0 Comments
댓글쓰기 폼