Подготовка образа под openstack

Общий план действий

apt install cloud-init
dpkg-reconfigure cloud-init

Убрать все, кроме openstack
Удалить MAC-адрес и прочее

virt-sysprep -a /vms/astra-se-17-orel-dte-v04.raw
## virt-sysprep -d astra-dte ## этот вариант из (документации)[https://docs.openstack.org/image-guide/ubuntu-image.html]

Настройки cloud.cfg

users:
   - default

disable_root: true

## aizaro ## если 'false', то файл /etc/hostname корректируется автоматически при смене имени инстанса
preserve_hostname: false

## aizaro ## если 'true' - cloud-init вносит корректировки в файл /etc/hosts
manage_etc_hosts: true

## aizaro ## настройка источника метаданных для openstack
datasource:
  OpenStack:
    metadata_urls: ["http://169.254.169.254"]
    max_wait: 30
    timeout: 10
    retries: 3
    apply_network_config: True

# The modules that run in the 'init' stage
cloud_init_modules:
 - migrator
 - seed_random
 - bootcmd
 - write-files
 - growpart
 - resizefs
 - disk_setup
 - mounts
 - set_hostname
 - update_hostname
 - update_etc_hosts
 - ca-certs
 - rsyslog
 - users-groups
 - ssh

# The modules that run in the 'config' stage
cloud_config_modules:

# Emit the cloud config ready event
# this can be used by upstart jobs for 'start on cloud-config'.
 - emit_upstart
 #- snap
 #- snap_config  # DEPRECATED- Drop in version 18.2
 - ssh-import-id
 - locale
 - set-passwords
 - grub-dpkg
 - apt-pipelining
 - apt-configure
 - ubuntu-advantage
 - ntp
 - timezone
 - disable-ec2-metadata
 - runcmd
 - byobu

# The modules that run in the 'final' stage
cloud_final_modules:
 - snappy  # DEPRECATED- Drop in version 18.2
 - package-update-upgrade-install
 - fan
 - landscape
 - lxd
 - puppet
 - chef
 - mcollective
 - salt-minion
 - rightscale_userdata
 - scripts-vendor
 - scripts-per-once
 - scripts-per-boot
 - scripts-per-instance
 - scripts-user
 - ssh-authkey-fingerprints
 - keys-to-console
 - phone-home
 - final-message
 - power-state-change

apt:
   preserve_sources_list: false
   sources_list: |
     ## aizaro ## пользовательский репозиторий, который будет добавлен в /etc/apt/sources.list      
     deb [trusted=yes] https://10.50.27.241/ubuntu/ bionic main multiverse universe

locale: ru_RU.UTF-8

# System and/or distro specific settings
# (not accessible to handlers/transforms)
system_info:
   # This will affect which distro class gets used
   distro: ubuntu
   # Default user name + that default users groups (if added/used)
   default_user:
     name: ubuntu
     lock_passwd: False
     ## aizaro ## хэш SHA512 пароля пользователя ubuntu, который взять из файла /etc/shadow или сгенерировать командой python:
     ## python3 -c 'import crypt; print(crypt.crypt("test", crypt.mksalt(crypt.METHOD_SHA512)))'  
     passwd: $6$aJXkCCIR$mrf0bMA3hho0LTcOsk1RED7mmSXjbQrHsBi0GTxBWVonl3wVXVNJfkHRLTbbmceU6GUvEvh02PnOWV6GdOJRb0
     gecos: Ubuntu
     groups: [adm, audio, cdrom, dialout, dip, floppy, lxd, netdev, plugdev, sudo, video]
     sudo: ["ALL=(ALL) NOPASSWD:ALL"]
     shell: /bin/bash
   # Automatically discover the best ntp_client
   ntp_client: auto
   # Other config here will be given to the distro class and/or path classes
   paths:
      cloud_dir: /var/lib/cloud/
      templates_dir: /etc/cloud/templates/
      upstart_dir: /etc/init/
   package_mirrors:
     - arches: [i386, amd64]
       failsafe:
         primary: http://archive.ubuntu.com/ubuntu
         security: http://security.ubuntu.com/ubuntu
       search:
         primary:
           - http://%(ec2_region)s.ec2.archive.ubuntu.com/ubuntu/
           - http://%(availability_zone)s.clouds.archive.ubuntu.com/ubuntu/
           - http://%(region)s.clouds.archive.ubuntu.com/ubuntu/
         security: []
     - arches: [armhf, armel, default]
       failsafe:
         primary: http://ports.ubuntu.com/ubuntu-ports
         security: http://ports.ubuntu.com/ubuntu-ports
   ssh_svcname: ssh

Отключение проверки сертификата репозитория

Чтобы самоподписанный репозиторий работал по https, необходимо создать файл /etc/apt/apt.conf.d/99-repo.local.conf со следующим содержанием:

content: Acquire { https::Verify-Peer false }