OpenStack環境の構築
それでは、実際にHeatを試してみるために、OpenStack環境を用意してみましょう。OpenStackの導入については、ブログやスライドなどでさまざまな方法が紹介されているので、自分の環境に合った方法を探してみてください。中でも、CentOSとPackStackを利用する方法が簡単なので、今回はそちらの手順を紹介します。
OpenStackサーバの準備
今回OpenStackを導入した環境は以下のとおりです。
- OS: CentOS-6.5-x86_64-minimal
- メモリ: 48GB
- ディスク: 75GB
- ネットワーク(デバイス名やIPアドレスは環境に合わせて読み替えてください)
DEVICE=eth0 TYPE=Ethernet NM_CONTROLLED=no ONBOOT=yes BOOTPROTO=static IPADDR=192.168.0.1 # サーバの固定IPアドレス NETMASK=255.255.255.0 # ネットワークのサブネットマスク GATEWAY=192.168.0.254 # デフォルトゲートウェイのIPアドレス
OpenStack導入前に以下の設定を行います。なお、これ以降の手順ですべてrootユーザで行っています。
DNSの設定
DNSが設定されていない場合は、 /etc/resolv.conf にDNSのIPアドレスを記述します。
echo "nameserver 8.8.8.8" > /etc/resolv.conf
Proxyの設定
外部との通信にProxyサーバを経由する場合は、環境変数にProxyの設定を行います。その際は、OpenStackのコンポーネント間での通信がProxyサーバを経由しないよう、サーバのIPアドレスをno_proxyに設定しておきます。
export http_proxy=http://<proxy_host>:<proxy_port>/ export https_proxy=$http_proxy export ftp_proxy=$http_proxy export no_proxy=localhost,127.0.0.1,192.168.0.1
SELinuxの設定
PackStack実行時のエラーを回避するため、SELinuxをPermissiveモードに設定します。
sed -i "s/SELINUX=.*/SELINUX=permissive/" /etc/selinux/config setenforce 0
カーネルパラメータの設定
OpenStackは、パケット送受信やフィルタリングなどをiptablesで制御します。ネットワークブリッジ上でもiptablesによる制御が有効になるよう、カーネルパラメータの設定を変更します。
sed -i -e "s/^net.bridge.bridge-nf-call-ip6tables = 0/net.bridge.bridge-nf-call-ip6tables = 1/" /etc/sysctl.conf sed -i -e "s/^net.bridge.bridge-nf-call-iptables = 0/net.bridge.bridge-nf-call-iptables = 1/" /etc/sysctl.conf sed -i -e "s/^net.bridge.bridge-nf-call-arptables = 0/net.bridge.bridge-nf-call-arptables = 1/" /etc/sysctl.conf
パッケージの最新化
インストールされているパッケージを最新版にアップデートしておきます。
yum update -y
PackStackによるOpenStackの導入
PackStackはRDOコミュニティが提供しているOpenStackのインストールツールです。RHEL、Fedora、CentOSといったOSに、簡単にOpenStackを導入することができます。
RDOのパッケージとPackStackを取得します。
yum install -y http://rdo.fedorapeople.org/rdo-release.rpm yum install -y openstack-packstack
Answer Fileの設定
Answer Fileと呼ばれる設定ファイルを作成します。
packstack --gen-answer-file answer.txt
Answer Fileには、インストールするコンポーネント、ホストのURL、DBやユーザ名やパスワードといったパラメータが記述されています。Answer Fileを作成せずにデフォルトの設定でPackStackを実行することも可能ですが、アップデートなどでデフォルトパラメータが変更になっていることがあるため、事前にパラメータを確認しておくことをお勧めします。
今回は、デフォルトの設定から以下のパラメータを変更します。
CONFIG_HEAT_INSTALL, CONFIG_HEAT_CLOUDWATCH_INSTALL, ONFIG_HEAT_CFN_INSTALL
Heatと関連モジュールのインストールの有無を設定します。本稿執筆時ではデフォルトでn(No)になっているため、y(Yes)に変更します。
CONFIG_NTP_SERVERS
NTPサーバのアドレスを設定します。デフォルトでは設定されていないため、任意のNTPサーバを指定しておきます。
CONFIG_KEYSTONE_ADMIN_PW
adminユーザのパスワードを設定します。ランダムな文字列が設定されているので、任意のパスワードに変更しておきます。
CONFIG_KEYSTONE_TOKEN_FORMAT
認証トークンのフォーマットを設定します。デフォルトのPKIはトークン長が大きく非常に見づらいので、UUIDに変更しておきます。
CONFIG_CINDER_VOLUMES_SIZE
ブロックストレージに割り当てるボリュームサイズを設定します。デフォルトでは20GBですが、環境に合わせて調整します。
CONFIG_PROVISION_DEMO
デモ用の環境を構築するかどうか設定します。今回は不要なのでn(No)にしておきます。
sed -i -e "s/^CONFIG_HEAT_INSTALL=n/CONFIG_HEAT_INSTALL=y/" answer.txt sed -i -e "s/^CONFIG_HEAT_CLOUDWATCH_INSTALL=n/CONFIG_HEAT_CLOUDWATCH_INSTALL=y/" answer.txt sed -i -e "s/^CONFIG_HEAT_CFN_INSTALL=n/CONFIG_HEAT_CFN_INSTALL=y/" answer.txt sed -i -e "s/^CONFIG_NTP_SERVERS=.*/CONFIG_NTP_SERVERS=ntp.nict.jp/" answer.txt sed -i -e "s/^CONFIG_KEYSTONE_ADMIN_PW=.*/CONFIG_KEYSTONE_ADMIN_PW=admin_password/" answer.txt sed -i -e "s/^CONFIG_KEYSTONE_TOKEN_FORMAT=PKI/CONFIG_KEYSTONE_TOKEN_FORMAT=UUID/" answer.txt sed -i -e "s/^CONFIG_CINDER_VOLUMES_SIZE=.*/CONFIG_CINDER_VOLUMES_SIZE=16G/" answer.txt sed -i -e "s/^CONFIG_PROVISION_DEMO=y/CONFIG_PROVISION_DEMO=n/" answer.txt
OpenStackのインストール
設定したAnswer Fileを指定してPackStackを実行します。
packstack --answer-file answer.txt
最初にrootユーザのパスワードを聞かれるので、パスワードを入力します。その後は、puppetが実行され、コンポーネントのインストールや設定が自動的に行われます。今回の環境では、40分程でインストールが完了しました。
インストールが完了すると、keystonerc_adminというadminユーザの認証情報が記述されたファイルが作成されます。
RDOのバグによりインストール中に「Failed to call refresh: Could not find command 'restorecon'」というエラーが発生する場合がありますが、再度PackStackを実行するとエラーなくインストールが継続されます。
