diff --git a/tableau-server-single-node/README.md b/tableau-server-single-node/README.md index b3189ddf9faf..beaacca7e336 100644 --- a/tableau-server-single-node/README.md +++ b/tableau-server-single-node/README.md @@ -6,7 +6,7 @@ -This template deploys a **Standalone Tableau Server instance on a Virtual Machine running Ubuntu 16.04.0-LTS** in its own Virtual Network. +This template deploys a **Standalone Tableau Server instance on a Virtual Machine running Ubuntu, RHEL or CentOS** in its own Virtual Network. `Tags: Tableau, Tableau Server, Business Intelligence, Analytics, Self-Service, Data Visualization` @@ -44,7 +44,7 @@ You can optionally deploy this template following the instructions found hardware requirements. +You can use the config-linux.sh script separately from the ARM template to perform a silent install of Tableau Server by running the following command. This requires you to have already provisioned an Ubuntu, RHEL or CentOS virtual machine following Tableau's hardware requirements. Bash: ```bash @@ -66,7 +66,7 @@ This template deploys the following Azure resources. For information on the cos + Port 80 - public TCP access to your Tableau Server. By default this is set as open to the world, meaning anyone with the IP or DNS of the machine and Tableau Server credentials can access the deployed Tableau Server as a user. You can limit this access to a given IP range after deployment via the Azure portal. + Port 223 - SSH traffic is limited to the source CIDR determined during deployment. Best practice is to limit SSH access to the Tableau Server or machine administrator. + Port 8850 - HTTPS access to Tableau Services Manager UI which allows you to perform Tableau Server administration tasks (stopping & restarting Tableau Server, adding nodes, etc.) -+ **Virtual Machine**: Standard D16 v3 (16 vCPUs, 64 GB mem) or a memory or compute optimized 16 vCPU instance running Ubuntu 16.04.0-LTS with 2 attached disks (30, 64 GiB SSD) with Tableau Server installed ++ **Virtual Machine**: Standard D16 v3 (16 vCPUs, 64 GB mem) or a memory or compute optimized 16 vCPU instance running Ubuntu 16.04.0-LTS, RHEL 7.6 or CentOS 7.5 with 2 attached disks (30, 64 GiB SSD) with Tableau Server installed + Access to the VM is controlled by username/password authentication which you specify in the template parameters. Please ensure you follow Azure's username and password requirements + This template has a static GUID associated with it - allowing Azure & the template's creator to track usage and deployment statistics diff --git a/tableau-server-single-node/azuredeploy.json b/tableau-server-single-node/azuredeploy.json index 6835e16ae02f..3ba25e26f8e5 100644 --- a/tableau-server-single-node/azuredeploy.json +++ b/tableau-server-single-node/azuredeploy.json @@ -23,6 +23,13 @@ }, "defaultValue": "[resourceGroup().location]" }, + "OS": { + "type": "string", + "allowedValues": ["Ubuntu 16.04 LTS", "CentOS 7.5", "RHEL 7.6"], + "metadata": { + "description": "The operating system of the VM." + } + }, "VMSize": { "type": "string", "allowedValues": ["Standard_D16s_v3","Standard_E16s_v3","Standard_F16s_v2","Standard_D4s_v3"], @@ -159,18 +166,32 @@ "subnet1Name": "Subnet-1", "subnet1Prefix": "10.0.0.0/24", "numberOfInstances": 1, - "ubuntuscripturi": "[uri(parameters('_artifactsLocation'), concat('scripts/config-linux.sh', parameters('_artifactsLocationSasToken')))]", + "linuxscripturi": "[uri(parameters('_artifactsLocation'), concat('scripts/config-linux.sh', parameters('_artifactsLocationSasToken')))]", "installscripturi": "[uri(parameters('_artifactsLocation'), concat('scripts/automated-installer', parameters('_artifactsLocationSasToken')))]", "virtualMachineSize": "[parameters('VMSize')]", "imageReference": { - "publisher": "Canonical", - "offer": "UbuntuServer", - "sku": "16.04.0-LTS", - "version": "latest" + "Ubuntu 16.04 LTS": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "16.04.0-LTS", + "version": "latest" + }, + "CentOS 7.5": { + "publisher": "OpenLogic", + "offer": "CentOS", + "sku": "7.5", + "version": "latest" + }, + "RHEL 7.6": { + "publisher": "RedHat", + "offer": "RHEL", + "sku": "7-RAW", + "version": "latest" + } }, "publicIpName": "[substring(concat(uniqueString(resourceGroup().id, deployment().name)), 0, 6)]", - "UbuntuExecute": "[concat('-u ''', parameters('adminUsername'), ''' -p ''', parameters('adminPassword'), ''' -h ''', parameters('tableau_admin_username'), ''' -i ''', parameters('tableau_admin_password'), ''' -j ''', parameters('registration_zip'), ''' -k ''', parameters('registration_country'), ''' -l ''', parameters('registration_city'), ''' -m ''', parameters('registration_last_name'), ''' -n ''', parameters('registration_industry'), ''' -o yes -q ''', parameters('registration_title'),''' -r ''', parameters('registration_phone'),''' -s ''', parameters('registration_company'), ''' -t ''', parameters('registration_state'), ''' -x ''', parameters('registration_email'), ''' -v ''', parameters('registration_department'), ''' -g ''', variables('installscripturi'), ''' -y ''', parameters('license_key'), ''' -w ''', parameters('registration_first_name'), '''')]", - "UbCmdWrapper": "[concat('sh ./config-linux.sh ', variables('UbuntuExecute'))]", + "LinuxExecute": "[concat('-u ''', parameters('adminUsername'), ''' -p ''', parameters('adminPassword'), ''' -h ''', parameters('tableau_admin_username'), ''' -i ''', parameters('tableau_admin_password'), ''' -j ''', parameters('registration_zip'), ''' -k ''', parameters('registration_country'), ''' -l ''', parameters('registration_city'), ''' -m ''', parameters('registration_last_name'), ''' -n ''', parameters('registration_industry'), ''' -o yes -q ''', parameters('registration_title'),''' -r ''', parameters('registration_phone'),''' -s ''', parameters('registration_company'), ''' -t ''', parameters('registration_state'), ''' -x ''', parameters('registration_email'), ''' -v ''', parameters('registration_department'), ''' -g ''', variables('installscripturi'), ''' -y ''', parameters('license_key'), ''' -f ''', parameters('OS'), ''' -w ''', parameters('registration_first_name'), '''')]", + "LiCmdWrapper": "[concat('sh ./config-linux.sh ', variables('LinuxExecute'))]", "LinuxsecurityRules": [ { "name": "ssh-rule", @@ -340,7 +361,7 @@ "adminPassword": "[parameters('adminPassword')]" }, "storageProfile": { - "imageReference": "[variables('imageReference')]", + "imageReference": "[variables('imageReference')[parameters('OS')]]", "osDisk": { "caching": "ReadWrite", "createOption": "FromImage" @@ -388,9 +409,9 @@ "timestamp": 123456789 }, "protectedSettings": { - "commandToExecute": "[variables('UbCmdWrapper')]", + "commandToExecute": "[variables('LiCmdWrapper')]", "fileUris": [ - "[variables('ubuntuscripturi')]" + "[variables('linuxscripturi')]" ] } } diff --git a/tableau-server-single-node/azuredeploy.parameters.json b/tableau-server-single-node/azuredeploy.parameters.json index 619faf8a15e2..a76a4aadb8ca 100644 --- a/tableau-server-single-node/azuredeploy.parameters.json +++ b/tableau-server-single-node/azuredeploy.parameters.json @@ -2,6 +2,9 @@ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", "contentVersion": "1.0.0.0", "parameters": { + "OS": { + "value": "RHEL 7.6" + }, "adminUsername": { "value": "GEN-UNIQUE" }, diff --git a/tableau-server-single-node/images/azure_single_node.png b/tableau-server-single-node/images/azure_single_node.png index 844059a809ec..f49531d7407a 100644 Binary files a/tableau-server-single-node/images/azure_single_node.png and b/tableau-server-single-node/images/azure_single_node.png differ diff --git a/tableau-server-single-node/metadata.json b/tableau-server-single-node/metadata.json index b0ffffa6e5e6..ba1447a56ce7 100644 --- a/tableau-server-single-node/metadata.json +++ b/tableau-server-single-node/metadata.json @@ -1,9 +1,9 @@ { "$schema": "https://aka.ms/azure-quickstart-templates-metadata-schema#", "itemDisplayName": "Tableau Server Linux Single Node", - "description": "This template deploys a new instance of Tableau Server on an Ubuntu machine on Azure along with all required infrastructure elements. Tableau is an industry-leading business intelligence platform. Tableau Server allows users to discover and share data-driven insights throughout their organization in a secure, governable environment. For more information please visit our webpage: 'https://www.tableau.com/.'", + "description": "This template deploys a new instance of Tableau Server on an Ubuntu, RHEL or CentOS machine on Azure along with all required infrastructure elements. Tableau is an industry-leading business intelligence platform. Tableau Server allows users to discover and share data-driven insights throughout their organization in a secure, governable environment. For more information please visit our webpage: 'https://www.tableau.com/.'", "summary": "This template deploys a new instance of Tableau Server on a single Azure compute node along with all required infrastructure elements. This template supports deployment on Ubuntu based machines.", "githubUsername": "maddyloo", - "dateUpdated": "2019-04-01", + "dateUpdated": "2019-07-30", "type": "QuickStart" } \ No newline at end of file diff --git a/tableau-server-single-node/scripts/config-linux.sh b/tableau-server-single-node/scripts/config-linux.sh index 8d2f79bf20bb..ddedcb275c87 100644 --- a/tableau-server-single-node/scripts/config-linux.sh +++ b/tableau-server-single-node/scripts/config-linux.sh @@ -4,12 +4,13 @@ # sh ./config-linux.sh -u -p -h admin -i admin -j 98107 -k usa -l seattle -m data -n tech -o yes -q pm -r 8888888 -s tableau -t wa -v dev -w jamie -x jdata@tableau.com [-y ] # customized to reflect machine admin username and admin password -while getopts u:p:g:h:i:j:k:l:m:n:o:q:r:s:t:v:w:x:y: option +while getopts u:p:f:g:h:i:j:k:l:m:n:o:q:r:s:t:v:w:x:y: option do case "${option}" in u) USER=${OPTARG};; p) PASSWORD=${OPTARG};; + f) OS=${OPTARG};; g) INSTALL_SCRIPT_URL=${OPTARG};; h) TS_USER=${OPTARG};; i) TS_PASS=${OPTARG};; @@ -33,7 +34,8 @@ done cd /tmp/ # create secrets -echo "tsm_admin_user=\"$USER\"\ntsm_admin_pass=\"$PASSWORD\"\ntableau_server_admin_user=\"$TS_USER\"\ntableau_server_admin_pass=\"$TS_PASS\"" >> secrets +printf "tsm_admin_user=\"$USER\"\ntsm_admin_pass=\"$PASSWORD\"\ntableau_server_admin_user=\"$TS_USER\"\ntableau_server_admin_pass=\"$TS_PASS\"" >> secrets +# echo "tsm_admin_user=\"$USER\"\ntsm_admin_pass=\"$PASSWORD\"\ntableau_server_admin_user=\"$TS_USER\"\ntableau_server_admin_pass=\"$TS_PASS\"" >> secrets # create registration file echo "{ @@ -45,7 +47,7 @@ echo "{ \"eula\" : \"$EULA\", \"title\" : \"$TITLE\", \"phone\" : \"$PHONE\", - \"company\" : \"$COMPANY\", + \"company\" : \"$COMPANY-azure-arm-linux\", \"state\" : \"$STATE\", \"department\" : \"$DEPARMENT\", \"first_name\" : \"$FIRST_NAME\", @@ -63,9 +65,14 @@ echo '{ }' >> config.json wait -# download tableau server .deb file +# download tableau server .deb or.rpm file # retry on fail -wget --tries=3 --output-document=tableau-installer.deb https://downloads.tableau.com/esdalt/2019.2.1/tableau-server-2019-2-1_amd64.deb +if [ "$OS" == "Ubuntu 16.04 LTS" ] +then + wget --tries=3 --output-document=tableau-installer.deb https://downloads.tableau.com/esdalt/2019.2.1/tableau-server-2019-2-1_amd64.deb +else + wget --tries=3 --output-document=tableau-installer.rpm https://downloads.tableau.com/esdalt/2019.2.1/tableau-server-2019-2-1.x86_64.rpm +fi if [ $? -ne 0 ] then @@ -87,16 +94,38 @@ wait # run automated installer (install trial if no license key) if [ -z "$LICENSE_KEY" ] then - sudo ./automated-installer.sh -s secrets -f config.json -r registration.json -a "$USER" --accepteula tableau-installer.deb --force + if [ "$OS" == "Ubuntu 16.04 LTS" ] + then + sudo ./automated-installer.sh -s secrets -f config.json -r registration.json -a "$USER" --accepteula tableau-installer.deb --force + else + sudo ./automated-installer.sh -s secrets -f config.json -r registration.json -a "$USER" --accepteula tableau-installer.rpm --force + fi else - sudo ./automated-installer.sh -s secrets -f config.json -r registration.json -a "$USER" -k "$LICENSE_KEY" --accepteula tableau-installer.deb --force + if [ "$OS" == "Ubuntu 16.04 LTS" ] + then + sudo ./automated-installer.sh -s secrets -f config.json -r registration.json -a "$USER" -k "$LICENSE_KEY" --accepteula tableau-installer.deb --force + else + sudo ./automated-installer.sh -s secrets -f config.json -r registration.json -a "$USER" -k "$LICENSE_KEY" --accepteula tableau-installer.rpm --force + fi fi wait +# if on RHEL, open firewall +if [ "$OS" == "RHEL 7.6" ] || [ "$OS" == "CentOS 7.5" ] +then + firewall-cmd --zone=public --add-port=80/tcp --permanent + firewall-cmd --reload +fi + # remove all install files rm registration.json rm secrets -rm tableau-installer.deb +if [ "$OS" == "RHEL 7.6" ] || [ "$OS" == "CentOS 7.5" ] +then + rm tableau-installer.rpm +else + rm tableau-installer.deb +fi rm automated-installer.sh rm config.json \ No newline at end of file