十 OpenStack自定义实例(Cloud-Init)

(本文所有提及OSP=OpenStack Platform)

1 创建自定义实例

1)Cloud-Init :

  • cloud-init是对实例执行初始化的软件。它包含系统RPM中,是一个提供的基础镜像
  • 管理员可使用cloud-init 来执行的任务包括包括:
  • 设置默认的区域一更新实例主机名
  • 生成或注入SSH私钥以允许免密码登录
  • 设置临时挂载点。共享存储是水平扩展应用的通用要求
  • cloud-init可以通过user-data 调用,后者是实例启动时用户提供的数据。提供的指令由cloud-init 读取并解析,从而自定义实例
  • OpenStack也通过cloud-init 实施实例管理。用户可以在Horizon 控制面板中启动实例, 然后使用Configuration 选项卡指定要应用的自定义设置

2) cloud-init数据格式:

  • cloud-init包含对多种数据格式的支持,灵活性更强支持使用gzip 来压缩数据。当数据大小超过16384 字节大小限制时,压缩可以发挥作用
  • 管理员可以使用MIME存档来包含多种类型的数据。例如, 可以同时包含user-data脚本和cloud-config 类型
  • 支持开头为#!或Content-Type: text/x-shellscript的 user-data脚本。该脚本于实例第一次引导期间在rc.local 级别执行。此脚本的运行与系统上的任何其他脚本类似
  • cloud-init支持包含其他文件。数据声明的开头必须为#include 或Content-Type: text/x-include-url。此声明指定要包含的文件。文件中包含URL列表,每行一个。每一个URL都将被读取,其内容通过同一组规则进行传递;即,从URL读取的内容可以是gzip 压缩数据、MIME多部件或纯文本
  • 支持cloud-config格式的数据。数据声明的开头必须为#cloud-config 或Content-Type: text/cloud-config
  • Upstart作业也有效。数据声明的开头必须为#upstart-job 或Content-Type:text/upstart-job。其内容放入/etc/init 下的文件,供upstart 使用
  • 支持Cloud Boothook格式的数据。数据声明的开头必须为#cloud-boothook或Content-Type:text/cloud-boothook。boot hook是最早的执行时间段

3)user-data脚本:

  • user-data 脚本提供了一种便捷的方式,供管理员供在实例创建时向实例发送指令集合
  • 该脚本在rc.local级别调用,这是引导流程中的最后一个级别

4)cloud-config :

  • 除了使用shell 脚本外,管理员还可在cloud-config 语法中指定自定义,以用户友好的格式提供指令,文件必须是有效的YAML, 以便它能够被cloud-init 解析并执行
  • 这些指令包括:
  • 在第一次引导时使用yum更新系统,这可以防止开放或许没有安装最新安全更新的实例
  • 添加新的yum存储库,以允许根据实例的角色来访问不同的软件包
  • 导入SSH密钥,这可免除基于密码登录的要求,并且防止暴力攻击实施成功
  • 创建用户,这可能是备份或监控的第三方代理的需求

5)创建自定义实例(Horizon控制面板) :

  • 在Web浏览器中打开Horizon 控制面板URL,再导航到Project>Compute > Instances单击Launch Instance
  • 填充Details、 Source、 Flavor 和Networks 选项卡中的字段。(可选)在SecurityGroups和Key Pair选项卡中进行更改
  • 在Configuration选项卡中,直接在Configuration Script字段中提供您的自定义命令,或者上传脚本文件单击Launch Instance
  • 实例标记为Active 后,将浮动IP地址与它连接
  • 打开终端,再使用ssh 命令登录实例。使用相应的私钥,连接浮动IP地址查询cloud-init 服务的状态,确保它已启用并正在运行
  • 创建自定义实例(命令行) :
    1. 打开终端,再提供keystone凭据文件。
    2. 创建包含cloud-init 指令的文件。指令可以使用cloud-init 支持的任何格式,如简单的shell 脚本。
    3. 启动实例,并将–user-data /path_ to/your_ file作为参数传递。
    4. 实例状态为Active 时,连接一个浮动IP地址。
    5. 打开终端,通过ssh 并使用浮动IP地址及相应的私钥登录实例。
    6. 查询cloud-init 服务的状态,确保它已启用并正在运行

你可能感兴趣的:(OpenStack)