Добрый день!
 
Есть задача - автоматизировать сборку в LXD-контейнере с Альтом:
- создаем чистый контейнер из образа;
- настраиваем окружение;
- обновляем систему и доставляем нужные пакеты;
- подкачиваем исходники из Git;
- собираем и забираем результат;
- удаляем контейнер.
 
Делается вся втупую - внешним скриптом (с помощью команд вида lxc exec/file push и т.п., без глубоких ковыряний в самом образе, системе инициализации и пр.)
 
По ходу столкнулся со странным поведением резолвера: даже после полного поднятия сети и __гарантированной__ отработки пинга на mirror.yandex.ru, apt-get еще некоторое время не может этот самый mirror.yandex.ru найти.
 
Подробности - после старта контейнера вставил костыль в виде цикла для ожидания полного поднятия сети:
    while true; do
         ping -c1 mirror.yandex.ru && break;
    done
Цикл отрабатывает (видно визуально), имя mirror.yandex.ru разрешается и пинг проходит.
После этого выполняем apt-get update и получаем 'Can't resolve hostname mirror.yandex.ru' (или как-то так).
Вставленный после цикла update_chrooted --force all не помогает...
Приходится городить еще один костыль в виде sleep 10 - тогда apt-get отрабатывает нормально.
 
Получается - костыль, подпираемый костылем, чего не хотелось бы совсем. Отчего так происходит и есть ли какой-нибудь вменяемый способ это побороть?
 
С уважением,
М.П. Вецало.
---
_______________________________________________
Sysadmins mailing list
Sysadmins@lists.altlinux.org
https://lists.altlinux.org/mailman/listinfo/sysadmins

Ответить