openstack+lxdのインストールメモ

参考URL

前提条件

ubuntu 15.10 server editionを使用。

ubuntu server上でintel vtが有効になっているか確認

※lxcを使うなら不要かも

stack@devstack00:~$ cat /proc/cpuinfo |grep vmx
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt aes xsave avx f16c rdrand hypervisor lahf_lm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi ept vpid fsgsbase smep

ubuntu serverの設定(IPアドレスの固定化)

/etc/network/interfaceを以下のように編集

※以下でethXとしている部分は、enoxxxに読み替える

auto eth0
iface eth0 inet static
address 192.168.1.20
netmask 255.255.255.0
gateway 192.168.1.2
dns-nameservers 192.168.1.2

auto eth1
iface eth1 inet static
address 0.0.0.0

ネットワークの再起動

sudo ifdown eth0 && sudo ifup eth0
sudo ifdown eth1 && sudo ifup eth1

githubからdevstackのDL

$ cd ~
$ git clone https://github.com/openstack-dev/devstack.git -b stable/liberty

local.confの編集

$ cat << _EOT_ > ~/devstack/local.conf
[[local|localrc]]
SERVICE_TOKEN=azertytoken
ADMIN_PASSWORD=nomoresecrete
MYSQL_PASSWORD=stackdb
RABBIT_PASSWORD=stackqueue
SERVICE_PASSWORD=$ADMIN_PASSWORD
HOST_IP=192.168.1.20
FIXED_RANGE=10.0.0.0/24
FIXED_NETWORK_SIZE=256
FLAT_INTERFACE=eth1
ENABLED_SERVICES=rabbit,mysql,key
ENABLED_SERVICES+=,n-api,n-crt,n-obj,n-cpu,n-cond,n-sch,n-novnc,n-cauth
ENABLED_SERVICES+=,neutron,q-svc,q-agt,q-dhcp,q-l3,q-meta
ENABLED_SERVICES+=,g-api,g-reg
ENABLED_SERVICES+=,horizon
Q_PLUGIN=ml2
Q_AGENT=openvswitch
Q_USE_DEBUG_COMMAND=True
Q_L3_ENABLED=True
Q_L3_ROUTER_PER_TENANT=True
ENABLE_TENANT_TUNNELS=True
LOGFILE=$DEST/logs/stack.sh.log
LOGDAYS=2
enable_plugin nova-lxd https://github.com/lxc/nova-compute-lxd
FORCE=yes
GIT_BASE=https://git.openstack.org
_EOT_

lxc用のイメージ登録

wget -O vivid-server-cloudimg-amd64-root.tar.gz https://cloud-images.ubuntu.com/vivid/current/vivid-server-cloudimg-amd64-root.tar.gz
glance image-create --name='lxc' --container-format=bare --disk-format=raw < vivid-server-cloudimg-amd64-root.tar.gz

※このイメージには/etc/network/interfaces.d配下に、eth0.cfgしかない。 複数NICdhcp使うなら、eth[1-N].cfgの設定ファイルも入れておく必要あり。

トラブルシューティング

コンテナが起動できない

No valid host was found. There are not enough hosts available を回避する方法。 n-condをみると、config-driveを使おうとしている模様。 nova.confでconfig-driveが強制的に使用するようになっているので、 それをやめる。

vi /etc/nova/nova.conf
...
force_config_drive = False
...

screenに入って、n-condのプロセスを再起動

ダッシュボードからconsoleアクセス出来ない

TODO: novncの設定を見直す。未対処。 ただし、ubuntu cloudイメージはconsoleアクセスを許容していなかったような。 コンソールアクセスしたかったらイメージ側も対処する必要があるかもしれない。

openstack-lxdのコンテナをlxc-lsで確認

lxc-ls -P /var/lib/lxd/containers/ --fancy

openstack-lxdのコンテナの内部に入る

sudo lxc-attach -P /var/lib/lxd/containers -n instance-00000007

参考: - http://stackoverflow.com/questions/17903705/is-it-possible-to-start-a-shell-session-in-a-running-container-without-ssh