Как построить компоненты локально
Действия
Создайте и обновите новую VM
Создайте новую зону по умолчанию
Проверьте, что новая зона по умолчанию создалась правильно
Создайте зону для получения зависимостей и получите зависимости
Создайте новую зону для создания локального репозитория
Создайте новую зону для сборки компонент
Создайте новую зону для тестовой установки компонент
1. Создайте и обновите новую VM
Для создания новой VM в vmware/virtualbox/kvm воспользуйтесь этой инструкцией.
Для создания VM в vSphere SPB-LABS выполните шаги 1-5 из этой инструкции.
2. Залогиньтесь с правами root и создайте новую зону по умолчанию
Для KVM используйте следующие инструкции:
Для VM в vSphere:
Создайте mountpoint, куда будут монтироваться зоны:
root@dilos:~# zfs create -o mountpoint=/zones rpool/zones
root@dilos:~# mkdir /export/builds
root@dilos:~# apt install reprepro
2. Добавьте пользователя admin:
root@dilos:~# useradd -m -g staff admin
root@dilos:~# passwd admin
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@dilos:~# echo "admin ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers.d/admin
3. Выполните Инструкцию по настройке сети до шага, на котором создаётся зона zone01
.
4. Создайте зону default
, выполнив следующие команды:
root@dilos:~# cat > defzone.cmd <<EOT
create
set zonename=default
set zonepath=/zones/default
set autoboot=false
set ip-type=exclusive
add net
set physical=iz1
set global-nic=vsw0
add property (name=ip,value="192.168.0.1")
add property (name=gateway,value="192.168.0.254")
add property (name=netmask,value="255.255.255.0")
add property (name=primary,value="true")
end
add attr
set name=resolvers
set type=string
set value=8.8.8.8
end
add fs
set dir=/export/home/admin
set special=/export/home/admin
set type=lofs
end
add fs
set dir=/export/builds
set special=/export/builds
set type=lofs
end
commit
verify
exit
EOT
zonecfg -z default -f defzone.cmd
Для установки зоны по умолчанию выполните:
Для автоматизации создания остальных зон и входа в них можно использовать скрипт из Jenkins:
Для этого скопируйте этот код в файл, например, create_zone.sh
и сделайте его выполняемым:
Теперь Вы можете запустить его в формате ./create_zone.sh <zone-name> <zone-ip-domain> <zone-ip-node>
, например!:
./create_zone.sh zone02 192.168.0 3
3. Создайте зону для получения зависимостей и получите зависимости
Создайте папку для репозитория:
Создайте зону и войдите в неё:
Команды ниже выполняются в зоне.
Обновите файл /etc/apt/sources.list
:
Для удобства сбор зависимостей выполняется в директории /data/repo/pkg
:
Чтобы нижеприведённый скрипт заработал, Вам нужно создать два файла (текущее содержимое их можно получить по ссылкам ниже):
list_component
- список компонентlist_pkg_sec
- список для построения компонент
Теперь получите зависимости. Для этого скопируйте этот скрипт в файл, например, get_deps.sh
или выполните следующую команду:
Сделайте его исполняемым и запустите:
4. Создайте новую зону для создания локального репозитория
Создайте зону и войдите в неё:
Команды ниже выполняются в зоне.
Обновите файл /etc/apt/sources.list
:
Установите в зоне необходимые пакеты для работы репозитория:
Создайте директорию, где у вас буду лежать конфигурационные файлы для репозитория:
и создайте конфигурационный файл репозитория:
Выполните эти команды для добавления пакетов *.deb
в репозиторий:
Получите исходные файлы для локального репозитория, для чего создайте файл, например, get_sources.sh
и сделайте его исполняемым (для работы скрипта требуется установленный пакет dpkg-dev):
Теперь запустите его:
5. Создайте новую зону для сборки компонент
Создайте зону и войдите в неё:
Подготовьте зону для сборки компонент. Для этого создайте файл, например, prepare.sh
и сделайте его исполняемым:
Запустите:
6. Постройте компоненты
Скопируйте этот скрипт в файл, например, build_all.sh
или выполните команду:
Сделайте его исполняемым и запустите:
После сборки компонент Вы можете проверить их установку в отдельной новой зоне.