Cloud-init 0.7.9 Astra Linux настройка для Openstack

Datasources

cloud.cfg.d/90_dpkg.cfg

# to update this file, run dpkg-reconfigure cloud-init
datasource_list: [ NoCloud, ConfigDrive, OpenNebula, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Ec2, CloudStack, None ]

Команда ‘dpkg-reconfigure cloud-init’ обновляет список datasource_list в этом файле. Можно вручную привести к виду:

datasource_list: [ Ec2 ]
ВАЖНО!!: именно Ec2, а не Openstack! Причем, если указать оба источника, гда первым будет Openstack - не работает. В астре работает только так.

cloud.conf

# The top level settings are used as module
# and system configuration.

# A set of users which may be applied and/or used by various modules
# when a 'default' entry is found it will reference the 'default_user'
# from the distro configuration specified below
users:
   - default

# If this is set, 'root' will not be able to ssh in and they
# will get a message to login instead as the above $user (debian)
disable_root: true

# This will cause the set+update hostname module to not operate (if true)
preserve_hostname: false
# !! aizaro - urgent
manage_etc_hosts: true

# Example datasource config
# datasource:
#    Ec2:
#      metadata_urls: [ 'blah.com' ]
#      timeout: 5 # (defaults to 50 seconds)
#      max_wait: 10 # (defaults to 120 seconds)
#
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
 - ssh-import-id
 - locale
 - set-passwords
 - grub-dpkg
 - apt-pipelining
 - apt-configure
 - ntp
 - timezone
 - disable-ec2-metadata
 - runcmd
 - byobu

# The modules that run in the 'final' stage
cloud_final_modules:
 - package-update-upgrade-install
 - fan
 - puppet
 - chef
 - salt-minion
 - mcollective
 - 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: |
     #deb https://download.astralinux.ru/astra/stable/orel/repository/ orel main contrib non-free
     #deb [trusted=yes] http://download.astralinux.ru /
     deb [trusted=yes] http://10.55.82.106 /

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: astra
   # Default user name + that default users groups (if added/used)
   default_user:
     name: astra
     lock_passwd: True
     gecos: Astra Linux
     groups: [adm, audio, cdrom, dialout, dip, floppy, netdev, plugdev, sudo, video]
     sudo: ["ALL=(ALL) NOPASSWD:ALL"]
     shell: /bin/bash
   # 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: [default]
       failsafe:
         primary: https://download.astralinux.ru/astra
         security: https://download.astralinux.ru/astra
   ssh_svcname: ssh

Setup script

#!/bin/bash
PPL="
automake
libcurl3
curl
intltool
liburi-perl
libwww-perl
libxml-parser-perl
libyaml-0-2
python3.7-dbg
python3-asn1crypto
python3-blinker
python3-certifi
python3-cffi
python3-cffi-backend-dbg
python3-chardet
python3-configobj
python3-cryptography
python3-dbg
python3-distutils
python3-idna
python3-jinja2
python3-jsonpatch
python3-json-pointer
python3-jwt
python3-lib2to3
python3-markupsafe
python3-oauthlib
python3-pbr
python3-pkg-resources
python3-prettytable
python3-requests
python3-setuptools
python3-six
python3-urllib3
python3-yaml
"
for PP in $PPL; do
  apt install $PP
done

Cirros samples

$ cat config
# must set DATASOURCE_LIST
DATASOURCE_LIST="nocloud configdrive ec2"
$ cat ds-configdrive
# SEED_PRE_D, SEED_POST_D consider these directories
# to have configdrive data before and after block devices
SEED_PRE_D="/var/lib/cloud/seed/configdrive-pre"
SEED_POST_D="/var/lib/cloud/seed/configdrive"
$ cat ds-ec2
MAX_TRIES=20
SLEEP_TIME=2
BURL="http://169.254.169.254/2009-04-04"
$ cat ds-nocloud
# SEED_PRE_D, SEED_POST_D consider these directories
# to have nocloud data before and after block devices
SEED_PRE_D="/var/lib/cloud/seed/nocloud-pre"
SEED_POST_D="/var/lib/cloud/seed/nocloud"

Конфигурирование источников данных:

dpkg-reconfigure cloud-init