{ "metadata": { "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python", "version": "3.6.6", "mimetype": "text/x-python", "codemirror_mode": { "name": "ipython", "version": 3 }, "pygments_lexer": "ipython3", "nbconvert_exporter": "python", "file_extension": ".py" } }, "nbformat_minor": 2, "nbformat": 4, "cells": [ { "cell_type": "markdown", "source": [ "![Microsoft](https://raw.githubusercontent.com/microsoft/azuredatastudio/main/extensions/arc/images/microsoft-small-logo.png)\n", " \n", "## Deploy a PostgreSQL server group on an existing Azure Arc data cluster\n", " \n", "This notebook walks through the process of deploying a PostgreSQL server group on an existing Azure Arc data cluster.\n", " \n", "* Follow the instructions in the **Prerequisites** cell to install the tools if not already installed.\n", "* Make sure you have the target Azure Arc data cluster already created.\n", "\n", "Please press the \"Run All\" button to run the notebook" ], "metadata": { "azdata_cell_guid": "e4ed0892-7b5a-4d95-bd0d-a6c3eb0b2c99" } }, { "cell_type": "markdown", "source": [ "### **Check prerequisites**" ], "metadata": { "azdata_cell_guid": "68531b91-ddce-47d7-a1d8-2ddc3d17f3e7" } }, { "cell_type": "code", "source": [ "import sys,os,json,subprocess\n", "def run_command():\n", " print(\"Executing: \" + cmd)\n", " output = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True )\n", " if output.returncode != 0:\n", " print(f'Command: {cmd} failed \\n')\n", " print(f'\\t>>>Error output: {output.stderr.decode(\"utf-8\")}\\n')\n", " sys.exit(f'exit code: {output.returncode}\\n')\n", " print(f'Successfully executed: {cmd}')\n", " print(f'\\t>>>Output: {output.stdout.decode(\"utf-8\")}\\n')\n", " return output.stdout.decode(\"utf-8\")\n", "cmd = 'azdata --version'\n", "out = run_command()\n", "" ], "metadata": { "azdata_cell_guid": "749d8dba-3da8-46e9-ae48-2b38056ab7a2", "tags": [] }, "outputs": [], "execution_count": null }, { "cell_type": "markdown", "source": [ "#### **Get required and optional parameters for the PostgreSQL server group**" ], "metadata": { "azdata_cell_guid": "68ec0760-27d1-4ded-9a9f-89077c40b8bb" } }, { "cell_type": "code", "source": [ "# Required Values\n", "server_group_name = os.environ[\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_NAME\"]\n", "server_group_namespace = os.environ[\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_NAMESPACE\"]\n", "server_group_workers = os.environ[\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_WORKERS\"]\n", "server_group_service_type = os.environ[\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_SERVICE_TYPE\"]\n", "server_group_data_size = os.environ[\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_DATA_SIZE\"]\n", "\n", "# Optional Values\n", "server_group_data_class = os.environ.get(\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_DATA_CLASS\")\n", "server_group_port = os.environ.get(\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_PORT\")\n", "server_group_extensions = os.environ.get(\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_EXTENSIONS\")\n", "server_group_cpu_min = os.environ.get(\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_CPU_MIN\")\n", "server_group_cpu_max = os.environ.get(\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_CPU_MAX\")\n", "server_group_memory_min = os.environ.get(\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_MEMORY_MIN\")\n", "server_group_memory_max = os.environ.get(\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_MEMORY_MAX\")\n", "server_group_backup_classes = os.environ.get(\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_BACKUP_CLASSES\")\n", "server_group_backup_sizes = os.environ.get(\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_BACKUP_SIZES\")\n", "server_group_backup_full_interval = os.environ.get(\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_BACKUP_FULL_INTERVAL\")\n", "server_group_backup_delta_interval = os.environ.get(\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_BACKUP_DELTA_INTERVAL\")\n", "server_group_backup_retention_min = os.environ.get(\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_BACKUP_RETENTION_MIN\")\n", "server_group_backup_retention_max = os.environ.get(\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_BACKUP_RETENTION_MAX\")" ], "metadata": { "azdata_cell_guid": "53769960-e1f8-4477-b4cf-3ab1ea34348b", "tags": [] }, "outputs": [], "execution_count": null }, { "cell_type": "markdown", "source": [ "### **Installing PostgreSQL server group**" ], "metadata": { "azdata_cell_guid": "90b0e162-2987-463f-9ce6-12dda1267189" } }, { "cell_type": "code", "source": [ "print (f'Creating a PostgreSQL server group on Azure Arc')\n", "\n", "data_class_option = f' --dataClass \"{server_group_data_class}\"' if server_group_data_class else \"\"\n", "port_option = f' --port \"{server_group_port}\"' if server_group_port else \"\"\n", "extensions_option = f' --extensions \"{server_group_extensions}\"' if server_group_extensions else \"\"\n", "cpu_min_option = f' --minCpu \"{server_group_cpu_min}\"' if server_group_cpu_min else \"\"\n", "cpu_max_option = f' --maxCpu \"{server_group_cpu_max}\"' if server_group_cpu_max else \"\"\n", "memory_min_option = f' --minMemoryMb \"{server_group_memory_min}\"' if server_group_memory_min else \"\"\n", "memory_max_option = f' --maxMemoryMb \"{server_group_memory_max}\"' if server_group_memory_max else \"\"\n", "backup_classes_option = f' --backupClasses \"{server_group_backup_classes}\"' if server_group_backup_classes else \"\"\n", "backup_sizes_option = f' --backupSizesMb \"{server_group_backup_sizes}\"' if server_group_backup_sizes else \"\"\n", "backup_full_interval_option = f' --fullBackupInterval \"{server_group_backup_full_interval}\"' if server_group_backup_full_interval else \"\"\n", "backup_delta_interval_option = f' --deltaBackupInterval \"{server_group_backup_delta_interval}\"' if server_group_backup_delta_interval else \"\"\n", "backup_retention_min_option = f' --retentionMin \"{server_group_backup_retention_min}\"' if server_group_backup_retention_min else \"\"\n", "backup_retention_max_option = f' --retentionMax \"{server_group_backup_retention_max}\"' if server_group_backup_retention_max else \"\"\n", "cmd = f'azdata postgres server create --name {server_group_name} --namespace {server_group_namespace} --workers {server_group_workers} --serviceType {server_group_service_type} --dataSizeMb {server_group_data_size}{data_class_option}{port_option}{extensions_option}{cpu_min_option}{cpu_max_option}{memory_min_option}{memory_max_option}{backup_classes_option}{backup_sizes_option}{backup_full_interval_option}{backup_delta_interval_option}{backup_retention_min_option}{backup_retention_max_option}'\n", "out=run_command()" ], "metadata": { "azdata_cell_guid": "4fbaf071-55a1-40bc-be7e-7b9b5547b886" }, "outputs": [], "execution_count": null } ] }