From 99f137a6bcd18136035192710bf1d3b30c4b9e60 Mon Sep 17 00:00:00 2001 From: Madeleine Corneli Date: Fri, 26 Jul 2019 14:28:38 -0700 Subject: [PATCH 1/4] add RHEL support --- tableau-server-single-node/README.md | 6 +-- tableau-server-single-node/azuredeploy.json | 25 +++++++---- .../azuredeploy.parameters.json | 3 ++ tableau-server-single-node/metadata.json | 4 +- .../scripts/config-linux.sh | 45 +++++++++++++++---- 5 files changed, 61 insertions(+), 22 deletions(-) diff --git a/tableau-server-single-node/README.md b/tableau-server-single-node/README.md index b3189ddf9faf..cccdfae0b022 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 or RHEL** 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 or RHEL 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 or RHEL 7.8 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..24dae14b1494 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", "RHEL"], + "metadata": { + "description": "The operating system of the VM. Ubuntu 16 or Red Hat 7." + } + }, "VMSize": { "type": "string", "allowedValues": ["Standard_D16s_v3","Standard_E16s_v3","Standard_F16s_v2","Standard_D4s_v3"], @@ -159,18 +166,18 @@ "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" + "publisher": "[if(equals(parameters('OS'), 'RHEL'), 'RedHat', 'Canonical')]", + "offer": "[if(equals(parameters('OS'), 'RHEL'), 'RHEL', 'UbuntuServer')]", + "version": "latest", + "sku": "[if(equals(parameters('OS'), 'RHEL'), '7-RAW', '16.04.0-LTS')]" }, "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", @@ -388,9 +395,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..6bf9fbb94c64 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" + }, "adminUsername": { "value": "GEN-UNIQUE" }, diff --git a/tableau-server-single-node/metadata.json b/tableau-server-single-node/metadata.json index b0ffffa6e5e6..39839d7d9fd3 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 or RHEL 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-26", "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..29841247c8f7 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" == "RHEL" ] +then + wget --tries=3 --output-document=tableau-installer.rpm https://downloads.tableau.com/esdalt/2019.2.1/tableau-server-2019-2-1.x86_64.rpm +else + wget --tries=3 --output-document=tableau-installer.deb https://downloads.tableau.com/esdalt/2019.2.1/tableau-server-2019-2-1_amd64.deb +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" == "RHEL" ] + then + sudo ./automated-installer.sh -s secrets -f config.json -r registration.json -a "$USER" --accepteula tableau-installer.rpm --force + else + sudo ./automated-installer.sh -s secrets -f config.json -r registration.json -a "$USER" --accepteula tableau-installer.deb --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" == "RHEL" ] + then + sudo ./automated-installer.sh -s secrets -f config.json -r registration.json -a "$USER" -k "$LICENSE_KEY" --accepteula tableau-installer.rpm --force + else + sudo ./automated-installer.sh -s secrets -f config.json -r registration.json -a "$USER" -k "$LICENSE_KEY" --accepteula tableau-installer.deb --force + fi fi wait +# if on RHEL, open firewall +if [ "$OS" == "RHEL" ] +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" ] +then + rm tableau-installer.rpm +else + rm tableau-installer.deb +fi rm automated-installer.sh rm config.json \ No newline at end of file From 47e72149e2736bfc4866890c2b33f48ed3cd8f13 Mon Sep 17 00:00:00 2001 From: Madeleine Corneli Date: Tue, 30 Jul 2019 10:16:20 -0700 Subject: [PATCH 2/4] add centos --- tableau-server-single-node/README.md | 6 ++--- tableau-server-single-node/azuredeploy.json | 8 +++---- tableau-server-single-node/metadata.json | 4 ++-- .../scripts/config-linux.sh | 22 +++++++++---------- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/tableau-server-single-node/README.md b/tableau-server-single-node/README.md index cccdfae0b022..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 or RHEL** 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 or RHEL 7.8 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 24dae14b1494..b491f540bbe4 100644 --- a/tableau-server-single-node/azuredeploy.json +++ b/tableau-server-single-node/azuredeploy.json @@ -25,7 +25,7 @@ }, "OS": { "type": "string", - "allowedValues": ["Ubuntu", "RHEL"], + "allowedValues": ["Ubuntu", "RHEL", "CentOS"], "metadata": { "description": "The operating system of the VM. Ubuntu 16 or Red Hat 7." } @@ -170,10 +170,10 @@ "installscripturi": "[uri(parameters('_artifactsLocation'), concat('scripts/automated-installer', parameters('_artifactsLocationSasToken')))]", "virtualMachineSize": "[parameters('VMSize')]", "imageReference": { - "publisher": "[if(equals(parameters('OS'), 'RHEL'), 'RedHat', 'Canonical')]", - "offer": "[if(equals(parameters('OS'), 'RHEL'), 'RHEL', 'UbuntuServer')]", + "publisher": "[if(equals(parameters('OS'), 'RHEL'), 'RedHat', if(equals(parameters('OS'), 'Ubuntu'),'Canonical', 'OpenLogic'))]", + "offer": "[if(equals(parameters('OS'), 'RHEL'), 'RHEL', if(equals(parameters('OS'), 'Ubuntu'), 'UbuntuServer', 'CentOS'))]", "version": "latest", - "sku": "[if(equals(parameters('OS'), 'RHEL'), '7-RAW', '16.04.0-LTS')]" + "sku": "[if(equals(parameters('OS'), 'RHEL'), '7-RAW', if(equals(parameters('OS'), 'Ubuntu'), '16.04.0-LTS', '7.5'))]" }, "publicIpName": "[substring(concat(uniqueString(resourceGroup().id, deployment().name)), 0, 6)]", "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'), '''')]", diff --git a/tableau-server-single-node/metadata.json b/tableau-server-single-node/metadata.json index 39839d7d9fd3..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 or RHEL 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-07-26", + "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 29841247c8f7..5e5e721216a0 100644 --- a/tableau-server-single-node/scripts/config-linux.sh +++ b/tableau-server-single-node/scripts/config-linux.sh @@ -67,11 +67,11 @@ wait # download tableau server .deb or.rpm file # retry on fail -if [ "$OS" == "RHEL" ] +if [ "$OS" == "Ubuntu" ] then - wget --tries=3 --output-document=tableau-installer.rpm https://downloads.tableau.com/esdalt/2019.2.1/tableau-server-2019-2-1.x86_64.rpm -else 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 ] @@ -94,25 +94,25 @@ wait # run automated installer (install trial if no license key) if [ -z "$LICENSE_KEY" ] then - if [ "$OS" == "RHEL" ] + if [ "$OS" == "Ubuntu" ] then - sudo ./automated-installer.sh -s secrets -f config.json -r registration.json -a "$USER" --accepteula tableau-installer.rpm --force + 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.deb --force + sudo ./automated-installer.sh -s secrets -f config.json -r registration.json -a "$USER" --accepteula tableau-installer.rpm --force fi else - if [ "$OS" == "RHEL" ] + if [ "$OS" == "Ubuntu" ] then - sudo ./automated-installer.sh -s secrets -f config.json -r registration.json -a "$USER" -k "$LICENSE_KEY" --accepteula tableau-installer.rpm --force - else 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" ] +if [ "$OS" == "RHEL" ] || [ "$OS" == "CentOS" ] then firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --reload @@ -121,7 +121,7 @@ fi # remove all install files rm registration.json rm secrets -if [ "$OS" == "RHEL" ] +if [ "$OS" == "RHEL" ] || [ "$OS" == "CentOS" ] then rm tableau-installer.rpm else From a8e3a3ddb397b41c394686aa8bee36bcb41ed855 Mon Sep 17 00:00:00 2001 From: Madeleine Corneli Date: Fri, 2 Aug 2019 09:15:27 -0700 Subject: [PATCH 3/4] update image --- .../images/azure_single_node.png | Bin 34251 -> 33188 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tableau-server-single-node/images/azure_single_node.png b/tableau-server-single-node/images/azure_single_node.png index 844059a809ec93054c47733db41b4d2bcc9d0ebe..f49531d7407aff55d81b3eb2d7cb5f7c286cf850 100644 GIT binary patch literal 33188 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 literal 34251 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 Date: Mon, 12 Aug 2019 15:35:25 -0700 Subject: [PATCH 4/4] update imageref --- tableau-server-single-node/azuredeploy.json | 28 ++++++++++++++----- .../azuredeploy.parameters.json | 2 +- .../scripts/config-linux.sh | 10 +++---- 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/tableau-server-single-node/azuredeploy.json b/tableau-server-single-node/azuredeploy.json index b491f540bbe4..3ba25e26f8e5 100644 --- a/tableau-server-single-node/azuredeploy.json +++ b/tableau-server-single-node/azuredeploy.json @@ -25,9 +25,9 @@ }, "OS": { "type": "string", - "allowedValues": ["Ubuntu", "RHEL", "CentOS"], + "allowedValues": ["Ubuntu 16.04 LTS", "CentOS 7.5", "RHEL 7.6"], "metadata": { - "description": "The operating system of the VM. Ubuntu 16 or Red Hat 7." + "description": "The operating system of the VM." } }, "VMSize": { @@ -170,10 +170,24 @@ "installscripturi": "[uri(parameters('_artifactsLocation'), concat('scripts/automated-installer', parameters('_artifactsLocationSasToken')))]", "virtualMachineSize": "[parameters('VMSize')]", "imageReference": { - "publisher": "[if(equals(parameters('OS'), 'RHEL'), 'RedHat', if(equals(parameters('OS'), 'Ubuntu'),'Canonical', 'OpenLogic'))]", - "offer": "[if(equals(parameters('OS'), 'RHEL'), 'RHEL', if(equals(parameters('OS'), 'Ubuntu'), 'UbuntuServer', 'CentOS'))]", - "version": "latest", - "sku": "[if(equals(parameters('OS'), 'RHEL'), '7-RAW', if(equals(parameters('OS'), 'Ubuntu'), '16.04.0-LTS', '7.5'))]" + "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)]", "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'), '''')]", @@ -347,7 +361,7 @@ "adminPassword": "[parameters('adminPassword')]" }, "storageProfile": { - "imageReference": "[variables('imageReference')]", + "imageReference": "[variables('imageReference')[parameters('OS')]]", "osDisk": { "caching": "ReadWrite", "createOption": "FromImage" diff --git a/tableau-server-single-node/azuredeploy.parameters.json b/tableau-server-single-node/azuredeploy.parameters.json index 6bf9fbb94c64..a76a4aadb8ca 100644 --- a/tableau-server-single-node/azuredeploy.parameters.json +++ b/tableau-server-single-node/azuredeploy.parameters.json @@ -3,7 +3,7 @@ "contentVersion": "1.0.0.0", "parameters": { "OS": { - "value": "RHEL" + "value": "RHEL 7.6" }, "adminUsername": { "value": "GEN-UNIQUE" diff --git a/tableau-server-single-node/scripts/config-linux.sh b/tableau-server-single-node/scripts/config-linux.sh index 5e5e721216a0..ddedcb275c87 100644 --- a/tableau-server-single-node/scripts/config-linux.sh +++ b/tableau-server-single-node/scripts/config-linux.sh @@ -67,7 +67,7 @@ wait # download tableau server .deb or.rpm file # retry on fail -if [ "$OS" == "Ubuntu" ] +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 @@ -94,14 +94,14 @@ wait # run automated installer (install trial if no license key) if [ -z "$LICENSE_KEY" ] then - if [ "$OS" == "Ubuntu" ] + 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 - if [ "$OS" == "Ubuntu" ] + 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 @@ -112,7 +112,7 @@ fi wait # if on RHEL, open firewall -if [ "$OS" == "RHEL" ] || [ "$OS" == "CentOS" ] +if [ "$OS" == "RHEL 7.6" ] || [ "$OS" == "CentOS 7.5" ] then firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --reload @@ -121,7 +121,7 @@ fi # remove all install files rm registration.json rm secrets -if [ "$OS" == "RHEL" ] || [ "$OS" == "CentOS" ] +if [ "$OS" == "RHEL 7.6" ] || [ "$OS" == "CentOS 7.5" ] then rm tableau-installer.rpm else