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

