Skip to content

Increase Node Disk #112

Increase Node Disk

Increase Node Disk #112

name: Increase Node Disk
on:
workflow_dispatch:
inputs:
network:
type: environment
description: "Whether updating a testnet or mainnet node"
default: "mainnet"
required: true
aws_region:
description: "AWS region of EC2 instance to modify"
required: true
instance_id:
description: "The EC2 instance id"
required: true
disk_size:
description: "The amount of diskspace to add (GB)"
default: "50"
required: true
jobs:
increase-disk:
environment: ${{inputs.network}}
runs-on: ubuntu-latest
steps:
- name: Install jq
run: sudo apt-get install -y jq
- name: Checkout
uses: actions/checkout@v4
# - name: Get Hosts Config
# id: get-hosts
# uses: keithweaver/aws-s3-github-action@v1.0.0
# with:
# command: cp
# source: ${{vars.S3_ANSIBLE_HOST_FILE}}
# destination: ./ansible-hosts
# aws_access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }}
# aws_secret_access_key: ${{ secrets.AWS_SECRET_KEY }}
# aws_region: ${{vars.S3_REGION}}
# - uses: actions/setup-python@v5
# with:
# python-version: '3.11'
# - name: Install Ansible + deps
# run: |
# python -m pip install --upgrade pip
# pip install "ansible-core>=2.16" boto3 botocore packaging
# - name: Galaxy install
# run: ansible-galaxy install -r ./scripts/ansible/aws/requirements.yml
# - name: Run playbook
# env:
# AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
# AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_KEY }}
# run: |
# ansible-playbook \
# -i ./ansible-hosts \
# --extra-vars "aws_region=${{github.event.inputs.aws_region}} instance_id=${{inputs.instance_id}} aws_secret_key=${{secrets.AWS_SECRET_KEY}} aws_access_key_id=${{secrets.AWS_ACCESS_KEY_ID}} volume_size=${{github.event.inputs.disk_size}} ansible_python_interpreter='/usr/bin/python3'" \
# ./scripts/ansible/aws/ec2-modify-volume-size.yml
# - name: Wait for AWS to finish provisioning the disk
# run: sleep 30m
# shell: bash
# - name: Extend file system
# id: extend-file-system
# uses: nohmad/aws-ssm-send-command-action@master
# with:
# aws-region: ${{ inputs.aws_region }}
# aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
# aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY }}
# targets: |
# [{"Key":"InstanceIds","Values":["${{ inputs.instance_id }}"]}]
# document-name: AWS-RunShellScript
# parameters: |
# {"commands":["sudo growpart /dev/nvme0n1 1", "sudo resize2fs /dev/nvme0n1p1"]}
- name: Log disk info
id: log-disk-info
uses: nohmad/aws-ssm-send-command-action@master
with:
aws-region: ${{ inputs.aws_region }}
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY }}
targets: |
[{"Key":"InstanceIds","Values":["${{ inputs.instance_id }}"]}]
document-name: AWS-RunShellScript
parameters: |
{"commands": ["echo '--- Disk layout ---'", "lsblk -f", "echo '--- Root mount ---'", "findmnt /"]}
- name: Get SSM output
if: always()
id: get-ssm-output
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_KEY }}
AWS_DEFAULT_REGION: ${{ inputs.aws_region }}
run: |
COMMAND_OUTPUT=$(aws ssm list-command-invocations --command-id ${{ steps.log-disk-info.outputs.command-id }} --details | jq -c .)
echo "COMMAND_OUTPUT=$COMMAND_OUTPUT" >> $GITHUB_ENV
echo "Command Output: $COMMAND_OUTPUT"
- name: Check SSM output
if: steps.get-ssm-output.outcome == 'success' && contains(env.COMMAND_OUTPUT, 'error')
run: |
echo "Error detected trying to extend the partition."
echo ${{env.COMMAND_OUTPUT}}
exit 1