{ "cells": [ { "cell_type": "markdown", "metadata": { "azdata_cell_guid": "82e60c1a-7acf-47ee-877f-9e85e92e11da" }, "source": [ "![Microsoft](https://raw.githubusercontent.com/microsoft/azuredatastudio/main/extensions/arc/images/microsoft-small-logo.png)\n", " \n", "## Deploy Azure Arc Data Controller on an existing cluster\n", " \n", "This notebook walks through the process of deploying a Azure Arc controller on an existing cluster.\n", " \n", "* Follow the instructions in the **Prerequisites** cell to install the tools if not already installed.\n", "* The **Required information** will check and prompt you for password if it is not set in the environment variable. The password can be used to access the data controller.\n", "\n", "Please press the \"Run All\" button to run the notebook" ] }, { "cell_type": "markdown", "metadata": { "azdata_cell_guid": "714582b9-10ee-409e-ab12-15a4825c9471" }, "source": [ "### **Prerequisites** \n", "Ensure the following tools are installed and added to PATH before proceeding.\n", " \n", "|Tools|Description|Installation|\n", "|---|---|---|\n", "|kubectl | Command-line tool for monitoring the underlying Kubernetes cluster | [Installation](https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl-binary-using-native-package-management) |\n", "|Azure CLI (az) | Command-line tool for installing and managing resources in an Azure Arc cluster |[Installation](https://docs.microsoft.com/cli/azure/install-azure-cli-windows?tabs=azure-cli) |\n", "|Azure CLI arcdata extension | Commands for using Azure Arc for Azure data services. | [Installation](https://docs.microsoft.com/azure/azure-arc/data/install-arcdata-extension)" ] }, { "cell_type": "markdown", "metadata": { "azdata_cell_guid": "e3dd8e75-e15f-44b4-81fc-1f54d6f0b1e2" }, "source": [ "### **Setup**" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "azdata_cell_guid": "d973d5b4-7f0a-4a9d-b204-a16480f3940d", "tags": [] }, "outputs": [], "source": [ "import sys,os,getpass\n", "def run_command(command):\n", " print(\"Executing: \" + command)\n", " !{command}\n", " if _exit_code != 0:\n", " sys.exit(f'Command execution failed with exit code: {str(_exit_code)}.\\n\\t{command}\\n')\n", " print(f'Successfully executed: {command}')" ] }, { "cell_type": "markdown", "metadata": { "azdata_cell_guid": "4b266b2d-bd1b-4565-92c9-3fc146cdce6d" }, "source": [ "### **Set variables**\n", "Generated by Azure Data Studio using the values collected in the 'Create Azure Arc data controller' wizard." ] }, { "cell_type": "markdown", "metadata": { "azdata_cell_guid": "2544648b-59c9-4ce5-a3b6-87086e214d4c" }, "source": [ "### **Check dependencies**" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "azdata_cell_guid": "691671d7-3f05-406c-a183-4cff7d17f83d", "tags": [] }, "outputs": [], "source": [ "run_command('az --version')" ] }, { "cell_type": "markdown", "metadata": { "azdata_cell_guid": "0bb02e76-fee8-4dbc-a75b-d5b9d1b187d0" }, "source": [ "### **Required information**" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "azdata_cell_guid": "e7e10828-6cae-45af-8c2f-1484b6d4f9ac", "tags": [] }, "outputs": [], "source": [ "if \"AZDATA_NB_VAR_ARC_ADMIN_PASSWORD\" in os.environ:\n", " arc_admin_password = os.environ[\"AZDATA_NB_VAR_ARC_ADMIN_PASSWORD\"]\n", "else:\n", " if arc_admin_password == \"\":\n", " arc_admin_password = getpass.getpass(prompt = 'Azure Arc Data Controller password')\n", " if arc_admin_password == \"\":\n", " sys.exit(f'Password is required.')\n", " confirm_password = getpass.getpass(prompt = 'Confirm password')\n", " if arc_admin_password != confirm_password:\n", " sys.exit(f'Passwords do not match.')" ] }, { "cell_type": "markdown", "metadata": { "azdata_cell_guid": "127c8042-181f-4862-a390-96e59c181d09" }, "source": [ "### **Set and show current context**" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "azdata_cell_guid": "7d1a03d4-1df8-48eb-bff0-0042603b95b1", "tags": [] }, "outputs": [], "source": [ "os.environ[\"KUBECONFIG\"] = arc_config_file\n", "run_command(f'kubectl config use-context {arc_cluster_context}')\n", "run_command('kubectl config current-context')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### **Log in to Azure CLI**" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "is_indirect = arc_data_controller_connectivity_mode == 'Indirect'\n", "\n", "if not is_indirect:\n", "\trun_command('az login')" ] }, { "cell_type": "markdown", "metadata": { "azdata_cell_guid": "efe78cd3-ed73-4c9b-b586-fdd6c07dd37f" }, "source": [ "### **Create Azure Arc Data Controller**" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "azdata_cell_guid": "373947a1-90b9-49ee-86f4-17a4c7d4ca76", "tags": [] }, "outputs": [], "source": [ "print (f'Creating Azure Arc Data Controller: {arc_data_controller_name} using configuration {arc_cluster_context}')\n", "os.environ[\"AZDATA_USERNAME\"] = arc_admin_username\n", "os.environ[\"AZDATA_PASSWORD\"] = arc_admin_password\n", "\n", "namespace = f' --k8s-namespace {arc_data_controller_namespace}' if is_indirect else ''\n", "use_k8s = ' --use-k8s' if is_indirect else ''\n", "\n", "custom_location = f' --custom-location {arc_data_controller_custom_location}' if not is_indirect else ''\n", "\n", "auto_upload_metrics_value = 'true' if arc_data_controller_auto_upload_metrics == 'true' else 'false'\n", "auto_upload_logs_value = 'true' if arc_data_controller_auto_upload_logs == 'true' else 'false'\n", "\n", "auto_upload_metrics = f' --auto-upload-metrics {auto_upload_metrics_value}' if not is_indirect else ''\n", "auto_upload_logs = f' --auto-upload-logs {auto_upload_logs_value}' if not is_indirect else ''\n", "\n", "if os.name == 'nt':\n", " print(f'If you don\\'t see output produced by az, you can run the following command in a terminal window to check the deployment status:\\n\\t {os.environ[\"AZDATA_NB_VAR_KUBECTL\"]} get pods -n {arc_data_controller_namespace}')\n", "run_command(f'az arcdata dc create --connectivity-mode {arc_data_controller_connectivity_mode} --name {arc_data_controller_name}{namespace} --subscription {arc_subscription} --resource-group {arc_resource_group} --location {arc_data_controller_location} --storage-class {arc_data_controller_storage_class} --profile-name {arc_profile} --infrastructure {arc_infrastructure}{custom_location}{auto_upload_metrics}{auto_upload_logs}{use_k8s}')\n", "print(f'Azure Arc Data Controller: {arc_data_controller_name} created.') " ] }, { "cell_type": "markdown", "metadata": { "azdata_cell_guid": "a3ddc701-811d-4058-b3fb-b7295fcf50ae" }, "source": [ "### **Setting context to created Azure Arc Data Controller**" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "azdata_cell_guid": "c974561f-13d0-4e7a-b74b-d781c2e06d68" }, "outputs": [], "source": [ "# Setting context to Data Controller.\n", "#\n", "run_command(f'kubectl config set-context --current --namespace {arc_data_controller_namespace}')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.6" } }, "nbformat": 4, "nbformat_minor": 2 }