2011/03/25

Installing python 26 + sqlalchemy on centos

Turns out there is a very very very easy . Just use the repo for fedora on the redhat site.

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
yum install python26 python26-devel python26-distribute python26-tools
easy_install-2.6 SQLAlchemy

test it via
python2.6
>>>import sqlalchemy
>>>sqlalchemy.__version__

2011/03/22

Random password in CLI

Just a small script so that we can generate passwords from the command line

NUMPASS=10
if [[ "$1" =~ ^[0-9]+$ ]] ; then
NUMPASS=$1
fi
echo "Spicy salt $(date)" | md5sum | sed "s/\(.\{$NUMPASS\}\).*/\1/"

2011/03/17

Zimbra server status all red crosses

I always have this problem when configuring zimbra servers (everything is working fine but service have red crosses in the web gui). At this point I tried this and waiting if it will help :)

su - zimbra
zmsshkeygen
zmupdateauthkeys
zmloggerctl stop ; zmloggerctl start

2011/03/16

Blueprint script to create DNS records in AD

Create this following code as a bat. You can than run the following (assuming you called the bat adddns.bat):
>adddns mynewhost01 0 10

This will create the records for a host 192.168.0.10 (in the example)

@echo off
:start
if "%1" == "" goto error
if "%2" == "" goto error
if "%3" == "" goto error

dnscmd abinbev.demo /recordadd yourdomain.com %1 A 192.168.%2.%3
dnscmd abinbev.demo /recordadd %2.168.192.in-addr.arpa %3 PTR %1.yourdomain.com

goto end

:error
echo name
echo adddns.bat host1 2 213
goto end
:end

2011/03/01

Setting up django: step 1, python 2.7.1

Just trying out some django in centos 5.5. So this should not been seen as a good solution. Just me trying to set it up properly

some pre preps
yum -y groupinstall 'Development Tools'
yum -y install openssl-devel* zlib*.x86_64
yum -y install httpd-devel
yum -y install mysql-devel
yum -y install wget

downloaded and untarred 2.7.1
cd /usr/local/src
wget http://www.python.org/ftp/python/2.7.1/Python-2.7.1.tgz
tar -xzvf Python-2.7.1.tgz


compiled it with embedded so we can use apache mod wsgi. Used a seperate path so that it is not conflicting with the internal python
./configure --prefix=/opt/python2.7 --with-threads --enable-shared
make
make install

added the new library to the dynamic loader
echo "/opt/python2.7/lib" > /etc/ld.so.conf.d/python27.conf
ldconfig

We can now test it
[root@django ld.so.conf.d]# /opt/python2.7/bin/python
Python 2.7.1 (r271:86832, Mar 1 2011, 21:14:38)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

ln -s /opt/python2.7/bin/python2.7 /usr/bin/python2.7
ln -s /opt/python2.7/lib/libpython2.7.so /usr/lib/libpython2.7.so

Installing the setup tools
cd /usr/local/src
wget http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg
sh setuptools-0.6c11-py2.7.egg --prefix=/opt/python2.7


Installing the mysql bindings
cd /usr/local/src
wget http://downloads.sourceforge.net/project/mysql-python/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gz?r=&ts=1299013136&use_mirror=netcologne
tar -xzvf MySQL-python-1.2.3.tar.gz
python2.7 setup.py build
python2.7 setup.py install

Installing wsgi
cd /usr/local/src
wget http://modwsgi.googlecode.com/files/mod_wsgi-3.3.tar.gz
./configure --enable-shared --prefix=/opt/mod_wsgi-3.3 --with-python=/opt/python2.7/bin/python
make
make install

A mod should be made. You can find it in
Libraries have been installed in:
/usr/lib64/httpd/modules

The mod itself:
/usr/lib64/httpd/modules/mod_wsgi.so

echo "LoadModule wsgi_module /usr/lib64/httpd/modules/mod_wsgi.so" > /etc/httpd/conf.d/wsgi.conf
echo "AddHandler wsgi-script .wsgi" >> /etc/httpd/conf.d/wsgi.conf
chmod 755 /etc/httpd/conf.d/wsgi.conf
/etc/init.d/httpd restart

Installing django
wget http://www.djangoproject.com/download/1.2.5/tarball/
python2.7 setup.py install

cd /tmp
cat <<> test.py
#!/opt/python2.7/bin/python
import django
print django.get_version()
EOF
chmod +x test.py
[root@django html]# ./test.py
1.2.5

Symlinking the django admin so we can use it everywhere
ln -s /opt/python2.7/bin/django-admin.py /usr/local/bin/django-admin.py

Configuring apache to use django
cat <<> /etc/httpd/conf.d/django.conf
WSGIScriptAlias / /var/www/django/django.wsgi

Order allow,deny
Allow from all
EOF

creating the django handler
mkdir -p /var/www/django
cat <<> /var/www/django/django.wsgi
import os
import sys

path = '/var/www/django'
if path not in sys.path:
sys.path.append(path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
EOF
chmod 755 /var/www/django/django.wsgi

Now we can create a site
cd /var/www/django/
django-admin.py startproject mysite

Restart the webserver to activate everything
/etc/init.d/httpd restart

Surf to your http server ot see the result













2011/02/25

vcloud some more lessons learned: transfer volume

For my first vcloud cell I decided to make a seperate logical volume group that I could then export and share with other cloud cell. When I was done doing so I had the following result

A seperate logical volume in a seperate volume group
[root@abincloudhttp logs]# lvdisplay clouddata
--- Logical volume ---
LV Name /dev/clouddata/lvcloud
VG Name clouddata
LV UUID LCUjhy-vQxM-Taxn-0A2e-4ac7-F1UL-chl7dH
LV Write Access read/write
LV Status available
# open 1
LV Size 100.00 GB
Current LE 25599
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2

A new entry in fstab
[root@abincloudhttp logs]# cat /etc/fstab | grep clouddata
/dev/clouddata/lvcloud /opt/vmware/cloud-director/data/transfer/ ext3 defaults 1 2

And after everything was mounted via mount -a, a nice clean mount
[root@abincloudhttp logs]# df -h | grep transfer
99G 188M 94G 1% /opt/vmware/cloud-director/data/transfer

Also changed the export file
[root@abincloudhttp logs]# cat /etc/exports
/opt/vmware/cloud-director/data/transfer/ 0.0.0.0/0.0.0.0(rw,no_root_squash)

(This is poor security ofcourse as I should have used my local subnet/subnetmask and no_root_squash is not really good anyway :))

When I tried to start up my cloud cell, I got a 404 warnings that the application was not available. Not knowing where to look I started to google and found that the logs are kept on a straightforward location
/opt/vmware/cloud-director/logs/

In my cell.log I saw some errors about the transfer directory. I then realised that vcloud, made a seperate user vcloud. However by manually creating another volume group, I overwritten the default ownerships a shown below
[root@abincloudhttp data]# ls -alh
total 44K
drwxr-xr-x 6 vcloud vcloud 4.0K Feb 25 10:45 .
drwxr-xr-x 19 vcloud vcloud 4.0K Feb 25 10:31 ..
drwx------ 3 vcloud vcloud 4.0K Feb 25 10:45 activemq
drwx------ 2 vcloud vcloud 4.0K Feb 25 10:31 generated-bundles
drwxr-xr-x 3 root root 4.0K Feb 24 10:51 transfer
drwx------ 2 vcloud vcloud 4.0K Feb 25 10:45 txlog

a simple chown vcloud:vcloud transfer and service vmware-vcd restart solved the problem :)


2011/02/24

cloud director: some quick reminders

centos packages
  • yum install -y alsa-lib bash chkconfig compat-libcom_err coreutils findutils glibc grep initscripts krb5-libs libgcc libICE libSM libstdc libX11 libXau libXdmcp libXext libXi libXt libXtst module-init-tools net-tools pciutils procps redhat-lsb sed tar which libstdc++
post install certificates generation
  • cd /opt/vmware/cloud-director/
  • cd jre/bin/
  • mkdir /opt/vmware/cloud-director/keys
  • ./keytool -keystore /opt/vmware/cloud-director/certificates.ks -storetype JCEKS -storepass mysupersecretpass987654321 -genkey -keyalg RSA -alias http
  • ./keytool -keystore /opt/vmware/cloud-director/certificates.ks -storetype JCEKS -storepass mysupersecretpass987654321 -genkey -keyalg RSA -alias consoleproxy
  • ./keytool -keystore /opt/vmware/cloud-director/certificates.ks -storetype JCEKS -storepass mysupersecretpass987654321 -list