mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-09 06:22:57 +00:00
## Describe your changes In https://github.com/neondatabase/cloud/issues/4354 we are making scheduling of projects based on available disk space and overcommit, so we need to know disk size and just in case instance type of the pageserver ## Issue ticket number and link https://github.com/neondatabase/cloud/issues/4354 ## Checklist before requesting a review - [x] I have performed a self-review of my code. - [ ] ~If it is a core feature, I have added thorough tests.~ - [ ] ~Do we need to implement analytics? if so did you add the relevant metrics to the dashboard?~ - [ ] ~If this PR requires public announcement, mark it with /release-notes label and add several sentences in this section.~
38 lines
1.3 KiB
Bash
38 lines
1.3 KiB
Bash
#!/bin/sh
|
|
|
|
# fetch params from meta-data service
|
|
INSTANCE_ID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)
|
|
AZ_ID=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone)
|
|
INSTANCE_TYPE=$(curl -s http://169.254.169.254/latest/meta-data/instance-type)
|
|
DISK_SIZE=$(df -B1 /storage | tail -1 | awk '{print $2}')
|
|
|
|
# store fqdn hostname in var
|
|
HOST=$(hostname -f)
|
|
|
|
|
|
cat <<EOF | tee /tmp/payload
|
|
{
|
|
"version": 1,
|
|
"host": "${HOST}",
|
|
"port": 6400,
|
|
"region_id": "{{ console_region_id }}",
|
|
"instance_id": "${INSTANCE_ID}",
|
|
"http_host": "${HOST}",
|
|
"http_port": 9898,
|
|
"active": false,
|
|
"availability_zone_id": "${AZ_ID}",
|
|
"disk_size": ${DISK_SIZE},
|
|
"instance_type": "${INSTANCE_TYPE}"
|
|
}
|
|
EOF
|
|
|
|
# check if pageserver already registered or not
|
|
if ! curl -sf -H "Authorization: Bearer {{ CONSOLE_API_TOKEN }}" {{ console_mgmt_base_url }}/management/api/v2/pageservers/${INSTANCE_ID} -o /dev/null; then
|
|
|
|
# not registered, so register it now
|
|
ID=$(curl -sf -X POST -H "Authorization: Bearer {{ CONSOLE_API_TOKEN }}" -H "Content-Type: application/json" {{ console_mgmt_base_url }}/management/api/v2/pageservers -d@/tmp/payload | jq -r '.id')
|
|
|
|
# init pageserver
|
|
sudo -u pageserver /usr/local/bin/pageserver -c "id=${ID}" -c "pg_distrib_dir='/usr/local'" --init -D /storage/pageserver/data
|
|
fi
|