2011/04/05

ESXi still thinks it is connected to vCenter...

and you can't remove any resource pools. I had this issue because I created an SRM lab, tried the exercises and then reverted to snapshots. While testing the lab I created resource pools which were pushed to the ESX hosts. When I reverted to the snapshots, my vCenter was resetted, but the ESX hosts still had the vcenter agent running and in effect they thought they were still connected to a vCenter. You'll also get the annoying issue that when you reconnect a host to "another" vCenter, it will complain about already being managed. When you then try to remove the resource pool, the ESXi host for some reason auto recreates the resource pool. Very annoying :) You could readadd it to a vCenter and then properly remove it. However you can also do the following

Enable the remote technical support.
Run /opt/vmware/uninstallers/VMware-vpxa-uninstall.sh

You should be able to remove the resource pool. I remembered this command from an issue I used to have when I did a migration. Here is a link to the kb article

2011/04/03

Zimbra antispam and antivirus not working

If you notice that mails are getting stuck in deferred status you might have the same problem that i just had. Check the logs for a message like this (/var/log/zimbra.log)
Apr  3 21:44:54 mail01 postfix/smtp[9304]: connect to 127.0.0.1[127.0.0.1]:10024: Connection refused


First of all you should try to manually start the service

[root@mail01 conf]$ su zimbra -
[zimbra@mail01 conf]$ zmamavisdctl start
Starting amavisd... The value of variable $myhostname is "mail01", but should have been
a fully qualified domain name; perhaps uname(3) did not provide such.
You must explicitly assign a FQDN of this host to variable $myhostname
in amavisd.conf, or fix what uname(3) provides as a host's network name!


If you get this error you made a mistake like I did. I did gave the fqdn while setting up the server. You can fix this by executing
/opt/zimbra/libexec/zmsetservername -n mail01.demo


Then do an exit to get you back to the root shell and reboot

Install zimbra on Centos 5.5

Prereq part


Make sure you have at least 7 gb free (/opt/zimbra requires at least 5GB of space to install). If you scalled to small you can use this article (i did :D)
http://www.howtoforge.com/logical-volume-manager-how-can-i-extend-a-volume-group
Then you can extend the logical volume like this
lvextend /dev/VolGroup00/LogVol00 -l +100%FREE
resize2fs /dev/VolGroup00/LogVol00

You can check the size with
df -h

Remember, online resizing is a nono for production environment. I would recommend making a different partition for /opt/zimbra so you can resize this by bringing this partition offline

Fix your /etc/hosts so that it looks similar to

# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
10.5.4.49 mail01 mail01.demo
::1 localhost6.localdomain6 localhost6


Install the necessary packages

yum install -y sudo libidn gmp libstdc++ perl sysstat sqlite bind-utils



And finally make sure your mx records are setup
dig demo mx

This should reply your name server

[root@mail01 ~]# dig demo mx

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5_5.3 <<>> demo mx
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30023
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;demo. IN MX

;; ANSWER SECTION:
nato.demo. 3600 IN MX 10 mail01.demo.

;; ADDITIONAL SECTION:
mail01.demo. 3600 IN A 10.5.4.49

;; Query time: 0 msec
;; SERVER: 10.5.4.50#53(10.5.4.50)
;; WHEN: Sun Apr 3 21:16:02 2011
;; MSG SIZE rcvd: 66



Finally, make sure your firewall is configured correctly. I disabled it for the sake of simplicity in this demo setup. You can do this with the following tool (CentOS specific)

# system-config-securitylevel-tui


Actual install


First start by getting the package from http://www.zimbra.com/downloads/os-downloads.html. I usually use wget for this

mkdir -p /usr/src/zimbra
cd /usr/src/zimbra
wget http://files2.zimbra.com/downloads/7.0.1_GA/zcs-7.0.1_GA_3105.RHEL5_64.20110304210645.tgz
wget http://files2.zimbra.com/downloads/7.0.1_GA/zcs-7.0.1_GA_3105.RHEL5_64.20110304210645.tgz.md5




Check that your MD5sums match

md5sum zcs*.tgz
cat zcs*.tgz.md5


Untar your file and install it. Remember we will have to do a platform-override as centos is not supported :)

tar -xzvf zcs*tgz
cd zcs*
./install.sh --platform-override


While installing you will have to answer some questions and set the admin password. This should be quite straight forward if you have done all the previous prereqs. When the install starts, go sip some coffee or tea :)

When done, execute the following. I haven't figured out why this works but it makes the red crosses disappear on the service status page.


su - zimbra
zmsshkeygen
zmupdateauthkeys
zmloggerctl stop ; zmloggerctl start
exit
reboot


You can now do the admin tasks you like on
https://mail01.demo:7071/
(your login
And read mail from
http://mail01.demo/

Oneliner: Howto install VMware Tools on Centos

What the title say :). Ofcourse you must invoke "install vmware tools" on the vm itself first.


yum install -y perl;mkdir -p /mnt/cdrom;mount /dev/cdrom /mnt/cdrom/;tar -xzvf /mnt/cdrom/VMwareTools*.tar.gz -C /usr/src/;umount /dev/cdrom;cd /usr/src/vmware-tools-distrib/;./vmware-install.pl

2011/04/01

Howto Vyatta DNAT : one outside ip directly to inside ip

Just a small tutorial on howto create a natted network. In my setup the outside ip is 10.5.4.2 (in effect my users would surf to this address). This ip is added to eth0. Very important because otherwise vyatta won't pick packets for this ip, I learned that the hard way. Internally in a private network the ip of the server is 10.114.114.2 . Notice that on the inside interface I only have to set my own IP as the 10.114.114.2 ip address is consumed by the server.

This was configured in the following way

interfaces {
ethernet eth0 {
address 10.5.4.13/20
address 10.5.4.2/20
hw-id 00:0c:29:20:a5:f0
}
ethernet eth1 {
address 10.114.114.13/24
hw-id 00:0c:29:20:a5:fa
}

service {
nat {
rule 2 {
destination {
address 10.5.4.2
}
inbound-interface eth0
inside-address {
address 10.114.114.2
}
protocol all
source {
address 0.0.0.0/0
}
type destination
}

Notice that the vyatta router is address .13 but i added .2 so that vyatta can Nat this ip to the internal 10.114.114.2 ip address. The destination rule is the ip my users use to connect to the inside-address 10.114.114.2 . The source address statement tells the router that every pc in the whole wide world can connect to this 10.5.4.2 and will be nated. You can have multiple servers natted, just add extra ip addresses on eth0 and create extra rules.

Bladecenter switches acting funny

Today I had a nice problem. When a second switch was added to the a 3 com uplink switch the network went down. Not so very nice. I fixed it in a not so good way but it gives me a clue were to start looking for the error. I executed the following on both switches.

interface range GigabitEthernet0/17 - 20
spanning-tree portfast trunk
spanning-tree bpdufilter enable
spanning-tree bpduguard enable
!

Basically this means that the switch will not do Spanning tree on its external ports. Do not do this if you are unsure that you have loops or not. In my case I was quite sure so I just did it :) . Probably some 3 com spanning tree protocol that does not talk nice with rapid-pvst

2011/03/30

Growl fun on Mac

Growl is a general accepted way of notifying something to users in Mac. You are probably using (for example the twitter app can send you updates via Growl) but what you might not now is that you can easily script. It is quite easy although I haven't figured out the details.

First you need to install the library. You can compile it yourself but you can also easy install it
sudo easy_install-2.6 py-Growl

Then you can test it
>>> import Growl
/Library/Python/2.6/site-packages/py_Growl-0.0.7-py2.6-macosx-10.6-universal.egg/Growl.py:17: DeprecationWarning: the md5 module is deprecated; use hashlib instead
>>> gn = Growl.GrowlNotifier("overtime",['overtime'])
>>> gn.register()
>>> gn.notify("overtime","Are you still working?","Yes I am!")

(Code from http://prehensile.co.uk/blog/?p=92)
This should display a message if you have installed Growl

I also created a small script that you run directly from cli if you don't like python. You can run it like this in the terminal
$ ./gnotify "Some Test" "A very good test"

BTW SQLAlchemy also install easily via easy_install-2.6 on Mac :)