The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Использование cloud-init для запуска cloud-редакции Ubuntu в локальном KVM-окружении
В состав адаптированных для установки в cloud-окружениях сборок Ubuntu 10.10
(UEC) был интегрирован cloud-init, конфигурируемый процесс инициализации,
позволяющий унифицировать процесс задания конфигурации во время загрузки,
например, указать локаль, имя хоста, SSH-ключи и точки монтирования.

Ниже представлен скрипт по установке и преднастройке UEC-сборки в виде гостевой
системы, работающей под управлением локального гипервизора KVM.

# Загружаем свежую сборку UEC с http://uec-images.ubuntu.com,
# например, стабильный выпуск Ubuntu 10.10 (http://uec-images.ubuntu.com/maverick/current/) 
# или тестовую версию Ubuntu 11.04 (http://uec-images.ubuntu.com/natty/current/).

   uecnattyservercurrent=http://uec-images.ubuntu.com/server/natty/current/natty-server-uec-i386.tar.gz

# Распаковываем img-образ и устанавливаем несколько переменных, указываем 
# на ядро и базовые директории:

   tarball=$(basename $uecnattyservercurrent)
   [ -f ${tarball} ] || wget ${uecnattyservercurrent}
   contents=${tarball}.contents
   tar -Sxvzf ${tarball} | tee "${contents}"
   cat natty-server-uec-i386.tar.gz.contents
   base=$(sed -n 's/.img$//p' "${contents}")
   kernel=$(echo ${base}-vmlinuz-*)
   floppy=${base}-floppy
   img=${base}.img

# Преобразуем образ UEC в формат qcow2, для запуска под управлением KVM:

   qemu-img create -f qcow2 -b ${img} disk.img

# Подготавливаем набор мета-данных (файлы meta-data и user-data) для 
# автоматизации настройки гостевой системы, примеры можно посмотреть здесь

# Запускаем простейший HTTP-сервер для отдачи файлов с мета-данными 
# Сервер будет запущен на 8000 порту и будет отдавать файлы meta-data 
# и user-data из текущей директории, которые следует модифицировать в зависимости 
# от текущих предпочтений (можно прописать команды по установке дополнительных пакетов, 
# запустить любые команды, подключить точки монтирования и т.п.)

   python -m SimpleHTTPServer &
   websrvpid=$!

# Запускаем гостевую систему под управлением KVM, базовый URL для загрузки 
# мета-данных передаем через опцию "s=":

   kvm -drive file=disk.img,if=virtio,boot=on -kernel "${kernel}" \
      -append "ro init=/usr/lib/cloud-init/uncloud-init root=/dev/vda ds=nocloud-net;s=http://192.168.122.1:8000/ ubuntu-pass=ubuntu"

# Завершаем выполнение http-сервера, используемого для отдачи мета-данных.
   kill $websrvpid



Пример файла user-data:

   #cloud-config
   #apt_update: false
   #apt_upgrade: true
   #packages: [ bzr, pastebinit, ubuntu-dev-tools, ccache, bzr-builddeb, vim-nox, git-core, lftp ]

   apt_sources:
    - source: ppa:smoser/ppa

   disable_root: True

   mounts:
    - [ ephemeral0, None ]
    - [ swap, None ]

   ssh_import_id: [smoser ]

   sm_misc:
    - &user_setup |
      set -x; exec > ~/user_setup.log 2>&1
      echo "starting at $(date -R)"
      echo "set -o vi" >> ~/.bashrc
      cat >> ~/.profile <<EOF
      export EDITOR=vi
      EOF

   runcmd:
    - [ sudo, -Hu, ubuntu, sh, -c, 'grep "cloud-init.*running"  /var/log/cloud-init.log > ~/runcmd.log' ]
    - [ sudo, -Hu, ubuntu, sh, -c, 'read up sleep < /proc/uptime; echo $(date): runcmd up at $up | tee -a ~/runcmd.log' ]
    - [ sudo, -Hu, ubuntu, sh, -c, *user_setup ]

Пример файла meta-data

   #ami-id: ami-fd4aa494
   #ami-launch-index: '0'
   #ami-manifest-path: ubuntu-images-us/ubuntu-lucid-10.04-amd64-server-20100427.1.manifest.xml
   #block-device-mapping: {ami: sda1, ephemeral0: sdb, ephemeral1: sdc, root: /dev/sda1}
   hostname: smoser-sys
   #instance-action: none
   instance-id: i-87018aed
   instance-type: m1.large
   #kernel-id: aki-c8b258a1
   local-hostname: smoser-sys.mosers.us
   #local-ipv4: 10.223.26.178
   #placement: {availability-zone: us-east-1d}
   #public-hostname: ec2-184-72-174-120.compute-1.amazonaws.com
   #public-ipv4: 184.72.174.120
   #public-keys:
   #  ec2-keypair.us-east-1: [ssh-rsa AAAA.....
   #      ec2-keypair.us-east-1, '']
   #reservation-id: r-e2225889
   #security-groups: default
 
Ключи: cloud, kvm, ubuntu, init, boot / Лицензия: CC-BY
Раздел:    Корень / Безопасность / Виртуализация - Xen, OpenVZ, KVM, Qemu

Обсуждение [ RSS ]
  • 1, User294 (ok), 05:16, 05/01/2011 [ответить]  
  • +/
    Много букв, и, главное - в половине мест напихана какая-то черная магия... без объяснений ЧТО и ЗАЧЕМ делается. Ну вот например, образцы файлов - это круто. Но совсем иначе станет когда захочется их осмысленно отредактировать. В итоге не понятен смысл гайда. Ман я почитать могу и без гайдов :). А вот что и зачем - этот ман к сожалению не показывает и не рассказывает.
     
     
  • 2, Тру_Гангста (?), 12:49, 05/01/2011 [^] [^^] [^^^] [ответить]  
  • +/
    согласен, коментариев очень мало
     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру