CL210执行镜像操作--在部署期间初始化实例+章节实验

🎹 个人简介:大家好,我是 金鱼哥,优快云运维领域新星创作者,华为云·云享专家,阿里云社区·专家博主
📚个人资质:CCNA、HCNP、CSNA(网络分析师),软考初级、中级网络工程师、RHCSA、RHCE、RHCA、RHCI、ITIL😜
💬格言:努力不一定成功,但要想成功就必须努力🔥

🎈支持我:可点赞👍、可收藏⭐️、可留言📝

文章目录

📜回顾CLOUD-INIT基础知识

为了避免镜像的激增,您可以只维护几个通用基本镜像,然后在部署期间执行特定于实例的定制。cloud-init是一组Python脚本和实用程序,用于执行实例的早期初始化。它的任务可能包括注入SSH密钥、配置网络设置和设置主机名。cloud-init设置实例所需的信息称为用户数据。用户数据支持几种格式,包括shell脚本、云配置格式、upstart作业、MIME多部分格式和include文件。这些都可以使用gzip进行压缩。


📑流行的cloud-init用户数据格式
shell脚本

cloud-init可以直接使用shell脚本作为用户数据,而不需要修改。如果您现有的强化或自定义是使用shell脚本执行的,那么这提供了一个简单的迁移路径。


cloud-config

云配置格式允许管理员使用简单的指令执行常见任务。云配置格式文件必须是有效的YAML,并具有# cloud-config头或Content-Type: text/cloud-config头文件用于MIME归档。它支持创建用户、组、文件和Yum存储库、安装包、确认SSH密钥和其他任务。


include

include文件包含一个url列表,每个url都指向支持的任何格式的用户数据。它必须有一个#include头或者Content-Type: text/x-include-url头用于MIME归档。


📜描述配置驱动

在Red Hat OpenStack平台中,cloud-init在实例启动期间运行,并从计算元数据API接收用户数据信息。OpenStack计算服务提供了–config-drive布尔值选项来自动生成一个小的ISO 9660或VFAT格式的镜像,其中包含特定于实例的用户数据。如果附加的项目网络没有启用DHCP,则此选项可以为实例提供静态网络配置信息。生成的镜像具有一个config-2的卷标,并在引导时附加到实例。

裸金属服务还支持–config-drive选项,但是这需要一个路径到包含您想要包含的文件的目录。Bare Metal服务创建一个gzip压缩的、使用base64编码的、带有config-2标签的ISO 9660镜像,其中包含目录中的文件。


📜描述元数据服务体系结构

随着Red Hat OpenStack Platform 13中OVN的引入,元数据架构发生了变化。元数据体系结构现在由元数据代理、Neutron OVN元数据代理和Nova元数据API组成。


📜描述cloud-init与计算元数据API的通信

运行在实例上的cloud-init通过两种方法之一被定向到元数据服务。在启用DHCP的项目网络上,DHCP响应包括169.254.169.254的静态路由。没有DHCP的项目网络在OVN路由器中包含一个静态路由。下面的列表描述了通信过程。

  1. 在实例部署期间,将选择一个compute节点作为部署目标。在目标计算节点上运行的neutron-ovn-metadata-agent负责管理网络名称空间(ovnmeta-xxx)、OVS接口和启动HAProxy进程。

  2. 如果实例网络的网络名称空间(ovnmeta-xxx)不存在,则neutron-ovn-metadata-agent会创建一个。

  3. 使用veth对将名称空间链接到OVS,并与IP地址相匹配,然后启动。

  4. neutron-ovn-metadata-agent启动一个HAProxy进程,该进程被称为该名称空间中的元数据代理。下面的输出显示了名称空间、连接名称空间到OVN的接口和HAProxy进程,它们都使用相同的标识符。

在这里插入图片描述

  1. 如果实例有DHCP提供的主机路由,那么从cloud-init发出的请求将直接发送到元数据代理;如果网络上没有启用DHCP,则由OVN路由器转发到元数据代理。

  2. 元数据代理流程侦听HTTP流量,然后将任何请求转发到neutron-ovn-metadata-agent代理通过/var/lib/neutron/metadata_proxy套接字。作为计算元数据API不能区分实例的IP地址,包含ID的元数据代理注入一个X-OVN-Network-ID头项目的网络。

在这里插入图片描述

  1. neutron-ovn-metada-agent将请求发送给计算元数据APl,并通过相同的路径将任何响应转发回实例。

在这里插入图片描述

图4.1: cloud-init与计算元数据API通信


📜描述CLOUD-INIT结构

cloud-init应用程序由用Python编写的模块组成。它还包括四个Systemd服务、配置文件和一些用于分发特定文件的模板。cloud-init的数据存储在/var/lib/cloud.下。这些文件都在一个安装了cloud-init包的实例中。下面描述这四个服务的功能。


📑Cloud-Init服务
cloud-init-local.service

此服务在网络可用之前先运行,但在挂载根分区时运行读/写。理想情况下,该服务可以为实例提供网络配置信息。执行的命令是cloud-init init --local。


cloud-init.service

该服务在引导顺序中排名第二,并期望网络被确认。因为网络是可用的,所以这个阶段处理所有用户数据。所有模块列于cloud_init_modules在/etc/cloud/cloud.conf中执行。执行的命令是cloud-init init。


cloud-config.service

这个服务在cloud-init.service之后运行。所有模块列于cloud_init_modules在/etc/cloud/cloud.conf中执行。执行命令cloud-init modules --mode=config。


cloud-final.service

此服务根据cloud-config.service和rc-local.service尽可能地延迟运行。所有模块列于cloud_init_modules在/etc/cloud/cloud.conf中执行。执行命令cloud-init modules --mode = final。

您可以通过检查/var/log/下的日志文件来排除cloud-init故障。cloud-init.log文件包含这四个服务产生的信息。cloud-init-output.log文件可能存在,并包含每个模块产生的输出。可以手动运行上述服务中列出的任何命令来解决问题。

/etc/cloud/cloud.cfg文件是cloud-init的主要配置文件,但是可以通过将文件放在/etc/cloud/cloud.cfg.d下来包含其他配置文件。


📜课本练习

  • 创建一个云配置格式的用户数据文件。

  • 启动实例并验证是否应用了用户数据。

[student@workstation ~]$ lab customization-img-cloudinit setup 
Setting up workstation for exercise work:

 • Verifying project: finance..................................  SUCCESS
 • Creating user environment file: developer1-finance-rc.......  SUCCESS
 • Creating keypair: example-keypair...........................  SUCCESS
 . Creating flavor: default....................................  SUCCESS
 . Creating internal network: finance-network1.................  SUCCESS
 . Creating subnet: finance-subnet1............................  SUCCESS
 . Creating external network: provider-datacentre..............  SUCCESS
 . Creating router: finance-router1............................  SUCCESS
 • Creating secgroup rule: ssh.................................  SUCCESS
 • Checking fip availability: 1................................  SUCCESS
 • Adding yv alias:............................................  SUCCESS

📑1. 在cloud config格式创建/home/student/user-data文件。
[student@workstation ~]$ cat user-data 
#cloud-config

users:
  - name: cloud-admin
    sudo: ALL=(ALL) NOPASSWD:ALL
    ssh_authorized_keys:
      - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDHufCmzG95rJkXHZOe+7rHMaf3me7geAfdYAc2fuoKjSVoBni4aF4MYkSmb1UYyXjtQ++x2+i13+Osn9FJZmvda0maqT6DuIcpiAxldVrnNJFv5L1VFGiFDbUglThPc25Ytn7bWqg02pFJz4Nc9vN+PzVETevL8b0tMvWPQ44MRuXCCM+UaHO1mBD2pcEnpQ1R/MzYxTzzdvjP5iBn4GAp7KjUw/+FvBhlNiKsXJjQGl6MHbCZhtgsntJzl7tKGY4SgJXZaUD0TnpPeCBlEmWNUz4hAoVMfiiZA4fLAmJ7yZqwRcr4EVnqbmZC6CfIhVxb1J69UHhK62KS6513MP3v Generated-by-Nova

pack
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

IT民工金鱼哥

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

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

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

打赏作者

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

抵扣说明:

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

余额充值