Boxgrinder - Setting Up a Simple CentOS LAMP Stack, and Deploying It to KVM
If you haven’t tried boxgrinder then you are missing out, it makes it extremely easy to script the generation of a virtual machine for output to Rackspace (Well not yet), ec2, vmware, virtualbox, KVM etc.
In this post I will cover the basic generation of a LAMP (Linux Apache MySQL PHP) stack CentOS appliance, nothing to complicated I assure you, and no magic like auto deployment spin up etc … that’s for later … no skipping ahead!
Now I am covering the following.
- basic use of boxgrinder-build on the meta appliance
- creation of centos lampstack basic
- deploying the image to KVM
I’m going to have to assume that you are capable of downloading and starting up the meta appliance yourself, and focus more on the stack setup.
Grinding your VM
Ok so you are going to need a YAML file defining the CentOS lamp stack, save this on your meta appliance as CentOS-lamp.yaml
name: CentOS-lamp summary: Generic CentOS 5.6 LAMP stack, with some apache & php tuning version: 1 release: 0 hardware: cpus: 2 memory: 1024 partitions: "/": size: 5 "/var/www": size: 15 os: name: centos version: 5 password: changeme
On your Meta appliance run.
boxgrinder-build -d CentOS-lamp.appl
This process will take a while, so go and get a coffee, this will produce ./build/appliances/x86_64/centos/5/CentOS-lamp/CentOS-lamp-sda.raw once complete, if you run into issues the -d flag is “debug” paste your log output int the comments and I will do my best to diagnose and fix your issue.
Deploying to KVM
boxgrinder has SFTP support for pushing to remote servers, you can use this if you like to automate the “push” of the image to your KVM server, at the moment automated deployment to KVM is not support but may be coming soon.
Assuming you have placed you image in /var/lib/libvirt/images/
virt-install -n "Saiweb - CentOS-lamp Demo" -r 1024 --arch=x86_64 --vcpus=1 --os-type=linux --os-variant=rhel5.4 --disk path=/var/lib/libvirt/images/CentOS-lamp.raw,size=20,cache=none,device=disk --accelerate --network=bridge:br0 --vnc --import
this is a VERY basic setup I have not covered any of the post install options in this post (but I will in future posts), so.
chkconfig httpd on && service httpd start chkconfig mysqld on && service mysqld start
This will set your services to automatically start at startup, and start them.