Joey Boggs
2009-Feb-27 23:15 UTC
[Ovirt-devel] [PATCH server] updated appliance configuration for iscsi/nfs support
This adds back in appliance iscsi/nfs functionality that has been missing since the switch to the new installer. Adds an appliance::bundled puppet class that is only used by the appliance installation configuration. --- .../appliances/ovirt-appliance/ovirt-appliance.pp | 1 + .../modules/ovirt/files/ovirt-appliance-setup | 4 + installer/modules/ovirt/files/ovirt-storage | 73 +++++++++ installer/modules/ovirt/manifests/appliance.pp | 160 ++++++++++++++++++++ installer/modules/ovirt/manifests/init.pp | 2 +- 5 files changed, 239 insertions(+), 1 deletions(-) create mode 100755 installer/modules/ovirt/files/ovirt-appliance-setup create mode 100755 installer/modules/ovirt/files/ovirt-storage create mode 100644 installer/modules/ovirt/manifests/appliance.pp diff --git a/installer/appliances/ovirt-appliance/ovirt-appliance.pp b/installer/appliances/ovirt-appliance/ovirt-appliance.pp index 125edf9..ffeceba 100644 --- a/installer/appliances/ovirt-appliance/ovirt-appliance.pp +++ b/installer/appliances/ovirt-appliance/ovirt-appliance.pp @@ -44,3 +44,4 @@ include tftp::bundled include postgres::bundled include freeipa::bundled include ovirt::setup +include appliance::bundled diff --git a/installer/modules/ovirt/files/ovirt-appliance-setup b/installer/modules/ovirt/files/ovirt-appliance-setup new file mode 100755 index 0000000..e3ab63d --- /dev/null +++ b/installer/modules/ovirt/files/ovirt-appliance-setup @@ -0,0 +1,4 @@ +for i in `seq 1 5`; do; /bin/dd if=/dev/null of=/ovirtiscsi/iSCSI$i bs=1 count=1 seek=5G; done" + +for i in `seq 1 5`; do; /bin/dd if=/dev/zero of=/ovirtnfs/disk$i.dsk bs=1 count=1 seek=5G;done", + diff --git a/installer/modules/ovirt/files/ovirt-storage b/installer/modules/ovirt/files/ovirt-storage new file mode 100755 index 0000000..e923500 --- /dev/null +++ b/installer/modules/ovirt/files/ovirt-storage @@ -0,0 +1,73 @@ +#!/bin/bash +# +# ovirt-storage Set up storage for oVirt Server Appliance +# +# chkconfig: 3 96 4 +# description: oVirt Appliance Storage Services +# + +# Source functions library +. /etc/init.d/functions +TARGET_ID=32101 + +prog="ovirt-storage" +num_iscsi_luns=5 + +start() { + echo -n "Starting $prog: " + + # Set up the fake iscsi target + tgtadm --lld iscsi --op new --mode target --tid $TARGET_ID \ + -T ovirtpriv:storage + + # + # Now associate them to the LVs + # + for i in `seq 1 $num_iscsi_luns` ; do + tgtadm --lld iscsi --op new --mode logicalunit --tid $TARGET_ID \ + --lun $i -b /ovirtiscsi/iSCSI$i + done + + # + # Now make them available + # + tgtadm --lld iscsi --op bind --mode target --tid $TARGET_ID -I ALL + + echo_success + echo +} + +stop() { + echo -n "Stopping $prog: " + + # stop access to the iscsi target + tgtadm --lld iscsi --op unbind --mode target --tid $TARGET_ID -I ALL + + # unbind the LUNs + for i in `seq 1 $num_iscsi_luns` ; do + tgtadm --lld iscsi --op delete --mode logicalunit --tid $TARGET_ID --lun $i + done + + # shutdown the target + tgtadm --lld iscsi --op delete --mode target --tid $TARGET_ID + + echo_success + echo +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + stop + start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 2 +esac + diff --git a/installer/modules/ovirt/manifests/appliance.pp b/installer/modules/ovirt/manifests/appliance.pp new file mode 100644 index 0000000..9579837 --- /dev/null +++ b/installer/modules/ovirt/manifests/appliance.pp @@ -0,0 +1,160 @@ +#-- +# Copyright (C) 2008 Red Hat Inc. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# Author: Joey Boggs <jboggs at redhat.com> +#-- + +class appliance::bundled { + +$nfs_changes = [ + "set /files/etc/sysconfig/nfs/MOUNTD_PORT 892" +] + +augeas {"nfs_config": + changes => $nfs_changes, + notify => Service["nfs"] +} + +$nfslock_changes = [ + "set /files/etc/sysconfig/nfs/LOCKD_TCPPORT 32803", + "set /files/etc/sysconfig/nfs/LOCKD_UDPPORT 32769", + "set /files/etc/sysconfig/nfs/STATD_PORT 662" +] + +augeas {"nfslock_config": + changes => $nfslock_changes, + notify => Service["nfslock"] +} + +#file {"/boot/grub/splash.xpm.gz": +# source => "puppet:///ovirt/ovirt-splash.xpm.gz" +#} + +firewall_rule {"tgtd": destination_port => '3260'} +firewall_rule {"nfsd": destination_port => '2049'} +firewall_rule {"rpcbind": destination_port => '111'} +firewall_rule {"rpcbind-udp": destination_port => '111', protocol => 'udp'} +firewall_rule {"rpc.mountd": destination_port => '892'} +firewall_rule {"rpc.mountd-udp": destination_port => '892', protocol => 'udp'} +firewall_rule {"rpc.statd": destination_port => '662'} +firewall_rule {"rpc.statd-udp": destination_port => '662', protocol => 'udp'} + +service {"nfs": + ensure => "running", + enable => true, + require => Service["network"] +} + +service {"nfslock": + ensure => "running", + enable => true +} + +service {"network": + ensure => "running", + enable => true +} + +file{"/mnt/data/ovirtiscsi": + ensure => directory +} + +file{"/ovirtiscsi": + ensure => directory +} + +file{"/ovirtnfs": + ensure => directory +} + +file{"/mnt/data/ovirtnfs": + ensure => directory +} + +mount{"/ovirtiscsi": + atboot => true, + ensure => mounted, + fstype => bind, + options => bind, + device => "/mnt/data/ovirtiscsi", + require => [File["/mnt/data/ovirtiscsi"],File["/ovirtiscsi"]] +} + +mount{"/ovirtnfs": + atboot => true, + ensure => mounted, + fstype => bind, + options => bind, + device => "/mnt/data/ovirtnfs", + require => [File["/mnt/data/ovirtnfs"],File["/ovirtnfs"]] +} + +file {"/usr/sbin/ovirt-appliance-setup": + source => "puppet:///ovirt/ovirt-appliance-setup", + mode => 755 +} + +single_exec{"ovirtnfs_export": + command => '/bin/echo "/ovirtnfs 192.168.50.0/24(rw,no_root_squash)" >> /etc/exports', + notify => Service[nfs] +} + +file{"/mnt/data/cobblernfs": + ensure => directory +} + +file{"/cobblernfs": + ensure => directory +} + +mount{"/cobblernfs": + atboot => true, + ensure => mounted, + fstype => bind, + options => bind, + device => "/mnt/data/ovirtnfs", + require => [File["/mnt/data/ovirtnfs"],File["/cobblernfs"]] +} + +single_exec{"cobbler_nfs_export": + command => '/bin/echo "/cobblernfs 192.168.50.0/24(rw,no_root_squash)" >> /etc/exports', + notify => Service[nfs], + require => Mount["/cobblernfs"] +} + + +file {"/etc/init.d/ovirt-storage": + source => "puppet:///ovirt/ovirt-storage", + mode => 755 +} + +service {"ovirt-storage": + ensure => "running", + enable => true, + require => [File["/etc/init.d/ovirt-storage"],File["/usr/sbin/ovirt-appliance-setup"]] +} + +package{"scsi-target-utils": + ensure => installed +} + +package{"iscsi-initiator-utils": + ensure => installed +} + + +} diff --git a/installer/modules/ovirt/manifests/init.pp b/installer/modules/ovirt/manifests/init.pp index 87f6832..a09cea1 100644 --- a/installer/modules/ovirt/manifests/init.pp +++ b/installer/modules/ovirt/manifests/init.pp @@ -6,4 +6,4 @@ import "ovirt/freeipa.pp" import "ovirt/ovirt.pp" import "ovirt/postgres.pp" import "appliance_base/single_exec.pp" - +import "ovirt/appliance.pp" -- 1.6.0.6
Scott Seago
2009-Mar-05 00:13 UTC
[Ovirt-devel] [PATCH server] updated appliance configuration for iscsi/nfs support
Joey Boggs wrote:> This adds back in appliance iscsi/nfs functionality that has been missing since the switch to the new installer. Adds an appliance::bundled puppet class that is only used by the appliance installation configuration. > --- > .../appliances/ovirt-appliance/ovirt-appliance.pp | 1 + > .../modules/ovirt/files/ovirt-appliance-setup | 4 + > installer/modules/ovirt/files/ovirt-storage | 73 +++++++++ > installer/modules/ovirt/manifests/appliance.pp | 160 ++++++++++++++++++++ > installer/modules/ovirt/manifests/init.pp | 2 +- > 5 files changed, 239 insertions(+), 1 deletions(-) > create mode 100755 installer/modules/ovirt/files/ovirt-appliance-setup > create mode 100755 installer/modules/ovirt/files/ovirt-storage > create mode 100644 installer/modules/ovirt/manifests/appliance.pp > > diff --git a/installer/appliances/ovirt-appliance/ovirt-appliance.pp b/installer/appliances/ovirt-appliance/ovirt-appliance.pp > index 125edf9..ffeceba 100644 > --- a/installer/appliances/ovirt-appliance/ovirt-appliance.pp > +++ b/installer/appliances/ovirt-appliance/ovirt-appliance.pp > @@ -44,3 +44,4 @@ include tftp::bundled > include postgres::bundled > include freeipa::bundled > include ovirt::setup > +include appliance::bundled > diff --git a/installer/modules/ovirt/files/ovirt-appliance-setup b/installer/modules/ovirt/files/ovirt-appliance-setup > new file mode 100755 > index 0000000..e3ab63d > --- /dev/null > +++ b/installer/modules/ovirt/files/ovirt-appliance-setup > @@ -0,0 +1,4 @@ > +for i in `seq 1 5`; do; /bin/dd if=/dev/null of=/ovirtiscsi/iSCSI$i bs=1 count=1 seek=5G; done" > + > +for i in `seq 1 5`; do; /bin/dd if=/dev/zero of=/ovirtnfs/disk$i.dsk bs=1 count=1 seek=5G;done", > + >OK so I finally got my appliance up. The storage pools were there but the above-referenced files weren't created. There seem to be two problems here: 1) nothing actually calls this script that I can see. The puppet manifest just creates the file 2) the script fails to run when I attempted it manually as it's got syntax errors. Scott> diff --git a/installer/modules/ovirt/files/ovirt-storage b/installer/modules/ovirt/files/ovirt-storage > new file mode 100755 > index 0000000..e923500 > --- /dev/null > +++ b/installer/modules/ovirt/files/ovirt-storage > @@ -0,0 +1,73 @@ > +#!/bin/bash > +# > +# ovirt-storage Set up storage for oVirt Server Appliance > +# > +# chkconfig: 3 96 4 > +# description: oVirt Appliance Storage Services > +# > + > +# Source functions library > +. /etc/init.d/functions > +TARGET_ID=32101 > + > +prog="ovirt-storage" > +num_iscsi_luns=5 > + > +start() { > + echo -n "Starting $prog: " > + > + # Set up the fake iscsi target > + tgtadm --lld iscsi --op new --mode target --tid $TARGET_ID \ > + -T ovirtpriv:storage > + > + # > + # Now associate them to the LVs > + # > + for i in `seq 1 $num_iscsi_luns` ; do > + tgtadm --lld iscsi --op new --mode logicalunit --tid $TARGET_ID \ > + --lun $i -b /ovirtiscsi/iSCSI$i > + done > + > + # > + # Now make them available > + # > + tgtadm --lld iscsi --op bind --mode target --tid $TARGET_ID -I ALL > + > + echo_success > + echo > +} > + > +stop() { > + echo -n "Stopping $prog: " > + > + # stop access to the iscsi target > + tgtadm --lld iscsi --op unbind --mode target --tid $TARGET_ID -I ALL > + > + # unbind the LUNs > + for i in `seq 1 $num_iscsi_luns` ; do > + tgtadm --lld iscsi --op delete --mode logicalunit --tid $TARGET_ID --lun $i > + done > + > + # shutdown the target > + tgtadm --lld iscsi --op delete --mode target --tid $TARGET_ID > + > + echo_success > + echo > +} > + > +case "$1" in > + start) > + start > + ;; > + stop) > + stop > + ;; > + restart) > + stop > + start > + ;; > + *) > + echo "Usage: $0 {start|stop|restart}" > + exit 2 > +esac > + > diff --git a/installer/modules/ovirt/manifests/appliance.pp b/installer/modules/ovirt/manifests/appliance.pp > new file mode 100644 > index 0000000..9579837 > --- /dev/null > +++ b/installer/modules/ovirt/manifests/appliance.pp > @@ -0,0 +1,160 @@ > +#-- > +# Copyright (C) 2008 Red Hat Inc. > +# > +# This library is free software; you can redistribute it and/or > +# modify it under the terms of the GNU Lesser General Public > +# License as published by the Free Software Foundation; either > +# version 2.1 of the License, or (at your option) any later version. > +# > +# This library is distributed in the hope that it will be useful, > +# but WITHOUT ANY WARRANTY; without even the implied warranty of > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +# Lesser General Public License for more details. > +# > +# You should have received a copy of the GNU Lesser General Public > +# License along with this library; if not, write to the Free Software > +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > +# > +# Author: Joey Boggs <jboggs at redhat.com> > +#-- > + > +class appliance::bundled { > + > +$nfs_changes = [ > + "set /files/etc/sysconfig/nfs/MOUNTD_PORT 892" > +] > + > +augeas {"nfs_config": > + changes => $nfs_changes, > + notify => Service["nfs"] > +} > + > +$nfslock_changes = [ > + "set /files/etc/sysconfig/nfs/LOCKD_TCPPORT 32803", > + "set /files/etc/sysconfig/nfs/LOCKD_UDPPORT 32769", > + "set /files/etc/sysconfig/nfs/STATD_PORT 662" > +] > + > +augeas {"nfslock_config": > + changes => $nfslock_changes, > + notify => Service["nfslock"] > +} > + > +#file {"/boot/grub/splash.xpm.gz": > +# source => "puppet:///ovirt/ovirt-splash.xpm.gz" > +#} > + > +firewall_rule {"tgtd": destination_port => '3260'} > +firewall_rule {"nfsd": destination_port => '2049'} > +firewall_rule {"rpcbind": destination_port => '111'} > +firewall_rule {"rpcbind-udp": destination_port => '111', protocol => 'udp'} > +firewall_rule {"rpc.mountd": destination_port => '892'} > +firewall_rule {"rpc.mountd-udp": destination_port => '892', protocol => 'udp'} > +firewall_rule {"rpc.statd": destination_port => '662'} > +firewall_rule {"rpc.statd-udp": destination_port => '662', protocol => 'udp'} > + > +service {"nfs": > + ensure => "running", > + enable => true, > + require => Service["network"] > +} > + > +service {"nfslock": > + ensure => "running", > + enable => true > +} > + > +service {"network": > + ensure => "running", > + enable => true > +} > + > +file{"/mnt/data/ovirtiscsi": > + ensure => directory > +} > + > +file{"/ovirtiscsi": > + ensure => directory > +} > + > +file{"/ovirtnfs": > + ensure => directory > +} > + > +file{"/mnt/data/ovirtnfs": > + ensure => directory > +} > + > +mount{"/ovirtiscsi": > + atboot => true, > + ensure => mounted, > + fstype => bind, > + options => bind, > + device => "/mnt/data/ovirtiscsi", > + require => [File["/mnt/data/ovirtiscsi"],File["/ovirtiscsi"]] > +} > + > +mount{"/ovirtnfs": > + atboot => true, > + ensure => mounted, > + fstype => bind, > + options => bind, > + device => "/mnt/data/ovirtnfs", > + require => [File["/mnt/data/ovirtnfs"],File["/ovirtnfs"]] > +} > + > +file {"/usr/sbin/ovirt-appliance-setup": > + source => "puppet:///ovirt/ovirt-appliance-setup", > + mode => 755 > +} > + > +single_exec{"ovirtnfs_export": > + command => '/bin/echo "/ovirtnfs 192.168.50.0/24(rw,no_root_squash)" >> /etc/exports', > + notify => Service[nfs] > +} > + > +file{"/mnt/data/cobblernfs": > + ensure => directory > +} > + > +file{"/cobblernfs": > + ensure => directory > +} > + > +mount{"/cobblernfs": > + atboot => true, > + ensure => mounted, > + fstype => bind, > + options => bind, > + device => "/mnt/data/ovirtnfs", > + require => [File["/mnt/data/ovirtnfs"],File["/cobblernfs"]] > +} > + > +single_exec{"cobbler_nfs_export": > + command => '/bin/echo "/cobblernfs 192.168.50.0/24(rw,no_root_squash)" >> /etc/exports', > + notify => Service[nfs], > + require => Mount["/cobblernfs"] > +} > + > + > +file {"/etc/init.d/ovirt-storage": > + source => "puppet:///ovirt/ovirt-storage", > + mode => 755 > +} > + > +service {"ovirt-storage": > + ensure => "running", > + enable => true, > + require => [File["/etc/init.d/ovirt-storage"],File["/usr/sbin/ovirt-appliance-setup"]] > +} > + > +package{"scsi-target-utils": > + ensure => installed > +} > + > +package{"iscsi-initiator-utils": > + ensure => installed > +} > + > + > +} > diff --git a/installer/modules/ovirt/manifests/init.pp b/installer/modules/ovirt/manifests/init.pp > index 87f6832..a09cea1 100644 > --- a/installer/modules/ovirt/manifests/init.pp > +++ b/installer/modules/ovirt/manifests/init.pp > @@ -6,4 +6,4 @@ import "ovirt/freeipa.pp" > import "ovirt/ovirt.pp" > import "ovirt/postgres.pp" > import "appliance_base/single_exec.pp" > - > +import "ovirt/appliance.pp" >