diff --git a/registry/DeploymentTemplates/azuredeploy.json b/registry/DeploymentTemplates/azuredeploy.json index cfdd2dd..9b7f299 100644 --- a/registry/DeploymentTemplates/azuredeploy.json +++ b/registry/DeploymentTemplates/azuredeploy.json @@ -147,7 +147,7 @@ "osProfile": { "computerName": "[concat(variables('rgname'),'-vm')]", "adminUsername": "[parameters('adminUsername')]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n- path: \"/opt/azure/registry/script.sh\"\n permissions: \"0744\"\n encoding: gzip\n owner: \"root\"\n content: !!binary |\n H4sIAAAAAAAA/+w6bVPbSJPf9Ss6elQBUiXJhpCtc1bZE1ghLozts0SyOZZTDdLYVpA0YmYEYY3/+9WMXv3CZrObur0PT1Jl5J7unn7vnpH/9cK8iVLzBrEF6F8VxZlOfXvi+YOR69nDoe8NLpzxpWf9BzT//gVelGCSc4hSxlEcR+kcKL7LI4pDQBmHDAW3aI6ZZHcxcN3B6Mw/nXr++8HQsbodgDV2JyiEAFMOfJEnNxmNUg7jKWSzr5ASsQvc4ke4R3ks4RwnWYw4hiRiAUln0TwXG3+8AIYDijkTf3lE0rXtz53P5fbd/8vtp87ZwPWmn/3R2POnl6PRYHRmdY/axlxgCEjKUZRiChTPI8bpI8xQFOMQOAHGEeXA8iDAjM3yOH4sFBuffJa+Gg5cr3bU4fG2mx5QxIWPZoRCQm4epY8YyWlQucj1zyaFifrjT6Ph2O43DN88x+rChbPJmTROSB7SmKCwEWwzgA5/2hE/W4KVAVWwcTy7b3u2dbQeLw0bh1JC4S7H9FFwSTBHIeKoUmkyHff9vnOyrdPrw2eEWHCesZ5pVgFsJFFACSMzbgQkMQt3m/lNnvLc7L4xOq9rVL1G1TNKQiPEN1uCTM7PfLvf99/bg6H1+qhU433taRSGQHFGILudwyyKcZ2Pl5O+7TlNOu7Ox7YqKOP6HHPIs1AEKycQkCSLMceKQjGnj0ES+tHMF3GWU7x/AEtFcBNrEWaW1n0r+fksxjiztMO3wIttLO3oLUhctohmHF6+3HiQa0KGSCSPts/wHXRBKzkfvIWQKJXwJU/Q6oflf64EpxuK0S08PcFvNW40gyvQItDxXc0Nrt8CX+BUaYcGxTynKXRrII4ZXsOQSoHWKFivziL5GJIUKytFIswI9VHG/ZgEt6w21MMiijHMcoYpmPeImnF0Y4bZ7dwUeA0IZdyMI8ZZCx6gYIHlCqLBIrrH5eI7M8T3ZprHMRy+e9ldsxQOFgT2PrVcTHGMEcNAZjKjpXh7yrqKR21thBJzzP0iJrZc3u3IrwKrwPBJzrOcWyZPMrMMKL1YMkj+XX7eNmS9JGwGul7XUtBRvVZFsT4DvSkP1eoL2N8Ic2E1eAKOMWhbesATzCnOQHdA/Z/9q0/Odc94dfC0f4Wda0qNVweaeiBCr4m4APFdfHaH527kHxS9pTuPd8bpMwZuHF4a7p9K8r/p/FJ60An0s9t5rzfORH9lvZ6l6vqM0ABLBiQOVdD1lOglhU5xQJIEpyET4fNPl5YquZoU/D5vllr1cdZUocuTy5F36U+doWO7jqXtx+zGrwqDTkFnBxJPNuWPztQdjEeWemR0jDeqUsfCRjOA7mEHjuHwGIKcxt/XFbXlukgrU7ZDUQHhHchKstEp5dLTE+CvEQft2dHmeWE7AMfiM8ie529iHsiCW849EmqE5t/a+HusdIsfWSOZgVggylEmgj/EiCaEbpnHEMvr8j0/qP0F80j+tWE4zRnHoQBu2+Ub+65H9Trt9vgiSdboqgw/7MBRR9oVZaJFHuo5j2Imh0Mdp/MoxZa2bMfyqlgL4mhrQddRHJMHXQync4pCzHY4e2NOlVKJlp6QEHR0BiEJbjEFbWn3LwYj/9J1pv7IvnBWjRLltOWXjhflUAbEl7tWEYxm8GJLXaErvOl0irZR0m8UnS8kpymKAx4XpS1Dc0xBz9dommq0ZvZdym1OODPMg8XYzvmirinOqD8ZD0aea2n7ya047xQ1RGqlM9B1GWdwXD3pIY7Ro4gxXU/QV130EHjTEV27KbFVfiQoRXOc4JQb2vL9f/VHK7Oa3E2chhmJUs5+QVmk32PKIpJah53usd7p6p0uvANtWYu3KgpYUbt/AT3F0Nkq2i1/lwcKpWUE+TG2L70Plrb/5U5UTAPlggGPAiS6jBGTeZQ6pWBr2xdWkXOZtpRMVvWIgUE1UThjmrohJL7bIaQ3PndG/uV0aKkVJ0FsEiHLocnJLU5VZavd7CDTlp4zskeeP+ivdpDPosrlpxSHQksUN81k6rjjy+mp86wtUB5GOA0wu+pcr5kCnoDhEFT2tMPNNUyeoY0n9aCwiRTf0vb/Slzpv8Jk7Hqt+NI/gHpKUo5TrnuPGe4ByrK4lNz8qj88PIhZIdFzGuM0ICEO1TZ5COqcopT7/DHDVhBHOOV+0FhpE7nEiEJLW7qTkX86HDiF3dcwdRHYzZ41XXFZsE7rOqdTx/sGPcVFC7O0ZeWvNQptWYeFcEvhyD0DyesDX8bCXumA849F8FT+0ZbnH4vqZhSuqhK0vNkoYqiQ0v2LjmsEVeV2QszNbH+jdzt6p6tKn4rSRGj0u/RjD04worIgSy1Xaq2icY/iHF9dG1FYqkcTMBY8Q4w9hBLASR4sNmCiehfqyTl2WWq3Kmsk1OIWC9I8zSClLQta09RKXdRdBJa2X5aJHVyEl4Kci6DaM/eEjQ4PNpl8tIeXzt+2eGn1QuQfafWDVpUvbAv6yU1j6XXFV81Xqddqqx+5nFA0x+f48UcUp3+Xm/8f5ca118vNjklAW7q2X+0je5iY00UcbEbrT2W0VpzPnc8/zLeqFENm859KhnYsDHE654sedJocUQ0x/F91rotkUQ+UlaLIejAcn9reYDzqNfmpLSvgqsCp+3mvhdM0+QJpYzrtSaStkVWirhu4V/DbsHqNeToeefZg5Ex71c5tYIl3/nEHx3VgiXnqTD3f+3B5cTKZDkZeIeYGsESdDCa+iIk101TAFs7QPnGGvQ0cCSyR6ht4zz6rtWgDN/GmzmQ4OLXdXhuvAlamaWdgrzLNWlpuIRbp1oNXr14pimtvNoZ1D9SDJFmIYXLv6qqH4jRPetfXr7S9A6Vs1A39hr2/Ra84v3p+f3xhD0YFI7WxrmlqtRENrQpHI4hJHqIsM1aqItCsVqga2nKD4UpR6jc+6raTjYByValfyuzCyOi9qhRGs7R9kuGUsRgoSkPQbxDDb17D0eGBosjRWp+VN65kbtwvQhP9nlNszkkc4lSPEjTH1aWQUd2Dr03h0opqgQ8S/y2w2yjLonQOIc5wGuI0iDCrbqNkLVCrOUOnMzAXJMHy+I9p0dFwLG+HW6A5JXkW4riC1eN8625HmUVlebhHcRQivilCofELobNaXzM/IDTHKTe1ZWX2lbquYXMQ2ngjJzf8Y56Vo77Js0JslEBhKBQIMOUMOBHEECCdcUKxEmQ7tjvFlEcz0UoxMzKcqKCaORO+DVBssgWi2AyQHrTQTPQ7a5EV0VXcRugbqKVYAcke5Um/fPdHICF5ykEe8xTXG08dS5WXI4zFppTerF7OqUpyG0YU9Aw0iblbjzVXiJ4iUFdr4OcIW/ZuEzbgUos55jI8mlYK9Rm6dbQvsSVAoLNivoJb/Lg1cG3iFjZqBhPlgzexXfdT3+8PppZqUkK4KUaxtlXaOFvnTaF0azRs45rNcF6IIV9+Fi+Yyxej9btSJUAcfv7ZGb+Hd+/KixpdJDdh2HhMYqWcFnqwd7SnMEzvowCzngI1r16ReiLbew1wszsUqZzFpMQHSEgoCYp5D4cluASwZxpHhSRV8jMSR0HNEYRaYVTMFyTVy8u75ppcTC89OC4uzjNCOatIdVBfvz7qHXc6naIc3ZM4T3BrfT2KextfKWkQa1/25GeR4+l9REkqYqthWas3HJ/59ump47riqT9w7ZOh07dmqLmnaGGLQLbPHEtW52eXffu/L6eOYDu+HHlFm1uWDXP1J6nkOLgs5sJv0tQDjbU533yDcOrYwwurHF63keW90tppc2vZr6N/YnsfLGl20/izNMX+6rTKjSlGcaJuU33wvIlv9/tTq2PI/zJcnsGrWm55Rtuhl0Tzhq4cup+pke1q9QccRNcfvB+c2p7zB5zqgqk44/eKUl7KsgdEE4jSiNcQjoLbMlmbiqEHu6qDUr4g7SgsD0l10cseGccJZDRPMehI9MOXG92YiG5W/2CDccRzppwO+pa2XzLJWDV+qZUQfvVgdH8zxNFggVEoJOseHiiuZ3uXbkMfpSzDARezcTHKfbkD1RAHCJeL7ubKPQWXr4jO2YFs3qJ7awUnsCxQaZ6mUTpX4brs2LDRsnf9NEW07f8NAAD//xfj+EMUJAAA'))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n- path: \"/opt/azure/registry/script.sh\"\n permissions: \"0744\"\n encoding: gzip\n owner: \"root\"\n content: !!binary |\n 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'))]", "linuxConfiguration": { "disablePasswordAuthentication": true, "ssh": { diff --git a/registry/Scripts/pre-reqs.ps1 b/registry/Scripts/pre-reqs.ps1 index 4eb48f1..7897114 100644 --- a/registry/Scripts/pre-reqs.ps1 +++ b/registry/Scripts/pre-reqs.ps1 @@ -7,6 +7,8 @@ $pfxSecret = "" $pfxPath = "" $pfxPass = "" $spnName = "" +$userName = "" +$userPass = "" # RESOURCE GROUP @@ -68,6 +70,6 @@ $tp = Get-PfxCertificate -FilePath $pfxPath Write-Host "=> Certificate URL:" $kvSecret.Id Write-Host "=> Certificate thumbprint:" $tp.Thumbprint -# Write-Host "Storing secret for sample user: admin" -# $userSecret = ConvertTo-SecureString -String "admin" -AsPlainText -Force -# Set-AzureKeyVaultSecret -VaultName $kvName -Name "admin" -SecretValue $userSecret | out-null +Write-Host "Storing secret for sample user: $userName" +$userSecret = ConvertTo-SecureString -String $userPass -AsPlainText -Force +Set-AzureKeyVaultSecret -VaultName $kvName -Name $userName -SecretValue $userSecret -ContentType "user credentials" | out-null diff --git a/registry/Scripts/script.sh b/registry/Scripts/script.sh index 178ac04..6a9bebc 100644 --- a/registry/Scripts/script.sh +++ b/registry/Scripts/script.sh @@ -3,6 +3,7 @@ ERR_APT_INSTALL_TIMEOUT=9 # Timeout installing required apt packages ERR_MISSING_CRT_FILE=10 # Bad cert thumbprint OR pfx not in key vault OR template misconfigured VM secrets section ERR_MISSING_KEY_FILE=11 # Bad cert thumbprint OR pfx not in key vault OR template misconfigured VM secrets section +ERR_MISSING_USER_CREDENTIALS=12 # No user credentials secret found on given key vault ERR_REGISTRY_NOT_RUNNING=13 # The container registry failed to start successfully ERR_MOBY_APT_LIST_TIMEOUT=25 # Timeout waiting for moby apt sources ERR_MS_GPG_KEY_DOWNLOAD_TIMEOUT=26 # Timeout waiting for MS GPG key download @@ -126,6 +127,11 @@ fetchCredentials() { "${secret}?api-version=2016-10-01" -H "Authorization: Bearer ${TOKEN}" | jq -r .value) htpasswd -Bb .htpasswd ${SECRET_NAME} ${SECRET_VALUE} done + + if [ ! -s .htpasswd ]; then + echo ".htpasswd file is empty." + return $ERR_MISSING_USER_CREDENTIALS + fi } fetchStorageKeys() { RESOURCE=$(jq -r .authentication.audiences[0] ${ENDPOINTS}) @@ -205,6 +211,11 @@ echo fetching user credentials HTPASSWD_DIR="/root/auth" mkdir -p $HTPASSWD_DIR fetchCredentials +returnCode=$? +if [[ $returnCode != 0 ]]; then + exit $returnCode +fi + cp .htpasswd $HTPASSWD_DIR/.htpasswd echo starting registry container diff --git a/registry/manifest.json b/registry/manifest.json index e265fa8..4156c0c 100644 --- a/registry/manifest.json +++ b/registry/manifest.json @@ -2,7 +2,7 @@ "$schema": "https://gallery.azure.com/schemas/2015-10-01/manifest.json#", "name": "AzureStackDockerContainerRegistry", "publisher": "Microsoft", - "version": "0.1.3", + "version": "0.1.4", "displayName": "ms-resource:displayName", "publisherDisplayName": "ms-resource:publisherDisplayName", "publisherLegalName": "ms-resource:publisherDisplayName",