pkg/providers/imagefamily/bootstrap/cse_cmd.sh.gtpl (148 lines of code) (raw):
#!/bin/bash
set -o allexport # export all variables to subshells
echo '#EOF' >> /opt/azure/manifest.json # wait_for_file looks for this
mkdir -p /var/log/azure/Microsoft.Azure.Extensions.CustomScript/events # expected, but not created w/o CSE
echo $(date),$(hostname) > /var/log/azure/cluster-provision-cse-output.log;
for i in $(seq 1 1200); do
grep -Fq "EOF" /opt/azure/containers/provision.sh && break;
if [ $i -eq 1200 ]; then exit 100; else sleep 1; fi;
done;
{{if .IsAKSCustomCloud}}
for i in $(seq 1 1200); do
grep -Fq "EOF" {{.InitAKSCustomCloudFilepath}} && break;
if [ $i -eq 1200 ]; then exit 100; else sleep 1; fi;
done;
REPO_DEPOT_ENDPOINT="{{.AKSCustomCloudRepoDepotEndpoint}}"
{{.InitAKSCustomCloudFilepath}} >> /var/log/azure/cluster-provision.log 2>&1;
{{end}}
ADMINUSER={{.AdminUsername}}
MOBY_VERSION={{.MobyVersion}}
TENANT_ID={{.TenantID}}
KUBERNETES_VERSION={{.KubernetesVersion}}
HYPERKUBE_URL={{.HyperkubeURL}}
KUBE_BINARY_URL={{.KubeBinaryURL}}
CUSTOM_KUBE_BINARY_URL={{.CustomKubeBinaryURL}}
CREDENTIAL_PROVIDER_DOWNLOAD_URL={{.CredentialProviderDownloadURL}}
KUBEPROXY_URL={{.KubeproxyURL}}
APISERVER_PUBLIC_KEY={{.APIServerPublicKey}}
SUBSCRIPTION_ID={{.SubscriptionID}}
RESOURCE_GROUP={{.ResourceGroup}}
LOCATION={{.Location}}
VM_TYPE={{.VMType}}
SUBNET={{.Subnet}}
NETWORK_SECURITY_GROUP={{.NetworkSecurityGroup}}
VIRTUAL_NETWORK={{.VirtualNetwork}}
VIRTUAL_NETWORK_RESOURCE_GROUP={{.VirtualNetworkResourceGroup}}
ROUTE_TABLE={{.RouteTable}}
PRIMARY_AVAILABILITY_SET={{.PrimaryAvailabilitySet}}
PRIMARY_SCALE_SET={{.PrimaryScaleSet}}
SERVICE_PRINCIPAL_CLIENT_ID={{.ServicePrincipalClientID}}
NETWORK_PLUGIN={{.NetworkPlugin}}
NETWORK_POLICY="{{.NetworkPolicy}}"
VNET_CNI_PLUGINS_URL={{.VNETCNILinuxPluginsURL}}
CNI_PLUGINS_URL={{.CNIPluginsURL}}
CLOUDPROVIDER_BACKOFF={{.CloudProviderBackoff}}
CLOUDPROVIDER_BACKOFF_MODE={{.CloudProviderBackoffMode}}
CLOUDPROVIDER_BACKOFF_RETRIES={{.CloudProviderBackoffRetries}}
CLOUDPROVIDER_BACKOFF_EXPONENT={{.CloudProviderBackoffExponent}}
CLOUDPROVIDER_BACKOFF_DURATION={{.CloudProviderBackoffDuration}}
CLOUDPROVIDER_BACKOFF_JITTER={{.CloudProviderBackoffJitter}}
CLOUDPROVIDER_RATELIMIT={{.CloudProviderRatelimit}}
CLOUDPROVIDER_RATELIMIT_QPS={{.CloudProviderRatelimitQPS}}
CLOUDPROVIDER_RATELIMIT_QPS_WRITE={{.CloudProviderRatelimitQPSWrite}}
CLOUDPROVIDER_RATELIMIT_BUCKET={{.CloudProviderRatelimitBucket}}
CLOUDPROVIDER_RATELIMIT_BUCKET_WRITE={{.CloudProviderRatelimitBucketWrite}}
LOAD_BALANCER_DISABLE_OUTBOUND_SNAT={{.LoadBalancerDisableOutboundSNAT}}
USE_MANAGED_IDENTITY_EXTENSION={{.UseManagedIdentityExtension}}
USE_INSTANCE_METADATA={{.UseInstanceMetadata}}
LOAD_BALANCER_SKU={{.LoadBalancerSKU}}
EXCLUDE_MASTER_FROM_STANDARD_LB={{.ExcludeMasterFromStandardLB}}
MAXIMUM_LOADBALANCER_RULE_COUNT={{.MaximumLoadbalancerRuleCount}}
CONTAINER_RUNTIME={{.ContainerRuntime}}
CLI_TOOL={{.CLITool}}
CONTAINERD_DOWNLOAD_URL_BASE={{.ContainerdDownloadURLBase}}
NETWORK_MODE={{.NetworkMode}}
KUBE_BINARY_URL={{.KubeBinaryURL}}
USER_ASSIGNED_IDENTITY_ID={{.UserAssignedIdentityID}}
API_SERVER_NAME={{.APIServerName}}
IS_VHD={{.IsVHD}}
GPU_NODE={{.GPUNode}}
SGX_NODE={{.SGXNode}}
MIG_NODE={{.MIGNode}}
CONFIG_GPU_DRIVER_IF_NEEDED={{.ConfigGPUDriverIfNeeded}}
ENABLE_GPU_DEVICE_PLUGIN_IF_NEEDED={{.EnableGPUDevicePluginIfNeeded}}
TELEPORTD_PLUGIN_DOWNLOAD_URL={{.TeleportdPluginDownloadURL}}
CONTAINERD_VERSION={{.ContainerdVersion}}
CONTAINERD_PACKAGE_URL={{.ContainerdPackageURL}}
RUNC_VERSION={{.RuncVersion}}
RUNC_PACKAGE_URL={{.RuncPackageURL}}
ENABLE_HOSTS_CONFIG_AGENT="{{.EnableHostsConfigAgent}}"
DISABLE_SSH="{{.DisableSSH}}"
NEEDS_CONTAINERD="{{.NeedsContainerd}}"
TELEPORT_ENABLED="{{.TeleportEnabled}}"
SHOULD_CONFIGURE_HTTP_PROXY="{{.ShouldConfigureHTTPProxy}}"
SHOULD_CONFIGURE_HTTP_PROXY_CA="{{.ShouldConfigureHTTPProxyCA}}"
HTTP_PROXY_TRUSTED_CA="{{.HTTPProxyTrustedCA}}"
SHOULD_CONFIGURE_CUSTOM_CA_TRUST="{{.ShouldConfigureCustomCATrust}}"
CUSTOM_CA_TRUST_COUNT="{{len .CustomCATrustConfigCerts}}"
{{range $i, $cert := .CustomCATrustConfigCerts}}
CUSTOM_CA_CERT_{{$i}}="{{$cert}}"
{{end}}
IS_KRUSTLET="{{.IsKrustlet}}"
GPU_NEEDS_FABRIC_MANAGER="{{.GPUNeedsFabricManager}}"
NEEDS_DOCKER_LOGIN="{{.NeedsDockerLogin}}"
IPV6_DUAL_STACK_ENABLED="{{.IPv6DualStackEnabled}}"
OUTBOUND_COMMAND="{{.OutboundCommand}}"
ENABLE_UNATTENDED_UPGRADES="{{.EnableUnattendedUpgrades}}"
ENSURE_NO_DUPE_PROMISCUOUS_BRIDGE="{{.EnsureNoDupePromiscuousBridge}}"
SHOULD_CONFIG_SWAP_FILE="{{.ShouldConfigSwapFile}}"
SHOULD_CONFIG_TRANSPARENT_HUGE_PAGE="{{.ShouldConfigTransparentHugePage}}"
TARGET_CLOUD="{{.TargetCloud}}"
TARGET_ENVIRONMENT="{{.TargetEnvironment}}"
CUSTOM_ENV_JSON="{{.CustomEnvJSON}}"
IS_CUSTOM_CLOUD="{{.IsCustomCloud}}"
CSE_HELPERS_FILEPATH="{{.CSEHelpersFilepath}}"
CSE_DISTRO_HELPERS_FILEPATH="{{.CSEDistroHelpersFilepath}}"
CSE_INSTALL_FILEPATH="{{.CSEInstallFilepath}}"
CSE_DISTRO_INSTALL_FILEPATH="{{.CSEDistroInstallFilepath}}"
CSE_CONFIG_FILEPATH="{{.CSEConfigFilepath}}"
AZURE_PRIVATE_REGISTRY_SERVER="{{.AzurePrivateRegistryServer}}"
HAS_CUSTOM_SEARCH_DOMAIN="{{.HasCustomSearchDomain}}"
CUSTOM_SEARCH_DOMAIN_FILEPATH="{{.CustomSearchDomainFilepath}}"
HTTP_PROXY_URLS="{{.HTTPProxyURLs}}"
HTTPS_PROXY_URLS="{{.HTTPSProxyURLs}}"
NO_PROXY_URLS="{{.NoProxyURLs}}"
ENABLE_TLS_BOOTSTRAPPING="{{.TLSBootstrappingEnabled}}"
ENABLE_SECURE_TLS_BOOTSTRAPPING="{{.SecureTLSBootstrappingEnabled}}"
DHCPV6_SERVICE_FILEPATH="{{.DHCPv6ServiceFilepath}}"
DHCPV6_CONFIG_FILEPATH="{{.DHCPv6ConfigFilepath}}"
THP_ENABLED="{{.THPEnabled}}"
THP_DEFRAG="{{.THPDefrag}}"
SERVICE_PRINCIPAL_FILE_CONTENT="{{.ServicePrincipalFileContent}}"
KUBELET_CLIENT_CONTENT="{{.KubeletClientContent}}"
KUBELET_CLIENT_CERT_CONTENT="{{.KubeletClientCertContent}}"
KUBELET_CONFIG_FILE_ENABLED="{{.KubeletConfigFileEnabled}}"
KUBELET_CONFIG_FILE_CONTENT="{{.KubeletConfigFileContent}}"
SWAP_FILE_SIZE_MB="{{.SwapFileSizeMB}}"
GPU_IMAGE_SHA="{{.GPUImageSHA}}"
GPU_DRIVER_VERSION="{{.GPUDriverVersion}}"
GPU_DRIVER_TYPE="{{.GPUDriverType}}"
GPU_INSTANCE_PROFILE="{{.GPUInstanceProfile}}"
CUSTOM_SEARCH_DOMAIN_NAME="{{.CustomSearchDomainName}}"
CUSTOM_SEARCH_REALM_USER="{{.CustomSearchRealmUser}}"
CUSTOM_SEARCH_REALM_PASSWORD="{{.CustomSearchRealmPassword}}"
MESSAGE_OF_THE_DAY="{{.MessageOfTheDay}}"
HAS_KUBELET_DISK_TYPE="{{.HasKubeletDiskType}}"
NEEDS_CGROUPV2="{{.NeedsCgroupV2}}"
SYSCTL_CONTENT="{{.SysctlContent}}"
TLS_BOOTSTRAP_TOKEN="{{.TLSBootstrapToken}}"
KUBELET_FLAGS="{{.KubeletFlags}}"
KUBELET_NODE_LABELS="{{.KubeletNodeLabels}}"
AZURE_ENVIRONMENT_FILEPATH="{{.AzureEnvironmentFilepath}}"
KUBE_CA_CRT="{{.KubeCACrt}}"
CONTAINERD_CONFIG_CONTENT="{{.ContainerdConfigContent}}"
IS_KATA="{{.IsKata}}"
MCR_REPOSITORY_BASE="mcr.microsoft.com"
ENABLE_IMDS_RESTRICTION=false
INSERT_IMDS_RESTRICTION_RULE_TO_MANGLE_TABLE=false
/usr/bin/nohup /bin/bash -c "/bin/bash /opt/azure/containers/provision_start.sh"