Назад | Перейти на главную страницу

Различное поведение образа ubuntu-cloud между LXC и libvirt-lxc

Я использовал шаблон ubuntu-cloud в качестве контейнеров LXC, и все они работали нормально. Недавно я перешел на использование libvirt-lxcи следовал инструкциям в Документ Ubuntu, но образ инициализирован иначе, чем LXC:

  1. Пытался подключиться к серверу метаданных AWS и получил ошибки:

    2013-02-05 00:55:48,209 - util.py[WARNING]: 'http://169.254.169.254/2009-04-04/meta-data/instance-id' failed [50/120s]: url error [timed out]
    
  2. Пароль по умолчанию не сработал. Мне нужно включить пароль, изменив rootfs ' /etc/shadow потому что пароль по умолчанию для учетной записи "ubuntu" был заблокирован.

Я думаю, что LXC заранее справится с cloud-init проблемы и скормить ему некоторые пользовательские данные и метаданные. Я пытался найти, как это сделать вручную, но cloud-init страница документа не помогла, потому что это все примеры для euca-tools.

И еще я заметил, что lxc-start есть возможность -C :«Параметр -C создает облачный контейнер, настроенный для использования со службой метаданных». Но я просто не знал, как сопоставить этот параметр и все связанные с ним настройки libvirt_lxc.

Как правильно инициализировать образ / rootfs?

Хорошо, после нескольких дней поиска решения cloud-init проблемы, я обнаружил, что могу подготовить seed диск для монтирования в гостевой системе, чтобы позволить cloud-init загрузка с. В деталях:

  1. Создать libvirt XML домена с LXC rootfs
  2. Подготовить meta-data и user-data файлы только следующие эта ссылка
  3. Вместо создания файла ISO мы можем добавить параметр монтирования в XML нашего домена для заполнения файлов в cloud-init:

    <!-- language: lang-xml -->
    <filesystem type='mount'>
      <source dir='./seed-dir-path'/>
    
      <!-- Make sure your rootfs has `/var/lib/cloud/seed` directory first-->
    
      <target dir='/var/lib/cloud/seed/nocloud'/>
    </filesystem>
    
  4. Определите домен и запустите его. Сейчас cloud-init получит meta-data и user-data.

И, cloud-init не хватает документов 1,2. Я потратил много времени на поиск информации в системе отслеживания проблем, в блогах и даже в репозиториях на github. Напротив, libvirt, по крайней мере, имеет полезную вики.