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