首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Openstack API -创建实例不接受user-data = <bash script>

Openstack API -创建实例不接受user-data = <bash script>
EN

Stack Overflow用户
提问于 2017-06-16 02:53:29
回答 1查看 633关注 0票数 1

我使用OpenstackSDK自动创建实例,并通过命令传递bash脚本作为用户数据。但是即使实例是板条箱的,脚本也不能执行。当我通过GUI手动执行此操作时,bash脚本对新创建的实例执行得很好。

代码语言:javascript
复制
#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。

代码片段:

代码语言:javascript
复制
 with open(USER_DATA,'r') as file:
        f = file.read()
        bytes_content = bytes(f,encoding='utf-8')
        init_script = base64.b64encode(bytes_content)

有没有人能对此给点建议?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2017-06-17 01:34:28

Python3处理字符串和二进制的方式不同。此外,要通过OpenstackSDKbash/cloud-config文件传递给--user_data,它必须经过base46编码。

代码片段:

代码语言:javascript
复制
with open(USER_DATA,'r') as file:
        f = encodeutils.safe_encode(file.read().encode('utf-8'))
        init_script = base64.b64encode(f).decode('utf-8')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44574910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档