首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

Packer构建openStack镜像

编程知识
2024年07月21日 13:00

目录

使用Packer自动化构建镜像

openstack插件安装:OpenStack | Integrations | Packer | HashiCorp Developer
openstack插件用法示例:OpenStack Builder | Integrations | Packer | HashiCorp Developer

安装openstack 插件

packer plugins install github.com/hashicorp/openstack

编写模板文件openstack.pkr.hcl如下

packer {
  required_plugins {
    openstack = {
      version = "~> 1"
      source  = "github.com/hashicorp/openstack"
    }
  }
}

source "openstack" "example" {
  domain_name                 = "default"
  flavor                      = "m1.medium"
  identity_endpoint           = "http://192.168.200.150:5000/v3"
  image_name                  = "openEuler-22.03-sp4.qcow2"
  insecure                    = true
  password                    = "JBJGuIpffaGMJDtvMXRrmF1qET4KMZseR0Ihyfil"
  region                      = "RegionOne"
  source_image_name           = "openEuler-22.03-LTS-SP4-x86_64.qcow2"
  networks                    = ["289df86a-6780-4563-a806-9f365ec86812"]
  floating_ip_network         = "public1"
  ssh_username                = "root"
  ssh_password	              = "openEuler12#$"
  tenant_name                 = "admin"
  username                    = "admin"
  use_blockstorage_volume     = "true"
  volume_size                 = "40"
  image_disk_format           = "qcow2"
}

build {
  sources = ["source.openstack.example"]
  provisioner "shell" {
    inline = [
      "echo Build image work is starting",
      "yum install vim bash-comp* -y",
      "echo 123 | passwd --stdin root",
      "echo execute successful"
    ]
  }
}

执行构建

packer build ./openstack.pkr.hcl

常用配置项说明:

  • domain_name: openstack的域,默认为default
  • flavor: 指定创建虚拟机的规格
  • identity_endpoint:指定keystone的认证地址
  • image_name: 使用Packer生成的镜像名
  • tenant_name: 租户名,就是openstack中的project名
  • insecure: 是否使用不安全的连接,也就是http和https
  • password:openstack用户的密码
  • username:openstack用户名
  • networks:指定虚拟机创建在哪个网络之中
  • source_image_name:使用本地的镜像文件来创建虚拟机
    • external_source_image_name:使用外部的镜像文件来创建,该地址是一个url
    • source_image:使用glance中的镜像来创建虚拟机
  • floating_ip_network:指定浮动IP的网络,即openstack中的外部网络,需要给虚拟机配置浮动IP,不然packer无法使用ssh连接上虚拟机
  • ssh_username :启动虚拟机之后使用ssh连接的用户名
  • ssh_password :可选参数,指定ssh连接的密码,如果没有这个参数packer会创建一个临时的密钥对,ssh将会使用密钥对来连接
  • use_blockstorage_volume:是否使用块存储,
  • image_disk_format:指定保存的镜像格式,仅当use_blockstorage_volume为true时才生效
  • volume_size :指定块存储大小

额外说明,我是用的是openEuler官方提供的qcow2的文件,且版本为22.03-sp4,只能为sp4,因为sp3默认是不允许root用户去登录的,只允许普通用户openeuelr登录,但是这个用户并没有sudo的能力,并且没有cloud-init,所以无法做很多的配置,但是sp4这个版本他默认开放了root使用密码登录的权限,所以我们才能够做一些定制化的操作,其他操作系统不存在这个问题

等待packer构建完镜像之后会给你留下一个镜像在glance之中

packer会提示镜像ID为2db14ce1……,等他保存完之后我们去查看

通过dashboard我们可以看到,镜像被保存下来了,并且格式为qcow2,我们只需要通过这个镜像去启动虚拟机,那么这个虚拟机就默认密码为123,并且已经安装好了vim

From:https://www.cnblogs.com/fsdstudy/p/18314406
本文地址: http://www.shuzixingkong.net/article/242
0评论
提交 加载更多评论
其他文章 在.NET Web API设置响应输出Json数据格式常用的两种方式
前言 在ASP.NET Core Web API中设置响应输出Json数据格式常用以下两种方式:可以通过添加System.Text.Json或Newtonsoft.JsonJSON序列化和反序列化库在应用程序中全局设置接口响应的Json数据格式。 注意:本文示例使用的是新的Minimal API模式
在.NET Web API设置响应输出Json数据格式常用的两种方式 在.NET Web API设置响应输出Json数据格式常用的两种方式 在.NET Web API设置响应输出Json数据格式常用的两种方式
《痞子衡嵌入式半月刊》 第 105 期
痞子衡嵌入式半月刊: 第 105 期 这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期。 本期刊是开源项目(GitHub: JayHeng/pzh-mcu-bi-weekly),欢迎提交 issue,投稿或推荐你知道的嵌入式那些事儿。 上期回
《痞子衡嵌入式半月刊》 第 105 期 《痞子衡嵌入式半月刊》 第 105 期 《痞子衡嵌入式半月刊》 第 105 期
thinkphp5.0 访问不存在的数据或者模块开启404页面并返回404状态码,在404页面中获取abort函数中使用的错误信息
thinkphp5框架默认未开启404页面,都是统一返回的一个异常页面。错误码为500,如果是使用的$this->error()方法则都是返回的200状态码。以前我一直都用的$this->error("page not found");方法来提示页面不存在,现在发现这样对于seo很不友好。因为不存在的数据也返回了200.正常来说,不存在的数据应该返回404.而不是200.否则会让搜索引擎认为是在作弊.thinkphp中针对于http的错误都是使用的异常。可通过abort函数来直接抛出异常。abort可传入http状态码和信息;极为方便。
thinkphp5.0 访问不存在的数据或者模块开启404页面并返回404状态码,在404页面中获取abort函数中使用的错误信息 thinkphp5.0 访问不存在的数据或者模块开启404页面并返回404状态码,在404页面中获取abort函数中使用的错误信息 thinkphp5.0 访问不存在的数据或者模块开启404页面并返回404状态码,在404页面中获取abort函数中使用的错误信息
暑假java自学进度总结02
一.今日所学: 1.配置环境变量 在系统内配置java路径后,再在path中 利用系统路径配置Java编译工具和运行工具路径。 2.下载并安装Natepad++,并且配置相关设置 3.初步了解了Java的发展历程,能干什么,为什么被广泛使用,以及跨平台原理。 4.学习了JDK,JRE,JVE之间的关
暑假java自学进度总结02
创客13星零售商城系统漏洞审计(0day)任意文件上传+SQL注入+SSRF
创客13星零售商城系统漏洞审计3处(0day) 任意文件上传+SQL注入+SSRF
创客13星零售商城系统漏洞审计(0day)任意文件上传+SQL注入+SSRF 创客13星零售商城系统漏洞审计(0day)任意文件上传+SQL注入+SSRF 创客13星零售商城系统漏洞审计(0day)任意文件上传+SQL注入+SSRF
数据库的性能调优:如何正确的使用索引?
在当今的数据驱动时代,数据库的性能优化成为每个开发者和数据库管理员必须掌握的技能之一。而在众多优化手段中,索引的使用无疑是最为重要和有效的。然而,索引的滥用或误用不仅不会提升性能,反而可能带来额外的开销。那么,如何正确地使用索引,才能真正提升数据库性能呢? 为什么有时我们精心创建的索引却没有带来预期
数据库的性能调优:如何正确的使用索引? 数据库的性能调优:如何正确的使用索引? 数据库的性能调优:如何正确的使用索引?
番外2: go语言写的简要数据同步工具
go-etl工具 作为go-etl工具的作者,想要安利一下这个小巧的数据同步工具,它在同步百万级别的数据时表现极为优异,基本能在几分钟完成数据同步。 1.它能干什么的? go-etl是一个数据同步工具集,目前支持MySQL,postgres,oracle,SQL SERVER,DB2等主流关系型数据
番外2: go语言写的简要数据同步工具 番外2: go语言写的简要数据同步工具 番外2: go语言写的简要数据同步工具
一文揭开JDK21虚拟线程的神秘面纱
虚拟线程快速体验 环境:JDK21 + IDEA public static void main(String[] args) { try (var executor = Executors.newVirtualThreadPerTaskExecutor()) { IntStream.range(0