我正在使用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 文件,但仍然失败 不可序列化 JSON。
代码片段:
with open(USER_DATA,'r') as file:
f = file.read()
bytes_content = bytes(f,encoding='utf-8')
init_script = base64.b64encode(bytes_content)
请问谁能就此提供建议?
谢谢
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')