首页 > 其他分享 >Packer构建openStack镜像

Packer构建openStack镜像

时间:2024-07-21 14:08:53浏览次数:15  
标签:镜像 name Packer 虚拟机 ssh openstack openStack image

目录

使用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

标签:镜像,name,Packer,虚拟机,ssh,openstack,openStack,image
From: https://www.cnblogs.com/fsdstudy/p/18314406

相关文章

  • docker创建基础镜像
    1.编写dockerfileFROMcentos:7.9.2009#替换默认的yum源RUNrm-f/etc/yum.repos.d/*\&&curl-o/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repo\&&yummakecacheRUNyum-yupdate&&\......
  • macOS Sequoia 15 beta 3 (24A5289h) Boot ISO 原版可引导镜像下载 (首个公共测试版)
    macOSSequoia15beta3(24A5289h)BootISO原版可引导镜像下载(首个公共测试版)iPhone镜像、Safari浏览器重大更新、备受瞩目的游戏和AppleIntelligence等众多全新功能令Mac使用体验再升级请访问原文链接:https://sysin.org/blog/macOS-Sequoia-boot-iso/,查看最新版......
  • docker修改默认镜像、容器路径
    停止dockersystemctlstopdocker迁移文件mkdir-p/data/docker/lib/docker/rsync-av/var/lib/docker//data/docker/lib/docker/修改配置#/etc/docker/daemon.json#在配置文件中添加以下参数"data-root":"/data/docker/lib/docker"启动dockersystemctldaemon......
  • docker镜像常用命令
    1.使用"ls"查看镜像列表dockerimagels查看现有的镜像列表。dockerimagels-q仅查看镜像的ID信息。dockerimagels-a查看所有的镜像,包括中间镜像,尤其是在后期查看基于dockerfile的时候很有用呢2.使用"pull"拉取镜像dockerimagepullbus......
  • OpenStack安装指南
    目录前置条件方法一:1.准备环境1.1更新系统包1.2安装依赖包1.3创建一个非root用户并切换到该用户2.下载DevStack2.1下载DevStack代码2.2创建local.conf文件3.确保必要的目录存在4.安装OpenStack4.1执行安装脚本5.验证安装5.1访问OpenStackDashboard......
  • Gradle更换阿里云镜像源
    1、下载Gradle官网:https://gradle.org/releases/2、配置Gradle环境变量3、更换镜像源gradle安装目录下找到init.d文件夹 再该文件夹中创建init.gradle文件,编写一下脚本替换阿里云镜像//阿里云仓库和源仓库地址对比:https://developer.aliyun.com/mvn/guidegradle.proje......
  • openStack核心组件的工作流程
    目录openStack核心组件的工作流程1.Keystone1.1User1.2Credentials1.3Authentication1.4Token1.5Project1.6Service1.7Endpoint1.8Role1.9keystone综述2.glance2.1glance-api2.2glance-registry2.3backend2.4glance综述3.placement4.nova4.1nova-api4.2nova-s......
  • FTK Imager的强大功能:详细解读内存和磁盘镜像导出
    本指南将详细解读如何使用FTKImager进行内存镜像导出、镜像挂载和磁盘镜像导出。通过这篇文章,我希望能够帮助你更好地理解和应用这些技术,提高你的工作效率和准确性。文档目录简介准备工作1.1安装FTKimager1.2汉化(可选)1.3界面介绍磁盘镜像导出2.1什么是磁盘镜......
  • Docker如何将本地镜像上传到服务器并解压使用该镜像?
    第一步本地导出镜像包.tar文件dockersave-oapp.tarnuxt_app:1.0.1提示:app.tar这个文件名称任意取,.tar后缀不能随意修改。第二步将导出的镜像包文件app.tar上传到服务器第三步在服务器解压镜像cd/opt/docker-compose/save_image/sudodockerload<app.tar......
  • docker centos7 镜像 systemctl 报错 Failed to get D-Bus connection: Operation not
    从docker下载默认的CentOS镜像没有开启systemd,执行systemctl命令会显示“FailedtogetD-Busconnection:Operationnotpermitted”错误,如果docker创建centos7的容器涉及到systemctl服务操作,或者需要实现容器开机后自动启动服务功能。需要调整镜像并且修改镜像启动方式......