J'ai développé un modèle Azure ARM pour déployer une machine Linux Ubuntu qui, une fois provisionnée, un script bash s'exécutera pour installer un logiciel particulier. Le logiciel implique le téléchargement de certains packages ainsi que la transmission d'un paramètre d'entrée de l'utilisateur afin de terminer la configuration. Le problème auquel je suis confronté est que l'extension de script semble fonctionner par intermittence. Je l'ai déployé avec succès une fois, et maintenant il échoue tout le temps. Voici l'erreur qu'il renvoie après quelques secondes d'exécution du script personnalisé:

    {
  "code": "DeploymentFailed",
  "message": "At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.",
  "details": [
    {
      "code": "Conflict",
      "message": "{\r\n  \"status\": \"Failed\",\r\n  \"error\": {\r\n    \"code\": \"ResourceDeploymentFailure\",\r\n    \"message\": \"The resource operation completed with terminal provisioning state 'Failed'.\",\r\n    \"details\": [\r\n      {\r\n        \"code\": \"VMExtensionProvisioningError\",\r\n        \"message\": \"VM has reported a failure when processing extension 'metaport-onboard'. Error message: \\\"Enable failed: failed to execute command: command terminated with exit status=1\\n[stdout]\\nReading package lists...\\nBuilding dependency tree...\\nReading state information...\\nsoftware-properties-common is already the newest version (0.96.24.32.14).\\nsoftware-properties-common set to manually installed.\\nThe following packages were automatically installed and are no longer required:\\n  grub-pc-bin linux-headers-4.15.0-121\\nUse 'sudo apt autoremove' to remove them.\\n0 upgraded, 0 newly installed, 0 to remove and 18 not upgraded.\\nReading package lists...\\nBuilding dependency tree...\\nReading state information...\\nSome packages could not be installed. This may mean that you have\\nrequested an impossible situation or if you are using the unstable\\ndistribution that some required packages have not yet been created\\nor been moved out of Incoming.\\nThe following information may help to resolve the situation:\\n\\nThe following packages have unmet dependencies:\\n python3-pip : Depends: python3-distutils but it is not installable\\n               Recommends: build-essential but it is not installable\\n               Recommends: python3-dev (>= 3.2) but it is not installable\\n               Recommends: python3-setuptools but it is not installable\\n               Recommends: python3-wheel but it is not installable\\n\\n[stderr]\\n+ sudo apt-get -qq -y update\\n+ sudo apt-get -q -y install software-properties-common\\n+ sudo apt-get -q -y install python3-pip\\nE: Unable to correct problems, you have held broken packages.\\nNo passwd entry for user 'mpadmin'\\n\\\"\\r\\n\\r\\nMore information on troubleshooting is available at https://aka.ms/VMExtensionCSELinuxTroubleshoot \"\r\n      }\r\n    ]\r\n  }\r\n}"
    }
  ]
}

Ci-dessous se trouve la partie du modèle où j'ai défini l'extension

    {
  "type": "Microsoft.Compute/virtualMachines",
  "name": "[variables('vmName')]",
  "apiVersion": "2019-12-01",
  "location": "[variables('location')]",
  "dependsOn": [
    "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]",
    "[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))]",
    "[resourceId('Microsoft.Network/natGateways', variables('natGatewayName'))]",
    "[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]"
  ],
  "properties": {
    "hardwareProfile": {
      "vmSize": "[parameters('virtualMachineSize')]"
    },
    "osProfile": {
      "computerName": "[variables('vmName')]",
      "adminUsername": "[parameters('adminUsername')]",
      "adminPassword": "[parameters('adminPasswordOrKey')]",
      "linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]"
    },
    "storageProfile": {
      "imageReference": {
        "publisher": "[variables('imagePublisher')]",
        "offer": "[variables('imageOffer')]",
        "sku": "[variables('imageSKU')]",
        "version": "[variables('imageVersion')]"
      },
      "osDisk": {
        "name": "[concat(variables('vmName'), '_OSDisk')]",
        "caching": "ReadWrite",
        "createOption": "FromImage",
        "managedDisk": {
          "storageAccountType": "[variables('storageAccountType')]"
        }
      }
    },
      "networkProfile": {
        "networkInterfaces": [
          {
            "id": "[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]"
          }
        ]
      }
    },
    "resources": [
          {
          "name": "metaport-onboard",
          "type": "extensions",
          "apiVersion": "2019-03-01",
          "location": "[resourceGroup().location]",
          "dependsOn": [
            "[resourceId('Microsoft.Compute/virtualMachines/', variables('vmName'))]",
            "[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]",
            "[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))]",
            "[resourceId('Microsoft.Network/natGateways', variables('natGatewayName'))]",
            "[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]"
          ],
          "properties": {
            "publisher": "Microsoft.Azure.Extensions",
            "type": "CustomScript",
            "typeHandlerVersion": "2.1",
            "autoUpgradeMinorVersion": true,
            "settings": {
              "fileUris": [
                "https://raw.githubusercontent.com/willguibr/azure/main/Latest/MetaPort-Standalone-NATGW-v1.0/install_metaport.sh"
                ]
              },
            "protectedSettings": {
              "commandToExecute": "[concat('sh install_metaport.sh ', parameters('metaTokenCode'))]"
              }
            }
          }
        ]
      }
    ]
  }

Le package de modèle complet est ici .

Quelqu'un a-t-il une idée sur la façon d'éviter ce problème ou de mettre en œuvre toute correction qui pourrait être nécessaire?

0
Security Geek IO 26 oct. 2020 à 02:15

2 réponses

Meilleure réponse

Eh bien, cela dit clairement: le script est sorti avec le code 1. cela signifie que le script lui-même échoue. vous devez donc vous connecter au vm et jeter un œil aux journaux d'extension dans c: \ windowsazure \ packages \ logs (ou quelque chose comme ça) et comprendre ce qui ne va pas et l'envelopper avec une logique try \ catch. également, envisagez de propager les erreurs vers la console afin de pouvoir les voir dans les journaux.

0
4c74356b41 26 oct. 2020 à 03:56

J'ai enfin compris ce qui se passait. L'installation du logiciel avait des dépendances qui n'étaient pas automatiquement installées, et cela provoquait l'échec et la fermeture du script entier avec l'état = 1. J'ai changé le script bash, ajouté manuellement les dépendances recommandées dans le cadre de l'installation, et redéployé le modèle et le booom. L'installation s'est bien déroulée. C'était le message d'erreur qui était généré chaque:

Building dependency tree...\\nReading state information...\\nSome packages could not be installed. **This may mean that you have\\nrequested an impossible situation or if you are using the unstable\\ndistribution that some required packages have not yet been created\\nor been moved out of Incoming.\\nThe following information may help to resolve the situation:\\n\\nThe following packages have unmet dependencies:\\n python3-pip : Depends: python3-distutils but it is not installable\\n Recommends: build-essential but it is not installable\\n Recommends: python3-dev (>= 3.2) but it is not installable\\n Recommends: python3-setuptools but it is not installable\\n Recommends: python3-wheel** but it is not installable\\n\\n[stderr]\\n+ sudo apt-get -qq -y update\\n+ sudo apt-get -q -y install software-properties-common\\n+ sudo apt-get -q -y install python3-pip\\nE: Unable to correct problems, you have held broken packages
0
Security Geek IO 26 oct. 2020 à 20:24