#!/bin/bash echo $(date) " - Starting Script" set -e export SUDOUSER=$1 export PASSWORD="$2" export MASTER=$3 export MASTERPUBLICIPHOSTNAME=$4 export MASTERPUBLICIPADDRESS=$5 export INFRA=$6 export NODE=$7 export NODECOUNT=$8 export INFRACOUNT=$9 export MASTERCOUNT=${10} export ROUTING=${11} export REGISTRYSA=${12} export ACCOUNTKEY="${13}" export METRICS=${14} export LOGGING=${15} export TENANTID=${16} export SUBSCRIPTIONID=${17} export AADCLIENTID=${18} export AADCLIENTSECRET="${19}" export RESOURCEGROUP=${20} export LOCATION=${21} export COCKPIT=${22} export AZURE=${23} export STORAGEKIND=${24} export BASTION=$(hostname) # Determine if Commercial Azure or Azure Government CLOUD=$( curl -H Metadata:true "http://169.254.169.254/metadata/instance/compute/location?api-version=2017-04-02&format=text" | cut -c 1-2 ) export CLOUD=${CLOUD^^} export MASTERLOOP=$((MASTERCOUNT - 1)) export INFRALOOP=$((INFRACOUNT - 1)) export NODELOOP=$((NODECOUNT - 1)) echo "Configuring SSH ControlPath to use shorter path name" sed -i -e "s/^# control_path = %(directory)s\/%%h-%%r/control_path = %(directory)s\/%%h-%%r/" /etc/ansible/ansible.cfg sed -i -e "s/^#host_key_checking = False/host_key_checking = False/" /etc/ansible/ansible.cfg sed -i -e "s/^#pty=False/pty=False/" /etc/ansible/ansible.cfg # Create Ansible Playbooks for Post Installation tasks echo $(date) " - Create Ansible Playbooks for Post Installation tasks" # Run on all masters - Create Initial OpenShift User on all Masters # Filename: addocpuser.yaml # Run on only MASTER-0 - Make initial OpenShift User a Cluster Admin # Filename: assignclusteradminrights.yaml # Run on all nodes - Set Root password on all nodes # Filename: assignrootpassword.yaml # Run on MASTER-0 node - configure registry to use Azure Storage # Create docker registry config based on Commercial Azure or Azure Government if [[ $CLOUD == "US" ]] then DOCKERREGISTRYYAML=dockerregistrygov.yaml export CLOUDNAME="AzureUSGovernmentCloud" else DOCKERREGISTRYYAML=dockerregistrypublic.yaml export CLOUDNAME="AzurePublicCloud" fi # Cloning Ansible playbook repository (cd /home/$SUDOUSER && git clone https://github.com/Microsoft/openshift-container-platform-playbooks.git) # Run on MASTER-0 node - configure Storage Class # Filename: configurestorageclass.yaml # Create playbook to reboot master nodes # Filename: reboot-master.yaml # Create playbook to reboot infra and app nodes # Filename: reboot-nodes.yaml # Create Azure Cloud Provider configuration Playbook for Master Config # Filename: setup-azure-master.yaml # Create Azure Cloud Provider configuration Playbook for Node Config (Master Nodes) # Filename: setup-azure-node-master.yaml # Create Azure Cloud Provider configuration Playbook for Node Config (Non-Master Nodes) # Filename: setup-azure-node.yaml # Create Playbook to delete stuck Master nodes and set as not schedulable # Filename: deletestucknodes.yaml # Create Ansible Hosts File echo $(date) " - Create Ansible Hosts file" cat > /etc/ansible/hosts <> /etc/ansible/hosts done # Loop to add Infra Nodes for (( c=0; c<$INFRACOUNT; c++ )) do echo "$INFRA-$c openshift_node_labels=\"{'type': 'infra', 'zone': 'default', 'region': 'infra'}\" openshift_hostname=$INFRA-$c" >> /etc/ansible/hosts done # Loop to add Nodes for (( c=0; c<$NODECOUNT; c++ )) do echo "$NODE-$c openshift_node_labels=\"{'type': 'app', 'zone': 'default'}\" openshift_hostname=$NODE-$c" >> /etc/ansible/hosts done # Create new_nodes group cat >> /etc/ansible/hosts <