openstack 管理 四十五 vm user-data 参考

本文介绍了如何在 openstack 的 VM 中利用 cloud-init 执行自定义脚本来修改 SSH 服务器设置、添加用户、设置固定 IP,并强调了网络 MTU 的重要性。此外,还提到了关闭 selinux 和使用 user-data.txt 脚本启动 VM 的方法。

目的

VM 安装了 clound-init 后用于执行一些自定义脚本
脚本主要用于修改默认 ssh 服务器设定(默认只允许 KEY 登录)
添加用户
修改为固定 IP 地址

说明

假如不设定网络 MTU = 1450 则会无法 SSH 连接到服务器, 并出现下面信息

ssh -vvv  xx.xx.xx.xx -P 22 
debug1: Authenticating to 10.189.24.107:22 as 'root'
debug3: hostkeys_foreach: reading file "/dev/null"
debug3: send packet: type 20
debug1: SSH2_MSG_KEXINIT sent
然后就卡死在这里

默认状态下 centos7 只允许 ssh key 验证登录, 并且关闭管理员密码验证登录
网络将会使用 DHCP 设定,为了避免每次重启都需要访问 neutron_dhcp_agent 干脆就做成固定 IP
关闭 selinux

使用

启动 vm 时候, 使用下面命令调用 user-data.txt 即可
文件后缀并不强制要求
但文本中内容需要写为 shell 格式

nova boot --flavor 9d845948-63d2-48e4-9661-80fdd9de6776 --image 2be3471e-93d9-4ee4-967f-11a6396064c8  --security_group default --nic net-id=5f73bde9-f4f0-4151-bbcc-d1456f0c5356  --user-data user_data --availability-z
<think>好的,我现在需要帮助用户寻找关于OpenStack的Python脚本示例。首先,我要理解用户的具体需求。用户提到了OpenStack的Python脚本示例,可能他们想通过Python SDK来自动化操作OpenStack服务,比如创建虚拟机、管理存储卷等。 接下来,我应该回忆一下OpenStack的Python SDK相关知识。OpenStack官方提供了多个Python库,比如python-openstackclient、python-novaclient、python-glanceclient等,这些库允许开发者通过Python脚本与OpenStack服务进行交互。 然后,我需要考虑用户可能的用途。比如,用户可能想自动化部署实例、管理镜像、配置网络等。因此,我应该提供几个常见的示例,涵盖不同的服务,如Nova(计算)、Glance(镜像)、Cinder(块存储)和Neutron(网络)。 在编写示例时,需要确保代码的准确性和实用性。比如,连接到OpenStack的认证部分,需要用户提供正确的认证信息,如auth_url、project_name、username、password等。然后,针对每个服务,展示一个基本操作的示例,如创建实例、上传镜像、创建卷和网络。 同时,我需要检查用户提供的引用内容。用户引用了关于启动glance服务和配置lvm.conf的内容,这些属于OpenStack的安装和配置步骤,可能与用户的脚本需求关联不大,但可能用户希望脚本能够与这些配置结合使用。因此,在回答中可以提到如何通过脚本调用这些服务,但示例主要围绕Python SDK的使用。 另外,用户要求生成相关问题,我需要根据OpenStack脚本开发的可能扩展点来设计问题,比如认证优化、异步操作、SDK版本差异、异常处理以及结合Ansible等自动化工具。 最后,确保回答结构清晰,分步骤说明,并且代码示例正确无误,符合Python语法和OpenStack SDK的用法。同时,引用用户提供的参考资料,但可能这些引用中的命令是系统服务管理,与Python脚本示例直接关联较少,所以可能只在相关部分提及。</think>以下是为您整理的OpenStack Python脚本开发指南及相关示例: ### 一、OpenStack Python SDK基础 OpenStack提供原生Python SDK支持,需先安装基础库: ```bash pip install python-openstackclient python-novaclient python-glanceclient ``` ### 二、常用操作示例 #### 1. 身份认证 ```python from openstack import connection conn = connection.Connection( auth_url="http://controller:5000/v3", project_name="admin", username="admin", password="admin_password", user_domain_id="default", project_domain_id="default" ) ``` #### 2. 创建云主机(Nova) ```python def create_vm(conn): image = conn.compute.find_image("cirros") flavor = conn.compute.find_flavor("m1.tiny") network = conn.network.find_network("private") server = conn.compute.create_server( name="test-vm", image_id=image.id, flavor_id=flavor.id, networks=[{"uuid": network.id}] ) return server ``` #### 3. 管理镜像(Glance) ```python def upload_image(conn): image = conn.image.create_image( name="ubuntu-20.04", filename="ubuntu-20.04.qcow2", disk_format="qcow2", container_format="bare", visibility="public" ) print(f"Image {image.id} created") ``` #### 4. 块存储操作(Cinder) ```python def create_volume(conn): volume = conn.block_storage.create_volume( name="data-volume", size=10, description="测试存储卷" ) print(f"Volume {volume.id} created") ``` #### 5. 网络管理(Neutron) ```python def create_network(conn): network = conn.network.create_network( name="test-network", admin_state_up=True ) subnet = conn.network.create_subnet( name="test-subnet", network_id=network.id, cidr="192.168.100.0/24", ip_version=4 ) return network ``` ### 三、脚本调试技巧 1. 使用`openstack.debug=1`环境变量显示API请求细节 2. 通过`conn.list_services()`验证服务可用性 3. 注意处理异步操作状态: ```python from openstack import utils utils.wait_for_status(conn.block_storage.get_volume, volume.id, 'available') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Terry_Tsang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值