Nikolay
Вообще вангую ось не из поддерживаемого списка
J
Это я прямо щас увидел в disk-image-create —help, потому что наизусть ничо не знаю.
J
Чо за день то такой седня
Nikolay
9?
Mr.Smith
8.5
Nikolay
Тады странно
Nikolay
А что за запчасти от 7ки в скрипте?
Mr.Smith
я точно не знаю, они мне достались в наследство
Mr.Smith
я переношу сценарий с gitlab на jenkins
Nikolay
В коле вроде есть запчасти для сборки 8 ки
J
function create_base () { mkdir $TMP_BUILD_DIR/mnt # Make sure the / inside the chroot is owned by root # If it is not owned by root, some Ubuntu bionic packages will fail # path validation at install time. sudo chown root.root $TMP_BUILD_DIR/mnt export TMP_MOUNT_PATH=$TMP_BUILD_DIR/mnt # Copy data in to the root. TARGET_ROOT=$TMP_MOUNT_PATH run_d root if [ -z "$(ls $TMP_MOUNT_PATH | grep -v '^lost+found\|tmp$')" ] ; then # No root element copied in. Note the test above allows # root.d elements to put things in /tmp echo "Failed to deploy the root element." exit 1 fi
Mr.Smith
в гитлабе все работает
J
да там что такое есть
Ты понимаешь что в этой функции написано?
Mr.Smith
да
Mr.Smith
он должен подмантироваться и чрутнуться
Mr.Smith
но этого не происходит
Nikolay
Просто интересно - "sudo chown root.root" это как работает?
J
он должен подмантироваться и чрутнуться
Перед этим базовая rootfs туда должна скопироваться. А у тебя получается что во временной директории пусто.
Mr.Smith
изменить права владения каталогом для группы и пользователя рут
Nikolay
Такой формат човна первый раз вижу
Nikolay
Вот вот
J
изменить права владения каталогом для группы и пользователя рут
Не знаю. Выходит что элемент rhel8 мозги парит тебе. Попробуй свой скрипт с базовым элементом любой другой os. Ubuntu, debian, centos.
Nikolay
Подмонтируй образ
Nikolay
Руками
Mr.Smith
всё то же самое, только воркер гитлаба на убунту
Nikolay
Да
Nikolay
Короче с xfs часто встречаю проблемы маунта после qemunbd
Nikolay
При этом libguestfs нормально монтирует
J
А, я посмотрел щас. Оказывается, rhel элемент через жопу работает и ему надо готовый образ пихать из которого он вытянет rootfs.
J
Хоспаде, как же с редхатом сложно все.
Nikolay
Это да
J
https://docs.openstack.org/diskimage-builder/latest/elements/rhel7/README.html
Mr.Smith
DIB_LOCAL_IMAGE=/tmp/rhel7-cloud.qcow2
Mr.Smith
это сделно
Mr.Smith
исходный образ есть
J
Элемента rhel8 в базовой поставке dib не существует.
J
Либо просто rhel либо rhel7
Mr.Smith
у меня есть rhel8
J
это сделно
Смотри содержимое /home/jenkins/rhel/rhel8/env/lib/python3.6/site-packages/diskimage_builder/elements/ Ищи там rhel8.
J
у меня есть rhel8
Ну и что в нем?
Mr.Smith
там папка static
Mr.Smith
с конфигурирующими файлами для yum
Mr.Smith
Mr.Smith
ага
Mr.Smith
и всё
J
В element-deps что?
J
Слушай, если на регулярной основе придется этим заниматься, лучше в натуре поразбирайся как dib устроен, там всё из баш скриптов слеплено и очень несложно)
Mr.Smith
просто rhel написано
J
это разавая операция
Ну, вдруг понадобится образы линуксов кастомные собирать когда-то)
Mr.Smith
В element-deps что?
с этим что то сделать нужно???
J
просто rhel написано
Отлично. Значит что rhel8 зависит от базового rhel. Вот смотри, это элемент rhel: https://github.com/openstack/diskimage-builder/tree/master/diskimage_builder/elements/rhel А вот что он делает на этапе root.d: https://github.com/openstack/diskimage-builder/blob/master/diskimage_builder/elements/rhel/root.d/10-rhel-cloud-image
Mr.Smith
так вот он как раз вот это и не делает
Mr.Smith
BASE_IMAGE_TAR=$BASE_IMAGE_FILE.tgz
J
Вот extract-image, который выполняется в конце. https://github.com/openstack/diskimage-builder/blob/37edd3304448bcf6d6640da838c381d54f24a491/diskimage_builder/elements/sysprep/bin/extract-image
J
BASE_IMAGE_TAR=$BASE_IMAGE_FILE.tgz
Это просто заполнение значения переменной чтобы потом скормить её extract-image: $TMP_HOOKS_PATH/bin/extract-image $BASE_IMAGE_FILE $BASE_IMAGE_TAR $IMAGE_LOCATION $CACHED_IMAGE
J
Собственно всё. Что-то во время extract-image у тебя идет не так на дженкинсе. Вот и смотри что. Если недостаточно того что и так выплевывается в stdout, можешь напихать туда echo значений переменных.
J
Думаю, дальше уже можно разобраться.
Mr.Smith
Благодарю, спасибо большое
Mr.Smith
теперь хоть понятно куда копать
Fedor
А, я посмотрел щас. Оказывается, rhel элемент через жопу работает и ему надо готовый образ пихать из которого он вытянет rootfs.
Там ему ещё и креды в шапку нужны) но справедливости ради, он рабочий был года два назад.
Mr.Smith
Вот тут вот не понятно одно:
Mr.Smith
dib-run-parts Ignoring non-executable files: 50-yum-cache 10-rhel-cloud-image
Mr.Smith
Почему эти файлы не используются? Почему оно не хочет из брать?
Mr.Smith
Мне нужно сделать их исполняемыми?
Mr.Smith
Что именно нужно сделать? Где именно написано это в документации?
Mr.Smith
Я не имею большого опыта работы с этой утилитой как Вы, по этому задаю глупые вопросы
J
dib-run-parts Ignoring non-executable files: 50-yum-cache 10-rhel-cloud-image
Посмотри 10-rhel-cloud-image откуда берется. Есть ли этот скрипт где-то внутри ELEMENTS_PATH. Это скрипт внутри элемента rhel и он должен быть исполняемым. Если он не исполняемый, вероятно, или элемент rhel твои коллеги переделали и либо они либо ты при копировании кастомных элементов ошибись с правами. 50-yum-cache - часть стандартного элемента yum. И он тоже должен быть исполняемым. Проверь нет ли этого скрипта внутри ваших кастомных элементов в ELEMENTS_PATH. В целом, внутри фаз элементов держат только исполняемые скрипты. dib собирает скрипты принадлежащие к одной фазе из всех указанных тобой элементов, сортирует и исполняет по очереди. Потом переходит к следующей фазе. Логика работы довольно простая. https://docs.openstack.org/diskimage-builder/latest/developer/developing_elements.html
J
Что именно нужно сделать? Где именно написано это в документации?
Ну и вот еще для затравки. https://docs.openstack.org/diskimage-builder/latest/developer/design.html
Mr.Smith
Окей, права поправил, теперь он мне говорит - отказано в доступе
Mr.Smith
Mr.Smith
/tmp/dib_build.ZjtmPlSf/hooks/root.d/10-rhel-cloud-image: line 48: /tmp/dib_build.ZjtmPlSf/hooks/bin/extract-image: Permission denied
J
Окей, права поправил, теперь он мне говорит - отказано в доступе
Ну посмотри права на файл /tmp/dib_build.ZjtmPlSf/hooks/bin/extract-image, если dib не подчистил за собой. Почему-то, видать, так выходит что этот хук копируется с правами запрещающими выполнение для пользователя от которого ты запускаешь dib.