postgres/open-firewall-to-your-ip/README.md #100
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on: | |
schedule: | |
- cron: '0 19 * * 1' | |
workflow_dispatch: | |
name: 'postgres/open-firewall-to-your-ip/README.md' | |
jobs: | |
validate: | |
runs-on: 'ubuntu-latest' | |
steps: | |
- uses: 'azure/login@v1' | |
with: | |
subscription-id: '${{ secrets.AZURE_SUBSCRIPTION_ID }}' | |
client-id: '${{ secrets.AZURE_CLIENT_ID }}' | |
tenant-id: '${{ secrets.AZURE_TENANT_ID }}' | |
- uses: 'actions/checkout@v3' | |
- run: | | |
if [[ -z $REGION ]]; then | |
export REGION=westus | |
fi | |
if [[ -z $RESOURCE_GROUP ]]; then | |
export RESOURCE_GROUP=joazrg-$RANDOM | |
echo "Using '"$RESOURCE_GROUP"' as resource group" | |
fi | |
az group create --name $RESOURCE_GROUP --location $REGION | |
if [[ -z $POSTGRESQL_NAME ]]; then | |
export POSTGRESQL_NAME=postgresql-$RANDOM | |
export POSTGRESQL_USERNAME=postgresql | |
export POSTGRESQL_PASSWORD=p#ssw0rd-$RANDOM | |
fi | |
az postgres server create \ | |
--admin-user $POSTGRESQL_USERNAME \ | |
--admin-password $POSTGRESQL_PASSWORD \ | |
--name $POSTGRESQL_NAME \ | |
--resource-group $RESOURCE_GROUP \ | |
--sku GP_Gen5_2 | |
export LOCAL_IP=`curl -s whatismyip.akamai.com` | |
az postgres server firewall-rule create \ | |
--resource-group $RESOURCE_GROUP \ | |
--server-name $POSTGRESQL_NAME \ | |
--name AllowMyLocalIP \ | |
--start-ip-address $LOCAL_IP \ | |
--end-ip-address $LOCAL_IP | |
export RESULT=$(az postgres server firewall-rule show --resource-group $RESOURCE_GROUP --server-name $POSTGRESQL_NAME --name AllowMyLocalIP --query name --output tsv) | |
az group delete --name $RESOURCE_GROUP --yes || true | |
if [[ "$RESULT" != AllowMyLocalIP ]]; then | |
echo "PostgreSQL firewall was NOT configured to allow access from " $LOCAL_IP | |
exit 1 | |
fi | |
permissions: | |
contents: 'read' | |
id-token: 'write' |