J'automatise la création d'instance en utilisant OpenstackSDK et en passant le script bash avec les commandes en tant que données utilisateur. Mais le script ne s'exécute pas même si l'instance est créée. Lorsque je le fais manuellement via une interface graphique, les scripts bash s'exécutent correctement sur l'instance nouvellement créée.API Openstack - La création d'instances n'accepte pas les données utilisateur = <bash script>
#Reading bash script
with open('elk.sh', 'r') as f:
init_script = f.read()
server = conn.compute.create_server(
name=name,
image_id=IMAGE_ID,
flavor_id=FLAVOUR_ID,
networks=[{"uuid": NETWORK_ID}],
user_data=init_script, # pass script to the instance
key_name=KEY_PAIR
)
Note: Aussi essayé de coder comme fichier Base64 butstill a échoué avec n'est pas JSON sérialisable.
Extrait de code:
with open(USER_DATA,'r') as file:
f = file.read()
bytes_content = bytes(f,encoding='utf-8')
init_script = base64.b64encode(bytes_content)
Can à quiconque des conseils à ce sujet, s'il vous plaît?
Merci
Trouvé la solution après R & D avec ouverte (USER_DATA, 'r') en tant que fichier: f = encodeutils.safe_encode (file.read(). encoder ('utf-8')) init_script = base64.b64encode (f) .decode ('utf-8') –