Bryan Kearney
2008-Sep-19 13:01 UTC
[Ovirt-devel] [PATCH-appliance] Rename ovirt-appliance to be ovirt-appliance-image and the AOS tooling in the ovirt-recipe rpo
--- Makefile.am | 11 +- autogen.sh | 2 +- common-install.ks | 22 --- common-pkgs.ks | 28 ---- common-post.ks | 88 ----------- configure.ac | 2 +- ovirt-appliance-image.ks | 159 ++++++++++++++++++++ ovirt-appliance-image.spec | 103 +++++++++++++ ovirt-appliance.ks | 349 -------------------------------------------- ovirt-appliance.spec | 101 ------------- 10 files changed, 269 insertions(+), 596 deletions(-) delete mode 100644 common-install.ks delete mode 100644 common-pkgs.ks delete mode 100644 common-post.ks create mode 100644 ovirt-appliance-image.ks create mode 100644 ovirt-appliance-image.spec delete mode 100644 ovirt-appliance.ks delete mode 100644 ovirt-appliance.spec diff --git a/Makefile.am b/Makefile.am index a3553c2..d1f9ebf 100644 --- a/Makefile.am +++ b/Makefile.am @@ -17,13 +17,10 @@ EXTRA_DIST = \ .gitignore \ - common-install.ks \ - common-pkgs.ks \ - common-post.ks \ create-ovirt-appliance \ gettree.sh \ - ovirt-appliance.ks \ - ovirt-appliance.spec \ + ovirt-appliance-image.ks \ + ovirt-appliance-image.spec \ release.mk \ version @@ -32,10 +29,12 @@ include release.mk # FEDORA_URL env var can be set to the root of a fedora mirror # OVIRT_URL env var can be set to the root of an ovirt.org mirror # SKIP_COMPRESS_IMAGE env var an be set to 1 to skip qcow compression +# THINCRUST_URL env var can be set to the root of a thuncrust.org mirror RPM_FLAGS += \ --define "fedora_url $(FEDORA_URL)" \ --define "ovirt_url $(OVIRT_URL)" \ - --define "skip_compress_image $(SKIP_COMPRESS_IMAGE)" + --define "skip_compress_image $(SKIP_COMPRESS_IMAGE)" \ + --define "thincrust_url ${THINCRUST_URL}" pkg_name = $(PACKAGE_NAME) .PHONY: tar diff --git a/autogen.sh b/autogen.sh index 0d2c99c..1f4aeeb 100755 --- a/autogen.sh +++ b/autogen.sh @@ -35,7 +35,7 @@ THEDIR=`pwd` test $die = 1 && exit 1 - test -f ovirt-appliance.spec || { + test -f ovirt-appliance-image.spec || { echo "You must run this script in the top-level directory" exit 1 } diff --git a/common-install.ks b/common-install.ks deleted file mode 100644 index c55303b..0000000 --- a/common-install.ks +++ /dev/null @@ -1,22 +0,0 @@ -lang en_US.UTF-8 -keyboard us -network --device eth0 --bootproto dhcp -rootpw --iscrypted Xa8QeYfWrtscM -firewall --disabled -authconfig --enableshadow --enablemd5 -selinux --disabled -services --disabled=libvirtd,postgresql --enabled=network,tgtd,nfs,iptables -timezone --utc UTC -text - -bootloader --location=mbr --driveorder=sda -# The following is the partition information you requested -# Note that any partitions you deleted are not expressed -# here so unless you clear all partitions first, this is -# not guaranteed to work -zerombr -clearpart --all --drives=sda -part /boot --ondisk=sda --fstype=ext3 --size=100 -part / --ondisk=sda --fstype=ext3 --size=20000 -part swap --ondisk=sda --fstype=swap --size=512 -reboot diff --git a/common-pkgs.ks b/common-pkgs.ks deleted file mode 100644 index 226085d..0000000 --- a/common-pkgs.ks +++ /dev/null @@ -1,28 +0,0 @@ - at core -kernel -cronie -policycoreutils -chkconfig -rootfiles -dhclient -libvirt-python -openssh-clients -openssh-server -nfs-utils -collectd -collectd-rrdtool -ipa-server -ipa-admintools -scsi-target-utils -iscsi-initiator-utils -ovirt-server -ovirt-node-image-pxe -ovirt-release -rhpl -cobbler -rubygem-cobbler -bind-utils -augeas -syslinux -/usr/sbin/lokkit -curl diff --git a/common-post.ks b/common-post.ks deleted file mode 100644 index a5d79ce..0000000 --- a/common-post.ks +++ /dev/null @@ -1,88 +0,0 @@ -# -*-Shell-script-*- -PATH=/sbin:/usr/sbin:/bin:/usr/bin -export PATH - -# pretty login screen.. -g=$(printf '\33[1m\33[32m') # similar to g=$(tput bold; tput setaf 2) -n=$(printf '\33[m') # similar to n=$(tput sgr0) -cat <<EOF > /etc/issue - - 888 888 ${g}d8b$n 888 - 888 888 ${g}Y8P$n 888 - 888 888 888 - .d88b. Y88b d88P 888 888d888 888888 - d88''88b Y88b d88P 888 888P' 888 - 888 888 Y88o88P 888 888 888 - Y88..88P Y888P 888 888 Y88b. - 'Y88P' Y8P 888 888 'Y888 - - Admin Node - - Virtualization just got the ${g}Green Light$n - -EOF -cp /etc/issue /etc/issue.net - -cat > /etc/init.d/ovirt-appliance-first-run << \EOF -#!/bin/bash -# -# ovirt-appliance-first-run First run configuration for oVirt Appliance -# -# chkconfig: 3 96 01 -# description: ovirt appliance first run configuration -# - -# Source functions library -. /etc/init.d/functions - -start() { - echo -n "Starting ovirt-appliance-first-run: " - - ovirt-server-install > /var/log/ovirt-appliance-first-run.log 2>&1 - - RETVAL=$? - if [ $RETVAL -eq 0 ]; then - echo_success - else - echo_failure - fi - echo -} - -case "$1" in - start) - start - ;; - *) - echo "Usage: ovirt-appliance-first-run {start}" - exit 2 -esac - -chkconfig ovirt-appliance-first-run off -EOF -chmod +x /etc/init.d/ovirt-appliance-first-run -chkconfig ovirt-appliance-first-run on - -cat > /etc/yum.repos.d/ovirt.repo << \EOF -[ovirt] -name=ovirt -baseurl=http://ovirt.org/repos/ovirt/9/$basearch/ -enabled=1 -gpgcheck=0 -EOF - -# XXX default configuration db -cat > /var/www/html/ovirt-cfgdb << \EOF -rm /files/etc/sysconfig/network-scripts/ifcfg-eth0 -set /files/etc/sysconfig/network-scripts/ifcfg-eth0/DEVICE eth0 -set /files/etc/sysconfig/network-scripts/ifcfg-eth0/ONBOOT yes -set /files/etc/sysconfig/network-scripts/ifcfg-eth0/BRIDGE ovirtbr0 -rm /files/etc/sysconfig/network-scripts/ifcfg-ovirtbr0 -set /files/etc/sysconfig/network-scripts/ifcfg-ovirtbr0/DEVICE ovirtbr0 -set /files/etc/sysconfig/network-scripts/ifcfg-ovirtbr0/BOOTPROTO dhcp -set /files/etc/sysconfig/network-scripts/ifcfg-ovirtbr0/ONBOOT y -set /files/etc/sysconfig/network-scripts/ifcfg-ovirtbr0/TYPE Bridge -set /files/etc/sysconfig/network-scripts/ifcfg-ovirtbr0/PEERNTP yes -set /files/etc/sysconfig/network-scripts/ifcfg-ovirtbr0/DELAY 0 -EOF - diff --git a/configure.ac b/configure.ac index 3f0fa6e..f62c4af 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ # note: the version number here is overridden by the one in release.mk -AC_INIT([ovirt-appliance], [0.1], [ovirt-devel at redhat.com]) +AC_INIT([ovirt-appliance-image], [0.1], [ovirt-devel at redhat.com]) AM_INIT_AUTOMAKE([-Wall -Werror foreign]) AC_CONFIG_FILES([Makefile]) diff --git a/ovirt-appliance-image.ks b/ovirt-appliance-image.ks new file mode 100644 index 0000000..dbd45e0 --- /dev/null +++ b/ovirt-appliance-image.ks @@ -0,0 +1,159 @@ +install + +lang en_US.UTF-8 +keyboard us +network --device eth0 --bootproto dhcp +rootpw --iscrypted Xa8QeYfWrtscM +firewall --disabled +authconfig --enableshadow --enablemd5 +selinux --disabled +services --disabled=libvirtd,postgresql --enabled=network,tgtd,nfs,iptables +timezone --utc UTC +text + +bootloader --location=mbr --driveorder=sda +# The following is the partition information you requested +# Note that any partitions you deleted are not expressed +# here so unless you clear all partitions first, this is +# not guaranteed to work +zerombr +clearpart --all --drives=sda +part /boot --ondisk=sda --fstype=ext3 --size=100 +part / --ondisk=sda --fstype=ext3 --size=20000 +part swap --ondisk=sda --fstype=swap --size=512 +reboot + +network --device=eth1 --bootproto=static --ip=192.168.50.2 --netmask=255.255.255.0 --onboot=on --nameserver=192.168.50.2 --hostname=management.priv.ovirt.org + +%include repos.ks + +%packages --nobase +%include /usr/share/appliance-tools/base-pkgs.ks +ovirt-appliance +lokkit + +%post + exec > /root/kickstart-post.log 2>&1 + + # the code to contact the host we are running on and make it configure itself + # note that this has to be done in rc.local (as opposed to ovirt-wui-dev) + # because when ovirt-wui-dev starts, the host-browser is not yet running + cat >> /etc/rc.d/rc.local << \EOF +# Try to contact the host we are running on; if we succeed, we'll use it as +# one of the managed nodes; if not, no big deal +exec 3<> /dev/tcp/192.168.50.1/7777 +echo "AWAKE" 1>&3 +exec 3<> /dev/tcp/192.168.50.1/7777 +echo "IDENTIFY" 1>&3 +EOF + + # make sure to update the /etc/hosts with the list of all possible DHCP + # addresses we can hand out; dnsmasq uses this + sed -i -e 's/management\.priv\.ovirt\.org//' /etc/hosts + echo "192.168.50.2 management.priv.ovirt.org" >> /etc/hosts + for i in `seq 3 252` ; do + echo "192.168.50.$i node$i.priv.ovirt.org" >> /etc/hosts + done + + # Create sparse files for iSCSI backing stores + mkdir -p /ovirtiscsi + for i in `seq 3 5`; do + dd if=/dev/null of=/ovirtiscsi/iSCSI$i bs=1 count=1 seek=64M + done + + # make an NFS directory with some small, fake disks and export them via NFS + # to show off the NFS part of the WUI + mkdir -p /ovirtnfs + for i in `seq 1 5`; do + dd if=/dev/zero of=/ovirtnfs/disk$i.dsk bs=1 count=1 seek=1G + done + echo "/ovirtnfs 192.168.50.0/24(rw,no_root_squash)" >> /etc/exports + + # The ace stuff. + /sbin/chkconfig --level 35 ace on + mkdir /etc/sysconfig/ace + echo ovirt >> /etc/sysconfig/ace/appliancename + /sbin/chkconfig --add acpid + +%end + +%post --nochroot + set -e + python -c ' +from iniparse.ini import INIConfig +ini = INIConfig() +fp = open("tmp/tree/.treeinfo") +ini.readfp(fp) +fp.close() +family = ini.general.family +version = ini.general.version +arch = ini.general.arch +print "%s %s %s" % (family, version, arch)' | ( read os ver arch + dest=$INSTALL_ROOT/var/www/cobbler/ks_mirror/$os-$ver-$arch + printf "Importing $os-$ver-$arch ..." + cp -a tmp/tree $dest + url=http://download.fedoraproject.org/pub/fedora/linux + cat >> $INSTALL_ROOT/etc/rc.d/rc.cobbler-import << EOF +#!/bin/sh +# Import Cobbler profiles on first boot + +exec > /root/cobbler-import.log 2>&1 + +# run only once +chmod -x \$0 +set -x + +cobbler import --name=$os-$ver --arch=$arch \ + --path=/var/www/cobbler/ks_mirror/$os-$ver-$arch +cobbler repo add --name=f9-$arch --arch=$arch --mirror-locally=0 \ + --mirror=$url/releases/9/Everything/$arch/os +cobbler repo add --name=f9-$arch-updates --arch=$arch --mirror-locally=0 \ + --mirror=$url/updates/9/$arch +sed -e 's#^url .*#url --url=$url/releases/$ver/$os/$arch/os#' \ + -e 's#^reboot.*#poweroff#' /etc/cobbler/sample_end.ks \ + > /etc/cobbler/sample-$os-$ver-$arch.ks +cobbler profile edit --name=$os-$ver-$arch \ + --repos="f9-$arch f9-$arch-updates" \ + --kickstart=/etc/cobbler/sample-$os-$ver-$arch.ks + +# TODO extract Node boot params from /var/lib/tftboot/pxelinux.cfg/default +# before Cobbler overwrites it +cobbler distro add --name="oVirt-Node-$arch" --arch=$arch \ + --initrd=/var/lib/tftpboot/initrd0.img --kernel=/var/lib/tftpboot/vmlinuz0 \ + --kopts="rootflags=loop root=/ovirt-node-image.iso rootfstype=iso9660 ro console=ttyS0,115200n8 console=tty0" +cobbler profile add --name=oVirt-Node-$arch --distro=oVirt-Node-$arch +cobbler system add --netboot-enabled=1 --profile=oVirt-Node-$arch \ + --name=node3 --mac=00:16:3e:12:34:57 +cobbler system add --netboot-enabled=1 --profile=oVirt-Node-$arch \ + --name=node4 --mac=00:16:3e:12:34:58 +cobbler system add --netboot-enabled=1 --profile=oVirt-Node-$arch \ + --name=node5 --mac=00:16:3e:12:34:59 +set +x +echo "Add new oVirt Nodes as Cobbler systems to make them PXE boot oVirt Node image directly." +echo "oVirt-Node-$arch is also default boot option in Cobbler menu" +EOF + chmod +x $INSTALL_ROOT/etc/rc.d/rc.cobbler-import + echo "[ -x /etc/rc.d/rc.cobbler-import ] && /etc/rc.d/rc.cobbler-import" \ + >> $INSTALL_ROOT/etc/rc.d/rc.local + printf "oVirt-Node-$arch" > $INSTALL_ROOT/tmp/cobbler-default + echo done + ) +%end + +# Cobbler configuration +%post + exec >> /root/kickstart-post.log 2>&1 + # TODO use Augeas 0.3.0 Inifile lens + sed -i -e "s/^module = authn_denyall.*/module = authn_configfile/" \ + /etc/cobbler/modules.conf + sed -i -e "s/^server:.*/server: '192.168.50.2'/" \ + -e "s/^next_server:.*/next_server: '192.168.50.2'/" \ + /etc/cobbler/settings + sed -i -e '/kernel /a \\tIPAPPEND 2' /etc/cobbler/pxesystem.template + sed -i -e "s/^ONTIMEOUT.*/ONTIMEOUT $(cat /tmp/cobbler-default)/" \ + /etc/cobbler/pxedefault.template +%end + +%post --nochroot + cp ovirt-splash.xpm.gz $INSTALL_ROOT/boot/grub/splash.xpm.gz +%end diff --git a/ovirt-appliance-image.spec b/ovirt-appliance-image.spec new file mode 100644 index 0000000..d7aea2f --- /dev/null +++ b/ovirt-appliance-image.spec @@ -0,0 +1,103 @@ +%{!?ovirt_cache_dir: %define ovirt_cache_dir /var/tmp/ovirt-cache} +%{!?ovirt_local_repo: %define ovirt_local_repo file://%{ovirt_cache_dir}/ovirt} +%{!?ovirt_url: %define ovirt_url http://ovirt.org/repos/ovirt} +%{!?thincrust_url: %define thincrust_url http://www.thincrust.net/repo} +%{?fedora_url: %define fedora_tree_url %{fedora_url}/releases/%{fedora}/Fedora/%{_arch}/os} +%{!?fedora_tree_url: %define fedora_tree_url http://download.fedoraproject.org/pub/fedora/linux/releases/%{fedora}/Fedora/%{_arch}/os} +%{!?bad_pkgs: %define bad_pkgs rubygem-rails,rubygem-activesupport,rubygem-activerecord} +%define fedora_mirror http://mirrors.fedoraproject.org/mirrorlist + +Summary: oVirt Appliance Image +Name: ovirt-appliance-image +Source1: version +Version: %(echo `awk '{ print $1 }' %{SOURCE1}`) +Release: %(echo `awk '{ print $2 }' %{SOURCE1}`)%{?dist} +Source0: %{name}-%{version}.tar.gz +License: Fedora +Group: Applications/System +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot +URL: http://ovirt.org/ +BuildRequires: appliance-tools +BuildRequires: livecd-tools >= 017 +BuildRequires: syslinux +BuildRequires: qemu-img +BuildRequires: wget +# FIXME: libvirt and kvm require ovirt specific patches presently due to +# the fact that migration has not been fixed upstream. Once upstream migration +# is fixed, these Requires should be fixed. +Requires: libvirt >= 0.4.4-2ovirt2 +Requires: kvm >= 72-3ovirt3 +Requires: /usr/bin/qemu-img + +%define app_root %{_datadir}/%{name} + +# disable debuginfo, makes no sense for appliance and it is created empty anyway +%define debug_package %{nil} + +%description +The oVirt Appliance image and scripts to install on a Fedora Host + +%prep +%setup -q + +%build +if [ -n "%{?fedora_url}" ]; then + cat > repos.ks << EOF +repo --name=f%{fedora} --baseurl=%{fedora_url}/releases/%{fedora}/Everything/%{_arch}/os +repo --name=f%{fedora}-updates --baseurl=%{fedora_url}/updates/%{fedora}/%{_arch} --excludepkgs=%{bad_pkgs} +repo --name=f%{fedora}-updates-newkey --baseurl=%{fedora_url}/updates/%{fedora}/%{_arch}.newkey --excludepkgs=%{bad_pkgs} +EOF +else + cat > repos.ks << EOF +repo --name=f%{fedora} --mirrorlist=%{fedora_mirror}?repo=fedora-%{fedora}&arch=%{_arch} +repo --name=f%{fedora}-updates --mirrorlist=%{fedora_mirror}?repo=updates-released-f%{fedora}&arch=%{_arch} --excludepkgs=%{bad_pkgs} +repo --name=f%{fedora}-updates-newkey --mirrorlist=%{fedora_mirror}?repo=updates-released-f%{fedora}.newkey&arch=%{_arch} --excludepkgs=%{bad_pkgs} +EOF +fi + +cat >> repos.ks << EOF +repo --name=ovirt-org --baseurl=%{ovirt_url}/%{fedora}/%{_arch} +repo --name=ovirt-local --baseurl=%{ovirt_local_repo} +repo --name=thincrust-org --baseurl=%{thincrust_url}/noarch +EOF + +mkdir -p %{ovirt_cache_dir}/appliance-tmp/tree +mkdir -p %{ovirt_cache_dir}/yum +./gettree.sh %{fedora_tree_url} %{ovirt_cache_dir}/appliance-tmp/tree +ln -s %{ovirt_cache_dir}/appliance-tmp tmp +sudo su - -c "cd $(pwd) && appliance-creator --config ovirt-appliance-image.ks --name ovirt-appliance \ + --tmpdir='%{ovirt_cache_dir}/appliance-tmp' --cache='%{ovirt_cache_dir}/yum'" +sudo su - -c "cd $(pwd) && chown -R $USER *" +if [ -n "%{?skip_compress_image}" ]; then + mv ovirt-appliance-sda.raw ovirt-appliance.img +else + qemu-img convert -c ovirt-appliance-sda.raw -O qcow2 ovirt-appliance-sda.qcow + mv ovirt-appliance-sda.qcow ovirt-appliance.img +fi + +%install +%{__rm} -rf %{buildroot} +mkdir %{buildroot} + +%{__install} -d -m0755 %{buildroot}%{app_root} +%{__install} -p -m0644 COPYING %{buildroot}%{app_root} +%{__install} -d -m0755 %{buildroot}%{_localstatedir}/lib/libvirt/images +%{__install} -p -m0644 ovirt-appliance.img %{buildroot}%{_localstatedir}/lib/libvirt/images +%{__install} -d -m0755 %{buildroot}%{_sbindir} +%{__install} -p -m0755 create-ovirt-appliance %{buildroot}%{_sbindir} + +%clean +%{__rm} -rf %{buildroot} + +%files +%defattr(-,root,root,0644) +%{app_root}/COPYING +%{_localstatedir}/lib/libvirt/images/ovirt-appliance.img +%defattr(-,root,root,0755) +%{_sbindir}/create-ovirt-appliance + +%changelog +* Sun Sep 14 2008 Perry Myers <pmyers at redhat.com> 0.92-1 +- Added Requires on libvirt/kvm +* Fri Sep 05 2008 Perry Myers <pmyers at redhat.com> 0.92-1 +- Initial build. diff --git a/ovirt-appliance.ks b/ovirt-appliance.ks deleted file mode 100644 index faa0bd4..0000000 --- a/ovirt-appliance.ks +++ /dev/null @@ -1,349 +0,0 @@ -install - -%include common-install.ks - -network --device=eth1 --bootproto=static --ip=192.168.50.2 --netmask=255.255.255.0 --onboot=on --nameserver=192.168.50.2 --hostname=management.priv.ovirt.org - -%include repos.ks - -%packages --nobase - -%include common-pkgs.ks - -%post -exec > /root/kickstart-post.log 2>&1 - -%include common-post.ks - -# FIXME [PATCH] fix SelinuxConfig firewall side-effect -lokkit -f --nostart --disabled -# FIXME imgcreate.kickstart.NetworkConfig doesn't store nameserver into ifcfg-* -# only in resolv.conf which gets overwritten by dhclient-script -augtool <<EOF -set /files/etc/sysconfig/network-scripts/ifcfg-eth0/PEERDNS no -set /files/etc/sysconfig/network-scripts/ifcfg-eth1/DNS1 192.168.50.2 -save -EOF - -# the code to contact the host we are running on and make it configure itself -# note that this has to be done in rc.local (as opposed to ovirt-wui-dev) -# because when ovirt-wui-dev starts, the host-browser is not yet running -cat >> /etc/rc.d/rc.local << \EOF -# Try to contact the host we are running on; if we succeed, we'll use it as -# one of the managed nodes; if not, no big deal -exec 3<> /dev/tcp/192.168.50.1/7777 -echo "AWAKE" 1>&3 -exec 3<> /dev/tcp/192.168.50.1/7777 -echo "IDENTIFY" 1>&3 -EOF - -# make sure to update the /etc/hosts with the list of all possible DHCP -# addresses we can hand out; dnsmasq uses this -sed -i -e 's/management\.priv\.ovirt\.org//' /etc/hosts -echo "192.168.50.1 physical.priv.ovirt.org" >> /etc/hosts -echo "192.168.50.2 management.priv.ovirt.org" >> /etc/hosts -for i in `seq 3 252` ; do - echo "192.168.50.$i node$i.priv.ovirt.org" >> /etc/hosts -done - -# Enable forwarding so this node can act as a router for the .50 network -sed -i 's/net.ipv4.ip_forward = .*/net.ipv4.ip_forward = 1/' /etc/sysctl.conf -cat > /etc/sysconfig/iptables << EOF -*nat --A POSTROUTING -o eth0 -j MASQUERADE -COMMIT -EOF - -# Create sparse files for iSCSI backing stores -mkdir -p /ovirtiscsi -for i in `seq 3 5`; do - dd if=/dev/null of=/ovirtiscsi/iSCSI$i bs=1 count=1 seek=3G -done - -# make an NFS directory with some small, fake disks and export them via NFS -# to show off the NFS part of the Server -mkdir -p /ovirtnfs -for i in `seq 1 3`; do - dd if=/dev/zero of=/ovirtnfs/disk$i.dsk bs=1 count=1 seek=3G -done -echo "/ovirtnfs 192.168.50.0/24(rw,no_root_squash)" >> /etc/exports - -# make collectd.conf. -cat > /etc/collectd.conf << \EOF -LoadPlugin network -LoadPlugin logfile -LoadPlugin rrdtool -LoadPlugin unixsock - -<Plugin logfile> - LogLevel info - File STDOUT -</Plugin> - -<Plugin network> - Listen "0.0.0.0" -</Plugin> - -<Plugin rrdtool> - DataDir "/var/lib/collectd/rrd" - CacheTimeout 120 - CacheFlush 900 -</Plugin> - -<Plugin unixsock> - SocketFile "/var/lib/collectd/unixsock" -</Plugin> - -EOF - - -principal=ovirtadmin -password=ovirt -first_run_file=/etc/init.d/ovirt-server-appliance-first-run -sed -e "s, at principal@,$principal," \ - -e "s, at password@,$password,g" \ - > $first_run_file << \EOF -#!/bin/bash -# -# ovirt-server-appliance-first-run First run configuration for oVirt Server Appliance -# -# chkconfig: 3 95 01 -# description: ovirt server appliance first run configuration -# - -# Source functions library -. /etc/init.d/functions - -export PATH=/usr/kerberos/bin:$PATH - -start() { - echo -n "Starting ovirt-server-appliance-first-run: " - ( - # workaround for https://bugzilla.redhat.com/show_bug.cgi?id=451936 - sed -i '/\[kdcdefaults\]/a \ kdc_ports = 88' /usr/share/ipa/kdc.conf.template - # set up freeipa - ipa-server-install -r PRIV.OVIRT.ORG -p @password@ -P @password@ -a @password@ \ - --hostname management.priv.ovirt.org -u dirsrv -U - - # workaround for https://bugzilla.redhat.com/show_bug.cgi?id=459061 - # note: this has to happen after ipa-server-install or the templating - # feature in ipa-server-install chokes on the characters in the regexp - # we add here. - sed -i -e 's#<Proxy \*>#<ProxyMatch ^.*/ipa/ui.*$>#' \ - /etc/httpd/conf.d/ipa.conf - sed -i -e 's#</Proxy>#</ProxyMatch>#' /etc/httpd/conf.d/ipa.conf - # workaround for https://bugzilla.redhat.com/show_bug.cgi?id=459209 - sed -i -e 's/^/#/' /etc/httpd/conf.d/ipa-rewrite.conf - service httpd restart - # now create the ovirtadmin user - echo @password@|kinit admin - # change max username length policy - ldapmodify -h management.priv.ovirt.org -p 389 -Y GSSAPI <<LDAP -dn: cn=ipaConfig,cn=etc,dc=priv,dc=ovirt,dc=org -changetype: modify -replace: ipaMaxUsernameLength -ipaMaxUsernameLength: 12 -LDAP - ipa-adduser -f Ovirt -l Admin -p @password@ @principal@ - # make ovitadmin also an IPA admin - ipa-modgroup -a ovirtadmin admins - ipa-moduser --setattr krbPasswordExpiration=19700101000000Z @principal@ - - ) > /var/log/ovirt-server-appliance-first-run.log 2>&1 - RETVAL=$? - if [ $RETVAL -eq 0 ]; then - echo_success - else - echo_failure - fi - echo -} - -case "$1" in - start) - start - ;; - *) - echo "Usage: ovirt-server-appliance-first-run {start}" - exit 2 -esac - -chkconfig ovirt-server-appliance-first-run off -EOF -chmod +x $first_run_file -chkconfig ovirt-server-appliance-first-run on - -cat > /etc/init.d/ovirt-server-appliance << \EOF -#!/bin/bash -# -# ovirt-server-appliance oVirt Server Appliance service -# -# chkconfig: 3 60 40 -# description: ovirt server Appliance service -# - -# Source functions library -. /etc/init.d/functions - -start() { - echo -n "Starting ovirt-server-appliance: " - dnsmasq -i eth1 -F 192.168.50.6,192.168.50.252 \ - -G 00:16:3e:12:34:57,192.168.50.3 -G 00:16:3e:12:34:58,192.168.50.4 \ - -G 00:16:3e:12:34:59,192.168.50.5 \ - -s priv.ovirt.org \ - -W _ovirt._tcp,management.priv.ovirt.org,80 \ - -W _ipa._tcp,management.priv.ovirt.org,80 \ - -W _ldap._tcp,management.priv.ovirt.org,389 \ - -W _collectd._tcp,management.priv.ovirt.org,25826 \ - -W _identify._tcp,management.priv.ovirt.org,12120 \ - --enable-tftp --tftp-root=/var/lib/tftpboot -M pxelinux.0 \ - -O option:router,192.168.50.2 -O option:ntp-server,192.168.50.2 \ - --dhcp-option=12 \ - -R --local /priv.ovirt.org/ --server 192.168.122.1 - - # Set up the fake iscsi target - tgtadm --lld iscsi --op new --mode target --tid 1 \ - -T ovirtpriv:storage - - # - # Now associate them to the backing stores - # - tgtadm --lld iscsi --op new --mode logicalunit --tid 1 \ - --lun 1 -b /ovirtiscsi/iSCSI3 - tgtadm --lld iscsi --op new --mode logicalunit --tid 1 \ - --lun 2 -b /ovirtiscsi/iSCSI4 - tgtadm --lld iscsi --op new --mode logicalunit --tid 1 \ - --lun 3 -b /ovirtiscsi/iSCSI5 - - # - # Now make them available - # - tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL - - echo_success - echo -} - -stop() { - echo -n "Stopping ovirt-server-appliance: " - - # stop access to the iscsi target - tgtadm --lld iscsi --op unbind --mode target --tid 1 -I ALL - - # unbind the LUNs - tgtadm --lld iscsi --op delete --mode logicalunit --tid 1 --lun 3 - tgtadm --lld iscsi --op delete --mode logicalunit --tid 1 --lun 2 - tgtadm --lld iscsi --op delete --mode logicalunit --tid 1 --lun 1 - - # shutdown the target - tgtadm --lld iscsi --op delete --mode target --tid 1 - - kill $(cat /var/run/dnsmasq.pid) - - echo_success - echo -} - -case "$1" in - start) - start - ;; - stop) - stop - ;; - restart) - stop - start - ;; - *) - echo "Usage: ovirt-server-appliance {start|stop|restart}" - exit 2 -esac -EOF -chmod +x /etc/init.d/ovirt-server-appliance -chkconfig ovirt-server-appliance on - -%end - -%post --nochroot - # distribution tree is ready in tmp/tree - set -e - python -c ' -from iniparse.ini import INIConfig -ini = INIConfig() -fp = open("tmp/tree/.treeinfo") -ini.readfp(fp) -fp.close() -family = ini.general.family -version = ini.general.version -arch = ini.general.arch -print "%s %s %s" % (family, version, arch)' | ( read os ver arch - dest=$INSTALL_ROOT/var/www/cobbler/ks_mirror/$os-$ver-$arch - printf "Importing $os-$ver-$arch ..." - cp -a tmp/tree $dest - url=http://download.fedoraproject.org/pub/fedora/linux - cat >> $INSTALL_ROOT/etc/rc.d/rc.cobbler-import << EOF -#!/bin/sh -# Import Cobbler profiles on first boot - -exec > /root/cobbler-import.log 2>&1 - -# run only once -chmod -x \$0 -set -x - -cobbler import --name=$os-$ver --arch=$arch \ - --path=/var/www/cobbler/ks_mirror/$os-$ver-$arch -cobbler repo add --name=f9-$arch --arch=$arch --mirror-locally=0 \ - --mirror=$url/releases/9/Everything/$arch/os -cobbler repo add --name=f9-$arch-updates --arch=$arch --mirror-locally=0 \ - --mirror=$url/updates/9/$arch -sed -e 's#^url .*#url --url=$url/releases/$ver/$os/$arch/os#' \ - -e 's#^reboot.*#poweroff#' /etc/cobbler/sample_end.ks \ - > /etc/cobbler/sample-$os-$ver-$arch.ks -cobbler profile edit --name=$os-$ver-$arch \ - --repos="f9-$arch f9-$arch-updates" \ - --kickstart=/etc/cobbler/sample-$os-$ver-$arch.ks - -# TODO extract Node boot params from /var/lib/tftboot/pxelinux.cfg/default -# before Cobbler overwrites it -cobbler distro add --name="oVirt-Node-$arch" --arch=$arch \ - --initrd=/var/lib/tftpboot/initrd0.img --kernel=/var/lib/tftpboot/vmlinuz0 \ - --kopts="rootflags=loop root=/ovirt-node-image.iso rootfstype=iso9660 ro console=ttyS0,115200n8 console=tty0" -cobbler profile add --name=oVirt-Node-$arch --distro=oVirt-Node-$arch -cobbler system add --netboot-enabled=1 --profile=oVirt-Node-$arch \ - --name=node3 --mac=00:16:3e:12:34:57 -cobbler system add --netboot-enabled=1 --profile=oVirt-Node-$arch \ - --name=node4 --mac=00:16:3e:12:34:58 -cobbler system add --netboot-enabled=1 --profile=oVirt-Node-$arch \ - --name=node5 --mac=00:16:3e:12:34:59 -set +x -echo "Add new oVirt Nodes as Cobbler systems to make them PXE boot oVirt Node image directly." -echo "oVirt-Node-$arch is also default boot option in Cobbler menu" -EOF - chmod +x $INSTALL_ROOT/etc/rc.d/rc.cobbler-import - echo "[ -x /etc/rc.d/rc.cobbler-import ] && /etc/rc.d/rc.cobbler-import" \ - >> $INSTALL_ROOT/etc/rc.d/rc.local - printf "oVirt-Node-$arch" > $INSTALL_ROOT/tmp/cobbler-default - echo done - ) -%end - -# Cobbler configuration -%post - exec >> /root/kickstart-post.log 2>&1 - # ovirt/ovirt - echo ovirt:Cobbler:68db208a546dcedf34edf0b4fe0ab1f2 > /etc/cobbler/users.digest - # make cobbler check happier - mkdir -p /etc/vsftpd - touch /etc/vsftpd/vsftpd.conf - # TODO use Augeas 0.3.0 Inifile lens - sed -i -e "s/^module = authn_denyall.*/module = authn_configfile/" \ - /etc/cobbler/modules.conf - sed -i -e "s/^server:.*/server: '192.168.50.2'/" \ - -e "s/^next_server:.*/next_server: '192.168.50.2'/" \ - /etc/cobbler/settings - sed -i -e '/kernel /a \\tIPAPPEND 2' /etc/cobbler/pxesystem.template - sed -i -e "s/^ONTIMEOUT.*/ONTIMEOUT $(cat /tmp/cobbler-default)/" \ - /etc/cobbler/pxedefault.template -%end diff --git a/ovirt-appliance.spec b/ovirt-appliance.spec deleted file mode 100644 index 8a2158e..0000000 --- a/ovirt-appliance.spec +++ /dev/null @@ -1,101 +0,0 @@ -%{!?ovirt_cache_dir: %define ovirt_cache_dir /var/tmp/ovirt-cache} -%{!?ovirt_local_repo: %define ovirt_local_repo file://%{ovirt_cache_dir}/ovirt} -%{!?ovirt_url: %define ovirt_url http://ovirt.org/repos/ovirt} -%{?fedora_url: %define fedora_tree_url %{fedora_url}/releases/%{fedora}/Fedora/%{_arch}/os} -%{!?fedora_tree_url: %define fedora_tree_url http://download.fedoraproject.org/pub/fedora/linux/releases/%{fedora}/Fedora/%{_arch}/os} -%{!?bad_pkgs: %define bad_pkgs rubygem-rails,rubygem-activesupport,rubygem-activerecord} -%define fedora_mirror http://mirrors.fedoraproject.org/mirrorlist - -Summary: oVirt Appliance -Name: ovirt-appliance -Source1: version -Version: %(echo `awk '{ print $1 }' %{SOURCE1}`) -Release: %(echo `awk '{ print $2 }' %{SOURCE1}`)%{?dist} -Source0: %{name}-%{version}.tar.gz -License: Fedora -Group: Applications/System -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot -URL: http://ovirt.org/ -BuildRequires: appliance-tools -BuildRequires: livecd-tools >= 017 -BuildRequires: syslinux -BuildRequires: qemu-img -BuildRequires: wget -# FIXME: libvirt and kvm require ovirt specific patches presently due to -# the fact that migration has not been fixed upstream. Once upstream migration -# is fixed, these Requires should be fixed. -Requires: libvirt >= 0.4.4-2ovirt2 -Requires: kvm >= 72-3ovirt3 -Requires: /usr/bin/qemu-img - -%define app_root %{_datadir}/%{name} - -# disable debuginfo, makes no sense for appliance and it is created empty anyway -%define debug_package %{nil} - -%description -The oVirt Appliance image and scripts to install on a Fedora Host - -%prep -%setup -q - -%build -if [ -n "%{?fedora_url}" ]; then - cat > repos.ks << EOF -repo --name=f%{fedora} --baseurl=%{fedora_url}/releases/%{fedora}/Everything/%{_arch}/os -repo --name=f%{fedora}-updates --baseurl=%{fedora_url}/updates/%{fedora}/%{_arch} --excludepkgs=%{bad_pkgs} -repo --name=f%{fedora}-updates-newkey --baseurl=%{fedora_url}/updates/%{fedora}/%{_arch}.newkey --excludepkgs=%{bad_pkgs} -EOF -else - cat > repos.ks << EOF -repo --name=f%{fedora} --mirrorlist=%{fedora_mirror}?repo=fedora-%{fedora}&arch=%{_arch} -repo --name=f%{fedora}-updates --mirrorlist=%{fedora_mirror}?repo=updates-released-f%{fedora}&arch=%{_arch} --excludepkgs=%{bad_pkgs} -repo --name=f%{fedora}-updates-newkey --mirrorlist=%{fedora_mirror}?repo=updates-released-f%{fedora}.newkey&arch=%{_arch} --excludepkgs=%{bad_pkgs} -EOF -fi - -cat >> repos.ks << EOF -repo --name=ovirt-org --baseurl=%{ovirt_url}/%{fedora}/%{_arch} -repo --name=ovirt-local --baseurl=%{ovirt_local_repo} -EOF - -mkdir -p %{ovirt_cache_dir}/appliance-tmp/tree -mkdir -p %{ovirt_cache_dir}/yum -./gettree.sh %{fedora_tree_url} %{ovirt_cache_dir}/appliance-tmp/tree -ln -s %{ovirt_cache_dir}/appliance-tmp tmp -sudo su - -c "cd $(pwd) && appliance-creator --config ovirt-appliance.ks --name %{name} \ - --tmpdir='%{ovirt_cache_dir}/appliance-tmp' --cache='%{ovirt_cache_dir}/yum'" -sudo su - -c "cd $(pwd) && chown -R $USER *" -if [ -n "%{?skip_compress_image}" ]; then - mv %{name}-sda.raw %{name}.img -else - qemu-img convert -c %{name}-sda.raw -O qcow2 %{name}-sda.qcow - mv %{name}-sda.qcow %{name}.img -fi - -%install -%{__rm} -rf %{buildroot} -mkdir %{buildroot} - -%{__install} -d -m0755 %{buildroot}%{app_root} -%{__install} -p -m0644 COPYING %{buildroot}%{app_root} -%{__install} -d -m0755 %{buildroot}%{_localstatedir}/lib/libvirt/images -%{__install} -p -m0644 %{name}.img %{buildroot}%{_localstatedir}/lib/libvirt/images -%{__install} -d -m0755 %{buildroot}%{_sbindir} -%{__install} -p -m0755 create-%{name} %{buildroot}%{_sbindir} - -%clean -%{__rm} -rf %{buildroot} - -%files -%defattr(-,root,root,0644) -%{app_root}/COPYING -%{_localstatedir}/lib/libvirt/images/%{name}.img -%defattr(-,root,root,0755) -%{_sbindir}/create-%{name} - -%changelog -* Sun Sep 14 2008 Perry Myers <pmyers at redhat.com> 0.92-1 -- Added Requires on libvirt/kvm -* Fri Sep 05 2008 Perry Myers <pmyers at redhat.com> 0.92-1 -- Initial build. -- 1.5.5.1