Heat: Userdata empty or not executable: [Errno 8] Exec format error

Lors du déploiement d’une stack Heat, la création d’une instance se passe bien mais le script Userdata ne s’exécute pas, il se plante avec l’erreur « Userdata empty or not executable: [Errno 8] Exec format error » dans le fichier /var/log/cloud-init-output.log, diverses recherches parlent de « user_data_format: RAW » mais sans succès.

En fait cette erreur est liée à Heat qui ne gère que les Userdata avec un code ASCII inférieur à 128, donc les caractères non accentués.

      user_data:
        str_replace:
          template: |
            #!/bin/bash -v
            
            # Dans ce commentaire il n'y a pas d'accent
            echo db_rootpassword
          params:
            db_rootpassword: { get_param: db_root_password }


Provision began: 2018-03-22 14:42:47.189229
/var/lib/heat-cfntools/cfn-userdata

b'dtzQaopU1MT38YZ1njSfI4ttmyfBT2CJ\n'
b"#!/bin/bash -v\n\n# Dans ce commentaire il n'y a pas d'accent\n\necho dtzQaopU1MT38YZ1njSfI4ttmyfBT2CJ\n"

On arrive à reproduire l’erreur dans l’exemple ci-dessous en plaçant des accents dans les Userdata:

      user_data:
        str_replace:
          template: |
            #!/bin/bash -v
            # Dans ce commentaire il y a des accents et c'est très grââââve...
            echo db_rootpassword
          params:
            db_rootpassword: { get_param: db_root_password }


Provision began: 2018-03-22 14:54:34.898807
/var/lib/heat-cfntools/cfn-userdata

Userdata empty or not executable: [Errno 8] Exec format error

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.