このエントリーをはてなブックマークに追加

1.2.8. Openstackを構成するコンポーネントの起動スクリプト作成

Openstackを利用するためのコンポーネントを起動するスクリプトを作成します。 Essexではnova-allみたいにallコマンドが何か色々できてるみたいです。

1.2.8.1. Nova

起動するためのユーザを先に作成します。

$ sudo useradd nova -m -d /var/lib/nova -s /bin/bash
$ sudo usermod -G stack nova
$ sudo usermod -G libvirtd nova

1.2.8.1.1. nova-api

$ cat << 'NOVA_API_INIT' | sudo tee /etc/init/nova-api.conf > /dev/null
description "Nova API server"
author "Soren Hansen <soren@linux2go.dk>"

start on (filesystem and net-device-up IFACE!=lo)
stop on runlevel [016]


chdir /var/run

pre-start script
mkdir -p /var/run/nova
chown nova:root /var/run/nova/
chmod 775 /var/run/nova/

mkdir -p /var/lock/nova
chown nova:root /var/lock/nova/
chmod 775 /var/lock/nova/
end script

exec su -c "nova-api --flagfile=/etc/nova/nova.conf" nova
NOVA_API_INIT

1.2.8.1.2. nova-objecgtstore

$ cat << 'NOVA_OBJECT_INIT' | sudo tee /etc/init/nova-objectstore.conf > /dev/null
description "Nova object store"
author "Soren Hansen <soren@linux2go.dk>"

start on (filesystem and net-device-up IFACE!=lo)
stop on runlevel [016]

chdir /var/run

pre-start script
    mkdir -p /var/run/nova
    chown nova:root /var/run/nova/
    chmod 775 /var/run/nova/


    mkdir -p /var/lock/nova
    chown nova:root /var/lock/nova/
    chmod 775 /var/lock/nova/
end script

exec su -c "nova-objectstore --flagfile=/etc/nova/nova.conf" nova
NOVA_OBJECT_INIT

1.2.8.1.3. nova-network

$ cat << 'NOVA_NETWORK_INIT' | sudo tee /etc/init/nova-network.conf > /dev/null
description "Nova network worker"
author "Soren Hansen <soren@linux2go.dk>"

start on (filesystem and net-device-up IFACE!=lo)
stop on runlevel [016]

chdir /var/run

pre-start script
       mkdir -p /var/run/nova
       chown nova:root /var/run/nova/
        chmod 775 /var/run/nova/

       mkdir -p /var/lock/nova
       chown nova:root /var/lock/nova/
        chmod 775 /var/lock/nova/
end script

exec su -c "nova-network --flagfile=/etc/nova/nova.conf" nova
NOVA_NETWORK_INIT

1.2.8.1.4. nova-scheduler

$ cat << 'NOVA_SCHEDULER_INIT' | sudo tee /etc/init/nova-scheduler.conf > /dev/null
description "Nova scheduler"
author "Soren Hansen <soren@linux2go.dk>"

start on (filesystem and net-device-up IFACE!=lo)
stop on runlevel [016]


chdir /var/run

pre-start script
        mkdir -p /var/run/nova
        chown nova:root /var/run/nova/
        chmod 775 /var/run/nova/

        mkdir -p /var/lock/nova
        chown nova:root /var/lock/nova/
        chmod 775 /var/lock/nova/
end script

exec su -c "nova-scheduler --flagfile=/etc/nova/nova.conf" nova
NOVA_SCHEDULER_INIT

1.2.8.1.5. NovaCompute

$ cat << 'NOVA_COMPUTE_INIT' | sudo tee /etc/init/nova-compute.conf > /dev/null
description "Nova compute worker"
author "Soren Hansen <soren@linux2go.dk>"

start on (filesystem and net-device-up IFACE!=lo)
stop on runlevel [016]


chdir /var/run

pre-start script
       mkdir -p /var/run/nova
       chown nova:root /var/run/nova/
        chmod 775 /var/run/nova/

       mkdir -p /var/lock/nova
       chown nova:root /var/lock/nova/
        chmod 775 /var/run/nova/

       modprobe nbd
end script

exec su -c "nova-compute --flagfile=/etc/nova/nova.conf --flagfile=/etc/nova/nova-compute.conf" nova
NOVA_COMPUTE_INIT

1.2.8.1.6. NovaVolume

$ cat << 'NOVA_VOLUME_INIT' | sudo tee /etc/init/nova-volume.conf > /dev/null
description "Nova Volume server"
author "Soren Hansen <soren@linux2go.dk>"

start on (filesystem and net-device-up IFACE!=lo)
stop on runlevel [016]


chdir /var/run

pre-start script
       mkdir -p /var/run/nova
       chown nova:root /var/run/nova/
end script

exec su -c "nova-volume --flagfile=/etc/nova/nova.conf" nova
NOVA_VOLUME_INIT

1.2.8.2. Glance

起動ユーザを先に作成します。

$ sudo useradd glance -m -d /var/lib/glance -s /bin/false
$ sudo usermod -G stack glance

1.2.8.2.1. GlanceAPI

$ cat << 'GLANCE_API_INIT' | sudo tee /etc/init/glance-api.conf > /dev/null
description "Glance API server"
author "Soren Hansen <soren@linux2go.dk>"

start on (local-filesystems and net-device-up IFACE!=lo)
stop on runlevel [016]

respawn

exec su -s /bin/sh -c "exec glance-api" glance
GLANCE_API_INIT

1.2.8.2.2. GlanceRegistry

$ cat << 'GLANCE_REGISTRY_INIT' | sudo tee /etc/init/glance-registry.conf > /dev/null
author "Soren Hansen <soren@linux2go.dk>"

start on (local-filesystems and net-device-up IFACE!=lo)
stop on runlevel [016]

respawn

exec su -s /bin/sh -c "exec glance-registry" glance
GLANCE_REGISTRY_INIT

1.2.8.2.3. Keystone

起動ユーザも先に作成します。

$ sudo useradd keystone -m -d /var/lib/keystone
$ sudo usermod -G stack keystone
$ cat << 'KEYSTONE_INIT' | sudo tee /etc/init/keystone.conf > /dev/null
description "Keystone API server"
author "Soren Hansen <soren@linux2go.dk>"

start on (local-filesystems and net-device-up IFACE!=lo)
stop on runlevel [016]

respawn

#exec su -c "keystone --log-dir=/var/log/keystone --log-file=api.log" keystone
exec su -c "keystone --log-dir=/opt/stack/keystone --log-file=api.log" keystone
KEYSTONE_INIT

1.2.8.2.4. vncproxy

nova-vncproxyをそのまま起動してもダメなので変更しています。しかしservicelistではXXXになっちゃいます。

$ cat << 'NOVA_PROXY_INIT' | sudo tee /etc/init/nova-vncproxy.conf > /dev/null
description "Nova VNC proxy"
author "Vishvananda Ishaya <vishvananda@gmail.com>"

start on (filesystem and net-device-up IFACE!=lo)
stop on runlevel [016]


chdir /var/run

pre-start script
       mkdir -p /var/run/nova
       chown nova:root /var/run/nova/

       mkdir -p /var/lock/nova
       chown nova:root /var/lock/nova/
end script

#exec su -c "nova-vncproxy --flagfile=/etc/nova/nova.conf" root
exec su -c "cd /opt/noVNC && /opt/noVNC/utils/nova-wsproxy.py --flagfile /etc/nova/nova.conf --web . 6080" nova
NOVA_PROXY_INIT

1.2.8.3. サービスの起動

管理サーバであれば本来は、 nova-api , nova-network , nova-compute は起動する必要ありませんが ComputeNode としても利用するため起動します。

また、起動したはずなのに起動できていない場合はグループに追加したはずなのに何か設定から消えるのでしつこく追加すれば起動します。。一度起動できれば消えません。理由が謎です。コマンドが間違えているよなどあればご指摘いただければ嬉しいです。

1.2.8.3.1. Nova関連の起動

$ sudo usermod -G stack nova
$ sudo usermod -G libvirtd nova
$ for i in api network objectstore scheduler compute volume vncproxy
do
  sudo start nova-$i ; sudo restart nova-$i
done

1.2.8.3.2. Glance及びKeystonの起動

$ sudo \rm /opt/stack/glance/registry.log
$ for i in glance-api glance-registry keystone
do
  sudo start $i ;sudo restart $i
done