Skip to content

Increase Node Disk #118

Increase Node Disk

Increase Node Disk #118

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
disk:
description: "The disk to increase using growpart (e.g., /dev/xvda)"
default: "/dev/xvda"
required: true
partition_number:
description: "The partition number to extend using growpart (e.g., 1)"
default: "1"
required: true
partition_device:
description: "The partition device to extend using resize2fs (e.g., /dev/xvda1)"
default: "/dev/xvda1"
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 ${{ inputs.disk }} ${{ inputs.partition_number }}",
"sudo resize2fs ${{ inputs.partition_device }}"
]
}
- 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.extend-file-system.outputs.command-id }} --details | jq -c .)
echo "COMMAND_OUTPUT=$COMMAND_OUTPUT" >> $GITHUB_ENV
- name: Check SSM output
if: steps.get-ssm-output.outcome == 'success' && !contains(env.COMMAND_OUTPUT, 'Status:Success')
run: |
echo "Error detected trying to extend the partition."
echo ${{env.COMMAND_OUTPUT}}
exit 1