Packer構建openStack映象

FuShudi發表於2024-07-21

目錄
  • 使用Packer自動化構建映象

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

相關文章