Openstack API-创建实例不接受用户数据=<;bash脚本>;

Openstack API-创建实例不接受用户数据=<;bash脚本>;,openstack,openstack-nova,openstack-api,Openstack,Openstack Nova,Openstack Api,我正在使用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_

我正在使用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)
with open(USER_DATA,'r') as file:
        f = encodeutils.safe_encode(file.read().encode('utf-8'))
        init_script = base64.b64encode(f).decode('utf-8')
有人能给我一些建议吗


谢谢,Python3以不同的方式处理字符串和二进制文件。此外,要通过
OpenstackSDK
bash/cloud config
文件传递给
--用户数据
,必须对其进行base46编码

代码段:

 with open(USER_DATA,'r') as file:
        f = file.read()
        bytes_content = bytes(f,encoding='utf-8')
        init_script = base64.b64encode(bytes_content)
with open(USER_DATA,'r') as file:
        f = encodeutils.safe_encode(file.read().encode('utf-8'))
        init_script = base64.b64encode(f).decode('utf-8')

在研发后发现了解决方案,其中open(USER_DATA,'R')作为文件:f=encodeutils.safe_encode(file.read().encode('utf-8'))init_script=base64.b64encode(f).decode('utf-8'))