Trove instance went to ERROR because of "chmod: cannot access '/etc/guest_info': No such file or directory"
When I tried to launch a Trove database instance with the image built by DIB, the Trove instance went to ERROR, while its associated Nova instance went to ACTIVE. So I logged in that VM and found the following information in log files.
In /var/log/upstart/trove-guest.log, the error is as follows.
chmod: cannot access '/etc/guest_info': No such file or directory
I also looked at /var/log/boot.log and found the following, which really confused me. It seems that Trove Guest started successfully and then failed.
* Starting Trove Guest^[[74G[ OK ]
Cloud-init v. 0.7.5 running 'modules:config' at Tue, 27 Oct 2015 08:47:33 +0000. Up 151.77 seconds.
* Starting Trove Guest^[[74G[^[[31mfail^[[39;49m]*
And on the guest VM, the Trove source code and database server package (here I used Vertica) can be found under ~/trove and /opt/vertica, respectively.
The following is some details about how OpenStack and Trove are installed, and also how Trove guest database image is built.
OpenStack environment: initially installed following OpenStack Installation Guide for Ubuntu - JUNO, and then upgraded to KILO. After upgrade, a Nova instance was launched successfully. And by checking "nova-manage --version", the output is "2015.1.1". So I made judgment that the upgrade was successful. There are the following service running on OpenStack: Keystone, Nova, Glance, Cinder, Horizon.
Trove: after upgrading OpenStack from JUNO to KILO, installed Trove, following Chapter " Add Database Service" in http://docs.openstack.org/icehouse/install-guide/install/apt/openstack-install-guide-apt-icehouse.pdf (OpenStack Installation Guide for Ubuntu - ICEHOUSE) and with updated configurations found in KILO. After installation, I executed "trove list" and got right output (a table with columns: ID, Name, Datastore, Datastore Version, Status, Flavor ID, Size). And by checking "trove-manage --version", the output is "2015.1.0". So I made the judgement that trove was installed successfully.
(I accidentally installed Trove using root role. I don't have the ability to judge whether that would have influence on the issue I encountered. Appreciate any comment on this.)
Trove guest database image creation: used DIB tool; the details can be found below.
-----Install pre-requisition:
# sudo apt-get install qemu-utils kpartx
-----Install diskimage-builder:
# sudo pip install diskimage-builder
-----Install trove-integration and tripleo-image-elements:
$ git clone http://git.openstack.org/openstack/trove-integration
$ git clone https://git.openstack.org/openstack/tripleo-image-elements
-----And then copy trove-integration/scripts/files/keys/ to ~/.ssh and change file permission. So Trove guest instance can be accessed via ssh.
-----Configure following environmental variables with local values.
export HOST_USERNAME
export HOST_SCP_USERNAME
export GUEST_USERNAME
export NETWORK_GATEWAY
export REDSTACK_SCRIPTS
export PATH_TROVE
export ESCAPED_PATH_TROVE
export SSH_DIR
export GUEST_LOGDIR
export ESCAPED_GUEST_LOGDIR
export ELEMENTS_PATH=$REDSTACK_SCRIPTS/files/elements:$PATH_TRIPLEO_ELEMENTS/elements
export DIB_CLOUD_INIT_DATASOURCES="ConfigDrive"
export DATASTORE_PKG_LOCATION=""
-----Create the image:
$ disk-image-create -a amd64 -o ~/images/ubuntu_vertica/ubuntu_vertica -x --qemu-img-options compat=0.10 ubuntu apt-sources vm heat-cfntools cloud-init-datasources ubuntu-guest ubuntu-vertica
-----And then register that image with GLANCE and update the datastore version.
Please feel free to let me know if you need any additional information. Thank you for your time ...