The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Раздел полезных советов: Создание чистого openvz-контейнера ..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Создание чистого openvz-контейнера ..."  +/
Сообщение от auto_tips (??) on 09-Апр-14, 10:22 
Разработчики OpenVZ предлагают [[http://wiki.openvz.org/Download/template/precreated загрузить]] заранее созданные шаблоны контейнеров, но у этих шаблонов есть недостаток - в них присутствует довольно много лишних пакетов, которые не хотелось бы вычищать руками. Помимо этого, в этих шаблонах присутствуют неподписаные пакеты, а так же репозиторий с пакетами-заглушками, цифровая подпись пакетов из которого не проверяется. В общем всё это и заставило сделать свой собственный чистый контейнер с нуля. Далее предлагается скрипт, который в хост-системе на основе centos6 создаёт чистый контейнер с это же самой ОС.

Сам скрипт:


   #!/bin/bash

   ### exit on errors (in pipes too) and verbose execution
   set -o pipefail -e -x
  
   TMPDIR=$(mktemp -d)
   VEID=777
   DESTDIR=/vz/private/${VEID}
  
   ### veid config
   cat << _EOF_ > /etc/vz/conf/${VEID}.conf
   # This config is only valid for decent VSwap-enabled kernel
   # (version 042stab042 or later).
  
   ONBOOT="yes"
  
   # RAM
   PHYSPAGES="0:2G"
  
   # Swap
   SWAPPAGES="0:0G"
  
   # Disk quota parameters (in form of softlimit:hardlimit)
   DISKSPACE="20G:22G"
   DISKINODES="200000:220000"
   QUOTATIME="0"
  
   # CPU fair scheduler parameter
   CPUUNITS="1000"
  
   VE_ROOT="/vz/root/\$VEID"
   VE_PRIVATE="/vz/private/\$VEID"
   OSTEMPLATE="centos-6-secured-x86_64"
   ORIGIN_SAMPLE="basic"
  
   HOSTNAME="localhost"
   SEARCHDOMAIN=""
   NAMESERVER="8.8.8.8 8.8.4.4"
   IP_ADDRESS="10.20.30.40"
  
   CPULIMIT="100"
   CPUS="1"
   _EOF_
  
   ### stop / destroy if exists /  recreate
   vzctl stop ${VEID}
   [[ -d ${DESTDIR} ]] && rm -rf ${DESTDIR}
   mkdir -p ${DESTDIR}
   mkdir -p /vz/root/${VEID}
  
   ### init rpm db
   rpm --root ${DESTDIR} --initdb
  
   ### download packages for create base directory
   yum install -q -y yum-utils
   yumdownloader --destdir ${TMPDIR} centos-release centos-release-cr
  
   ### install base directory rpms
   TO_INSTALL=""
   for i in ${TMPDIR}/*.rpm; do
       TO_INSTALL="${TO_INSTALL} ${i}"
   done
  
   rpm --root ${DESTDIR} -i ${TO_INSTALL}
  
   ### Save random seed
   touch ${DESTDIR}/var/lib/random-seed
   chmod 600 ${DESTDIR}/var/lib/random-seed
   dd if=/dev/urandom of=/var/lib/random-seed count=1 bs=512 2>/dev/null
  
   ### import centos pubkey
   rpm --root ${DESTDIR} --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

   ### install required rpms
   yum --installroot=${DESTDIR} install -q -y postfix filesystem tzdata glibc procps \
    coreutils rpm yum yum-utils udev openssh basesystem bash grep MAKEDEV \
    openssl gnupg2 logrotate rsyslog screen openssh-server openssh-clients \
    info ca-certificates libuuid sed vim-enhanced findutils iproute tmpwatch \
    wget curl patch vixie-cron sysstat htop telnet which diffutils rsync \
    sudo yum-cron psacct lftp tcpdump numactl git vconfig nc xz bzip2 \
    nscd passwd tar

   ### pts only in fstab
   cat << _EOF_ > ${DESTDIR}/etc/fstab
   none     /dev/pts    devpts    gid=5,mode=620    0    0
   _EOF_
   chmod 0644 ${DESTDIR}/etc/fstab
  
   mkdir -p ${DESTDIR}/dev/pts

   ### create devices
   for INPATH in dev etc/udev/devices; do
    /sbin/MAKEDEV -x -d ${DESTDIR}/${INPATH} console core fd full kmem kmsg mem null port \
        ptmx {p,t}ty{a,p}{0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f} random \
        urandom zero ram{,0,1,disk} std{in,out,err}
   done

   ### do not run agetty's
   sed -i 's/^ACTIVE_CONSOLES=\(.*\)/#ACTIVE_CONSOLES=\1\nACTIVE_CONSOLES=""/g' ${DESTDIR}/etc/sysconfig/init

   ### run minimum services
   SERVICES="(network|crond|sshd|sysstat|snmpd|syslog|psacct|udev-post|nscd)"
   chroot ${DESTDIR} "/sbin/chkconfig" "--list" | grep -oP '^\S+' | \
      sort | uniq | egrep -vE "${SERVICES}" | xargs -I{} chroot ${DESTDIR} "/sbin/chkconfig" "{}" "off"
   chroot ${DESTDIR} "/sbin/chkconfig" "--list" | grep -oP '^\S+' | \
      sort | uniq | egrep -E "${SERVICES}" | xargs -I{} chroot ${DESTDIR} "/sbin/chkconfig" "{}" "--level" "2345" "on"

   ### clock/timezone
   cat << _EOF_ > ${DESTDIR}/etc/sysconfig/clock
   ZONE="Europe/Moscow"
   _EOF_
   chroot ${DESTDIR} "/usr/sbin/tzdata-update"

   ### make mtab actual every time
   chroot ${DESTDIR} 'rm' '-fv' '/etc/mtab'
   chroot ${DESTDIR} 'ln' '-s' '/proc/mounts' '/etc/mtab'
  
   ### cleanup
   rm -rf ${TMPDIR}

   ### set locale to UTF
   cat << _EOF_ > ${DESTDIR}/etc/sysconfig/i18n
   LANG="en_US.UTF-8"
   SYSFONT="latarcyrheb-sun16"
   _EOF_
   chroot ${DESTDIR} 'localedef' '-c' '-f' 'UTF-8' '-i' 'en_US' '/usr/lib/locale/en_US.utf8'

   ### TODO:
   ### 1. check ssh keys and delete them
   ### 2. make template.tar.gz

После создания контейнера я удаляю ssh host keys и делаю дамп контейнера утилитой vzdump, а затем клонирую контейнеры через vzrestore. При желании можно сделать шаблон самостоятельно, например как написано [[http://openvz.org/Creating_a_CentOS_6_Template здесь]] или [[https://forum.openvz.org/index.php?t=msg&goto=44422 здесь]].

URL: http://pastebin.com/nFa99bNn
Обсуждается: http://www.opennet.me/tips/info/2829.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Создание чистого openvz-контейнера на основе CentOS 6"  –1 +/
Сообщение от Romik (??) on 09-Апр-14, 10:22 
Вот не понимаю таких статей. Это решение для одного конкретного случая. Зачем его выкладывать на опеннет? Всё равно тот, кто будет решать схожую задачу, либо потратит время на написание своего скрипта с нуля, либо потратит то же время на анализ этого скрипта и его корректировку-доводку под свои требования. В таких вещах велосипедостроение оправдано, а использование чужих велосипедов без доработки рисковано.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Создание чистого openvz-контейнера на основе CentOS 6"  +/
Сообщение от nnoname on 10-Апр-14, 21:24 
Дорогой Ромик, тут статьи на опеннете появляются с перерывами иногда по месяцу. Человек старался и поделился опытом. Скажем спасибо и попросим писать ещё.
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Создание чистого openvz-контейнера на основе CentOS 6"  +/
Сообщение от Michael Shigorin email(ok) on 11-Апр-14, 12:27 
Если что, http://altlinux.org/starterkits#server и http://altlinux.org/m-p (эксперименты по созданию контейнеров на базе centos6 тоже проводились, но были в итоге заброшены).
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

14. "Создание чистого openvz-контейнера на основе CentOS 6"  –1 +/
Сообщение от Аноним (??) on 14-Май-14, 12:00 
Да это ваще никому не интересно в отличие от сабжа.
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

4. "Создание чистого openvz-контейнера на основе CentOS 6"  +/
Сообщение от Анонище on 11-Апр-14, 16:53 
А тем временем, в gentoo:
rc_sys="openvz"

И всё.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Создание чистого openvz-контейнера на основе CentOS 6"  +/
Сообщение от iZEN (ok) on 22-Апр-14, 11:29 
О, опять #!/bin/bash'измы. Ж)
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "Создание чистого openvz-контейнера на основе CentOS 6"  +/
Сообщение от Michael Shigorin email(ok) on 22-Апр-14, 12:30 
> О, опять #!/bin/bash'измы. Ж)

Озвучьте альтернативное предложение по -o pipefail, что ли.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Создание чистого openvz-контейнера на основе CentOS 6"  +/
Сообщение от iZEN (ok) on 22-Апр-14, 17:46 
>> О, опять #!/bin/bash'измы. Ж)
> Озвучьте альтернативное предложение по -o pipefail, что ли.

Вот: https://github.com/frej/fast-export/commit/aaccfba


Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "Создание чистого openvz-контейнера на основе CentOS 6"  +/
Сообщение от Michael Shigorin email(ok) on 22-Апр-14, 21:00 
>> Озвучьте альтернативное предложение по -o pipefail, что ли.
> Вот: https://github.com/frej/fast-export/commit/aaccfba

Это из серии "альтернатива -- утки", а я спрашивал по существу: чем добиться эффекта, когда облом хотя бы одной программы в конвейере (в терминах кода возврата) приведёт к ненулевому коду возврата всего конвейера?  В одном из скриптов моего mkimage-profiles ровно потому и задействован шеллом bash.

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

10. "Создание чистого openvz-контейнера на основе CentOS 6"  +/
Сообщение от Andrey Mitrofanov on 23-Апр-14, 11:09 
>>> Озвучьте альтернативное предложение по -o pipefail, что ли.
>> Вот: https:
>я спрашивал по существу: чем добиться эффекта, когда

Миша! Остановись!! Ты только что спросил патча у iZEN-а. И он тебе ответил. Пасчем. :-O Хотя бы в этот момент _нужно бежать не глядя и сломя. B)

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

11. "Создание чистого openvz-контейнера на основе CentOS 6"  +/
Сообщение от Michael Shigorin email(ok) on 23-Апр-14, 11:18 
>>>> Озвучьте альтернативное предложение по -o pipefail, что ли.
>>> Вот:  
>>я спрашивал по существу: чем добиться эффекта, когда
> Миша! Остановись!! Ты только что спросил патча у iZEN-а.

Не-не, ни разу.  Вопрос был о том, как решить вполне реальную проблему, с которой тоже сталкивался.  Ответ был о том, что гильотин -- лучшее средство от всех проблем.  А за патчами лучше обращаться к разработчикам, понятное дело...

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

9. "Создание чистого openvz-контейнера на основе CentOS 6"  +/
Сообщение от Аноним (??) on 23-Апр-14, 01:41 
Дурень ты айзень.
Я вот ничего против баша не имею если в шебанге честно он и прописан.
А вот когда в шебанге sh а в кишках bash - надо убивать.
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

12. "Создание чистого openvz-контейнера на основе CentOS 6"  +/
Сообщение от An (??) on 24-Апр-14, 17:29 
Поддерживаю
Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

13. "Создание чистого openvz-контейнера на основе CentOS 6"  –1 +/
Сообщение от Аноним (??) on 28-Апр-14, 01:33 
Если уровень знаний не позволяет тебе увидеть проблему, это ещё не значит, что следует начинать оскорблять других комментаторов. Твой Кэп.
Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

17. "Создание чистого openvz-контейнера на основе CentOS 6"  +/
Сообщение от Кретин on 03-Авг-14, 14:44 
а git нафига там? Чистый контейнер, чистый контейнер, ага!
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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