华为云之使用Packer创建私有镜像【玩转华为云】

举报
江湖有缘 发表于 2024/10/26 11:56:03 2024/10/26
【摘要】 华为云之使用Packer创建私有镜像【玩转华为云】

一、本次实践介绍

1.1 环境介绍

  1. 实验将在华为KooLabs云实验平台上进行。
  2. 使用华为云ECS弹性云服务器作为实验的基础环境。
  3. 需要确保实验账户拥有足够的权限来创建和管理ECS实例。
  4. 实验前应准备好访问互联网的条件,以便下载Packer及相关资源。
  5. 保证有足够的存储空间用于存放镜像文件及构建过程中产生的临时数据。

1.2 本次实践目的

  1. 通过实际操作掌握Packer工具的功能和使用方法。
  2. 深入理解虚拟机镜像的概念及其在云计算中的作用。
  3. 明确实验中可能遇到的技术约束与限制,并学习如何应对。
  4. 学会安装Packer并验证其正确配置。
  5. 掌握定义Packer模板的方法,以满足特定需求。
  6. 利用Packer成功创建一个可用于华为云ECS的定制化镜像。

二、 相关介绍

2.1 华为云ECS云服务器介绍

弹性云服务器(Elastic Cloud Server, ECS)是一种云上可随时自助获取、可弹性伸缩的计算服务,可帮助您打造安全、可靠、灵活、高效的应用环境。

image.png

2.2 Packer工具介绍

Packer是一款由HashiCorp开发的开源工具,旨在帮助用户创建可跨多种平台使用的自定义机器镜像。通过使用Packer,可以简化和自动化从基础操作系统到完全配置好的虚拟机或容器镜像的创建过程。

  1. 组件结构:

    • 构建器(Builder): 负责在特定平台上生成镜像。支持包括AWS, Azure, Google Cloud, VMware, VirtualBox等多种云服务提供商和本地虚拟化环境。
    • 配置器(Provisioner): 用于在镜像构建过程中安装软件、执行脚本或进行系统配置,支持shell脚本、Ansible、Chef等多种自动化工具。
    • 后处理器(Post-Processor): 在镜像构建完成后,对镜像进行进一步处理,如压缩、加密或上传至存储服务。
  2. 模板文件:

    • 使用JSON格式的模板文件来定义如何组合这些组件以创建镜像。
    • 模板文件指定了构建器类型、配置器以及后处理器等,并设置了它们的具体参数。
  3. 自动化与并行处理:

    • Packer能够并行地为多个平台同时创建镜像,极大地提高了效率。
    • 自动化的流程减少了人为错误,确保了不同环境中部署的一致性。
  4. 基础设施即代码(IaC):

    • 通过将镜像创建逻辑编写成代码,使得整个过程更加透明且易于版本控制。
    • 支持持续集成/持续部署(CI/CD)工作流,便于团队协作和快速迭代。
  5. 跨平台一致性:

    • 允许用户使用相同的模板为不同的云服务商创建一致性的镜像。
    • 这种能力有助于实现多云战略,减少因平台差异带来的管理复杂度。
  6. 社区与生态系统:

    • Packer拥有活跃的开发者社区,提供了丰富的插件和资源。
    • 官方文档详尽,易于上手,同时也有很多现成的例子可供参考。

三、预置实验环境

3.1 预置环境

预置实验环境约等待【2分钟】后预置成功。环境预置成功会生成名称为ecs-name的弹性云服务器ECS、并创建好配置相关的VPC。

在这里插入图片描述

预置的 ECS 资源用户、密码信息可点击预置环境信息查看。

在这里插入图片描述

3.2 访问华为云

进入【实验操作桌面】,打开Chrome浏览器,首次可自动登录并进入华为云控制台页面。如果没有自动登录,可选择【IAM用户登录】模式,于登录对话框中输入系统为您分配的华为云实验账号和密码登录华为云,如下图所示:

在这里插入图片描述

在这里插入图片描述

四、检查ECS弹性云服务器

4.1 查看云服务器状态

在服务器列表中,选择计算——弹性云服务器ECS,进入ECS控制台。

在这里插入图片描述

我们可以看到系统为我们自动创建了ECS云服务器,且正常运行中。

在这里插入图片描述

4.2 登录ECS

双击实验桌面的“Xfce终端”打开Terminal,输入以下命令登录弹性云服务器ECS

ssh root@EIP

在这里插入图片描述

4.3 检查操作系统版本

检查操作系统版本。本次实践的操作为Centos7。

[root@ecs-name ~]# cat /etc/os-release 
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"


4.4 检查内核版本

检查操作系统内核版本

[root@ecs-name ~]# uname -r 
3.10.0-1160.119.1.el7.x86_64



五、安装Packer工具

5.1 约束与限制

  • 不支持Packer使用整机镜像作为源镜像来创建私有镜像。

在这里插入图片描述

5.2 安装Packer工具

在Packer工具下载页面选择与云服务器操作系统及架构类型相对应的Packer版本,版本号建议选择1.2.3到1.4.2之间。本次实践的安装包为packer_1.4.2_linux_amd64.zip

wget --no-check-certificate https://releases.hashicorp.com/packer/1.4.2/packer_1.4.2_linux_amd64.zip

在这里插入图片描述

5.3 解压Packer安装包

  • 执行以下命令,解压Packer安装包。
unzip packer_1.4.2_linux_amd64.zip

在这里插入图片描述

5.4 移动安装包内容

执行以下命令,将Packer安装包移动至“/usr/local/bin”目录下。

mv packer /usr/local/bin

5.5 检查Packer版本

查询Packer版本号,检查Packer是否安装成功。

[root@ecs-name ~]# packer -v
1.4.2

在这里插入图片描述

六、定义Packer模板

6.1 Packer模板介绍

使用Packer创建镜像,需要一个json格式的模板文件。在模板文件中,您需要指定构建器、配置器,还可以指定后处理器。在配置器中,您可以指定对源镜像的任何操作,可以指定安装软件也可以对相关配置做修改。在本示例中,我们使用后处理器重定向manifest的输出路径,如果您的Packer模板文件中有多个builders(构建器),你可以通过manifest的输出内容,找到每个builder创建镜像的ID。关于构建器、配置器以及后处理器的详细介绍请参考Packer官方文档。

6.2 创建hwcloud.json文件

  • 创建hwcloud.json文件
touch hwcloud.json

6.3 编辑hwcloud.json文件

  • 编辑hwcloud.json文件,内容如下所示:
vim hwcloud.json
{
  "builders": [{
    "type": "openstack",
    "identity_endpoint": "https://iam.cn-north-4.myhuaweicloud.com/v3",
    "tenant_name": "cn-north-4",
    "domain_name": "domain_name", 
    "username": "username",
    "password": "password",
    "ssh_username": "root",
    "region": "cn-north-4",
    "image_name": "Ubuntu-image-updating-powered-by-Packer",
    "instance_name": "Ubuntu-image-updating-powered-by-Packer",
    "source_image": "57ddbb3e-62bd-4621-9e66-e7798874f25d",
    "availability_zone": "cn-north-4a",
    "flavor": "s6.large.2",
    "use_blockstorage_volume": true,
    "networks": ["11d661c4-e41f-487f-a6f6-9b88d623dd5d"],
    "floating_ip": "8f686f9a-3408-4fdd-be75-ea768065800c"
  }],
  "provisioners": [{
    "inline": [
      "echo Hi World!"
    ],
    "type": "shell"
  }]
}

在这里插入图片描述

需要修改部分如下,自行修改:

  • 其中"domain_name": “domain_name”, “username”: “username”,“password”: “password”,分别对应账号的账号名,用户名和密码,在沙箱的左上角可见,复制替换即可。

在这里插入图片描述

  • networks:需替换为VPC子网ID。

在这里插入图片描述

  • floating_ip:需替换为未绑定的弹性公网IP的ID。

在这里插入图片描述

七、使用Packer创建镜像

7.1 创建镜像

  • Packer模板文件制作完成后,请执行以下命令创建镜像。
packer build hwcloud.json

在这里插入图片描述

7.2 检查镜像

命令执行成功后,登录控制台,选择“计算 > 镜像服务 IMS”。在“私有镜像”列表页面,查看使用Packer创建的镜像,如下图所示:

在这里插入图片描述

购买ECS弹性云服务器时候,可以选择私有镜像,我们刚构建好的镜像。

在这里插入图片描述

八、总结

使用Packer在华为云上创建私有镜像,通过配置代码简化了整个过程,提高了效率和一致性。构建器、配置器和后处理器的灵活组合使得镜像定制更加便捷,减少了手动操作的复杂性。Packer与华为云ECS服务的无缝集成确保了镜像的质量和跨平台兼容性。这种自动化方法为镜像管理和多云部署提供了新的便捷途径。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。