diff --git a/PENDING.md b/PENDING.md index 14aac94a4b..fe3fe55b96 100644 --- a/PENDING.md +++ b/PENDING.md @@ -38,6 +38,7 @@ FEATURES * [cosmos-sdk-cli] Added support for cosmos-sdk-cli tool under cosmos-sdk/cmd * This allows SDK users to initialize a new project repository. * [tests] Remotenet commands for AWS (awsnet) +* [networks] Added ansible scripts to upgrade seed nodes on a network * [store] Add transient store * [gov] Add slashing for validators who do not vote on a proposal * [cli] added `gov query-proposals` command to CLI. Can filter by `depositer`, `voter`, and `status` diff --git a/networks/Makefile b/networks/Makefile index ed5a2cebd8..36db88f4d7 100644 --- a/networks/Makefile +++ b/networks/Makefile @@ -17,6 +17,7 @@ REGION_LIMIT?=1 # Path to gaiad for deployment. Must be a Linux binary. BINARY?=$(CURDIR)/../build/gaiad +GAIACLI_BINARY?=$(CURDIR)/../build/gaiacli # Path to the genesis.json and config.toml files to deploy on full nodes. GENESISFILE?=$(CURDIR)/../build/genesis.json @@ -39,7 +40,15 @@ disclaimer: extract-config: disclaimer #Make sure you have AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY or your IAM roles set for AWS API access. @if ! [ -f $(HOME)/.ssh/id_rsa.pub ]; then ssh-keygen ; fi - cd remote/ansible && ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook -i inventory/ec2.py -l "tag_Environment_$(CLUSTER_NAME)" -u centos -b -e TESTNET_NAME="$(TESTNET_NAME)" -e GENESISFILE="$(GENESISFILE)" -e CONFIGFILE="$(CONFIGFILE)" extract-config.yml + cd remote/ansible && \ + ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook \ + -i inventory/ec2.py \ + -l "tag_Environment_$(CLUSTER_NAME)" \ + -b -u centos \ + -e TESTNET_NAME="$(TESTNET_NAME)" \ + -e GENESISFILE="$(GENESISFILE)" \ + -e CONFIGFILE="$(CONFIGFILE)" \ + extract-config.yml ######################################## @@ -91,6 +100,15 @@ upgrade-gaiad: disclaimer @if [ -z "`file $(BINARY) | grep 'ELF 64-bit'`" ]; then echo "Please build a linux binary using 'make build-linux'." ; false ; fi cd remote/ansible && ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook -i inventory/ec2.py -l "tag_Environment_$(CLUSTER_NAME)" -u centos -b -e BINARY=$(BINARY) upgrade-gaiad.yml +UNSAFE_RESET_ALL?=no +upgrade-seeds: disclaimer + #Make sure you have AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY or your IAM roles set for AWS API access. + @if ! [ -f $(HOME)/.ssh/id_rsa.pub ]; then ssh-keygen ; fi + @if [ -z "`file $(BINARY) | grep 'ELF 64-bit'`" ]; then echo "Please build a linux binary using 'make build-linux'." ; false ; fi + @if [ -z "`file $(GAIACLI_BINARY) | grep 'ELF 64-bit'`" ]; then echo "Please build a linux binary using 'make build-linux'." ; false ; fi + cd remote/ansible && ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook -i inventory/ec2.py -l "tag_Environment_$(CLUSTER_NAME)" -u centos -b -e BINARY=$(BINARY) -e GAIACLI_BINARY=$(GAIACLI_BINARY) -e UNSAFE_RESET_ALL=$(UNSAFE_RESET_ALL) upgrade-gaia.yml + + list: remote/ansible/inventory/ec2.py | python -c 'import json,sys ; print "\n".join(json.loads("".join(sys.stdin.readlines()))["tag_Environment_$(CLUSTER_NAME)"])' diff --git a/networks/remote/ansible/add-lcd.yml b/networks/remote/ansible/add-lcd.yml new file mode 100644 index 0000000000..bdc0703487 --- /dev/null +++ b/networks/remote/ansible/add-lcd.yml @@ -0,0 +1,8 @@ +--- + +- hosts: all + any_errors_fatal: true + gather_facts: no + roles: + - add-lcd + diff --git a/networks/remote/ansible/roles/add-lcd/defaults/main.yml b/networks/remote/ansible/roles/add-lcd/defaults/main.yml new file mode 100644 index 0000000000..952d016f7d --- /dev/null +++ b/networks/remote/ansible/roles/add-lcd/defaults/main.yml @@ -0,0 +1,4 @@ +--- + +GAIAD_ADDRESS: tcp://0.0.0.0:1317 + diff --git a/networks/remote/ansible/roles/add-lcd/handlers/main.yml b/networks/remote/ansible/roles/add-lcd/handlers/main.yml new file mode 100644 index 0000000000..2ce6b83e55 --- /dev/null +++ b/networks/remote/ansible/roles/add-lcd/handlers/main.yml @@ -0,0 +1,9 @@ +--- + +- name: systemctl + systemd: name=gaiacli enabled=yes daemon_reload=yes + +- name: restart gaiacli + service: name=gaiacli state=restarted + + diff --git a/networks/remote/ansible/roles/add-lcd/tasks/main.yml b/networks/remote/ansible/roles/add-lcd/tasks/main.yml new file mode 100644 index 0000000000..11fa44c9f2 --- /dev/null +++ b/networks/remote/ansible/roles/add-lcd/tasks/main.yml @@ -0,0 +1,15 @@ +--- + +- name: Copy binary + copy: + src: "{{GAIACLI_BINARY}}" + dest: /usr/bin + mode: 0755 + notify: restart gaiacli + +- name: Copy service + template: + src: gaiacli.service.j2 + dest: /etc/systemd/system/gaiacli.service + notify: systemctl + diff --git a/networks/remote/ansible/roles/add-lcd/templates/gaiacli.service.j2 b/networks/remote/ansible/roles/add-lcd/templates/gaiacli.service.j2 new file mode 100644 index 0000000000..4f189f8f5b --- /dev/null +++ b/networks/remote/ansible/roles/add-lcd/templates/gaiacli.service.j2 @@ -0,0 +1,17 @@ +[Unit] +Description=gaiacli +Requires=network-online.target +After=network-online.target + +[Service] +Restart=on-failure +User=gaiad +Group=gaiad +PermissionsStartOnly=true +ExecStart=/usr/bin/gaiacli advanced rest-server --laddr {{GAIAD_ADDRESS}} +ExecReload=/bin/kill -HUP $MAINPID +KillSignal=SIGTERM + +[Install] +WantedBy=multi-user.target + diff --git a/networks/remote/ansible/roles/logzio/templates/journalbeat.yml.j2 b/networks/remote/ansible/roles/logzio/templates/journalbeat.yml.j2 index a421ec8a57..af2ac4f139 100644 --- a/networks/remote/ansible/roles/logzio/templates/journalbeat.yml.j2 +++ b/networks/remote/ansible/roles/logzio/templates/journalbeat.yml.j2 @@ -50,7 +50,7 @@ journalbeat: #move_metadata_to_field: "" # Specific units to monitor. - units: ["{{service}}.service"] + units: ["{{service}}.service","gaiacli.service"] # Specify Journal paths to open. You can pass an array of paths to Systemd Journal paths. # If you want to open Journal from directory just pass an array consisting of one element diff --git a/networks/remote/ansible/roles/setup-journald/handlers/main.yml b/networks/remote/ansible/roles/setup-journald/handlers/main.yml new file mode 100644 index 0000000000..d26e030290 --- /dev/null +++ b/networks/remote/ansible/roles/setup-journald/handlers/main.yml @@ -0,0 +1,6 @@ +--- + +- name: restart journald + service: name=systemd-journald state=restarted + + diff --git a/networks/remote/ansible/roles/setup-journald/tasks/main.yml b/networks/remote/ansible/roles/setup-journald/tasks/main.yml new file mode 100644 index 0000000000..4b1b9121e0 --- /dev/null +++ b/networks/remote/ansible/roles/setup-journald/tasks/main.yml @@ -0,0 +1,20 @@ +--- + +- name: Disable journald rate-limiting + lineinfile: "dest=/etc/systemd/journald.conf regexp={{item.regexp}} line='{{item.line}}'" + with_items: + - { regexp: "^#RateLimitInterval", line: "RateLimitInterval=0s" } + - { regexp: "^#RateLimitBurst", line: "RateLimitBurst=0" } + notify: restart journald + +- name: Create journal directory for permanent logs + file: path=/var/log/journal state=directory + notify: restart journald + +- name: Set journal folder with systemd-tmpfiles + command: "systemd-tmpfiles --create --prefix /var/log/journal" + notify: restart journald + +#- name: Ability to get the core dump on SIGABRT +# shell: "ulimit -c unlimited" + diff --git a/networks/remote/ansible/roles/upgrade-gaiad/tasks/main.yml b/networks/remote/ansible/roles/upgrade-gaiad/tasks/main.yml index d27377c491..03bdf40e09 100644 --- a/networks/remote/ansible/roles/upgrade-gaiad/tasks/main.yml +++ b/networks/remote/ansible/roles/upgrade-gaiad/tasks/main.yml @@ -7,3 +7,23 @@ mode: 0755 notify: restart gaiad +- name: Copy new genesis.json file, if available + when: "GENESISFILE is defined and GENESISFILE != ''" + copy: + src: "{{GENESISFILE}}" + dest: /home/gaiad/.gaiad/config/genesis.json + notify: restart gaiad + +- name: Download genesis.json URL, if available + when: "GENESISURL is defined and GENESISURL != ''" + get_url: + url: "{{GENESISURL}}" + dest: /home/gaiad/.gaiad/config/genesis.json + force: yes + notify: restart gaiad + +- name: Reset network + when: UNSAFE_RESET_ALL | default(false) | bool + command: "sudo -u gaiad gaiad unsafe_reset_all" + notify: restart gaiad + diff --git a/networks/remote/ansible/setup-journald.yml b/networks/remote/ansible/setup-journald.yml new file mode 100644 index 0000000000..fc8a8b16c1 --- /dev/null +++ b/networks/remote/ansible/setup-journald.yml @@ -0,0 +1,8 @@ +--- + +- hosts: all + any_errors_fatal: true + gather_facts: no + roles: + - setup-journald + diff --git a/networks/remote/ansible/upgrade-gaia.yml b/networks/remote/ansible/upgrade-gaia.yml new file mode 100644 index 0000000000..cde5603484 --- /dev/null +++ b/networks/remote/ansible/upgrade-gaia.yml @@ -0,0 +1,9 @@ +--- + +- hosts: all + any_errors_fatal: true + gather_facts: no + roles: + - upgrade-gaiad + - add-lcd + diff --git a/networks/remote/ansible/upgrade-gaiad.yml b/networks/remote/ansible/upgrade-gaiad.yml index bb8c7b1b5c..4e81c74310 100644 --- a/networks/remote/ansible/upgrade-gaiad.yml +++ b/networks/remote/ansible/upgrade-gaiad.yml @@ -1,5 +1,8 @@ --- +# Required: BINARY +# Optional: GENESISFILE, UNSAFE_RESET_ALL + - hosts: all any_errors_fatal: true gather_facts: no