我使用OpenstackSDK自动创建实例,并通过命令传递bash脚本作为用户数据。但是即使实例是板条箱的,脚本也不能执行。当我通过GUI手动执行此操作时,bash脚本对新创建的实例执行得很好。
#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
) 注意:我也尝试过编码成Base64文件,但还是失败了,因为is not JSON serializable。
代码片段:
with open(USER_DATA,'r') as file:
f = file.read()
bytes_content = bytes(f,encoding='utf-8')
init_script = base64.b64encode(bytes_content)有没有人能对此给点建议?
谢谢
发布于 2017-06-17 01:34:28
Python3处理字符串和二进制的方式不同。此外,要通过OpenstackSDK将bash/cloud-config文件传递给--user_data,它必须经过base46编码。
代码片段:
with open(USER_DATA,'r') as file:
f = encodeutils.safe_encode(file.read().encode('utf-8'))
init_script = base64.b64encode(f).decode('utf-8')https://stackoverflow.com/questions/44574910
复制相似问题