| Works
OpenStackにHeatをインストール
社内のOpenStack環境はPackstackでインストールしたのですが、その時に入れたのは「Nova」「Keystone」「Glance」「Neutron」「Cinder」「Horizon」のみです。
ただ、OpenStackの環境を十分に活かすためにはオーケストレーションは必須だろうということで「Heat」を追加することにしました。
基本的にはRed Hat社のマニュアル通りに進めたのですが、その時の手順メモです。
環境はRHEL 7とRed Hat Enterprise Linux OpenStack Platform 5 [Icehouseベース])の組み合わせです。
OpenStackは一つノードに全てのコンポーネントを入れており、IPアドレスは"192.168.40.91"としています。
まずは必要なパッケージをインストール
# yum -y install openstack-heat-* python-heatclient python-openstackclient openstack-utils
続いてHeat用のデータベース/ユーザーを作成します。
MySQL(MariaDB)にrootユーザーでアクセスし、次のSQLを実行します。
ここではHeat用のデータベース/ユーザー/パスワードは全て"heat"にしています。
CREATE DATABASE heat;
GRANT ALL ON heat.* TO 'heat'@'%' IDENTIFIED BY 'heat';
GRANT ALL ON heat.* TO 'heat'@'localhost' IDENTIFIED BY 'heat';
FLUSH PRIVILEGES;
Heatの設定ファイル"heat.conf"にデータベースへのアクセス情報を記述します。
ファイルを"vi"等で変更してもいいのですが、ここでは"crudini"コマンドで操作します(その方が後でスクリプト化しやすいので)。
# crudini --set /etc/heat/heat.conf DEFAULT sql_connection mysql://heat:heat@localhost/heat
Heat用データベースを初期化します。
# runuser -s /bin/sh heat -c "heat-manage db_sync"
"heat.conf"内でAPI関連の各セクションに"bind_host"を記述します。
# crudini --set /etc/heat/heat.conf heat_api bind_host 192.168.40.91
# crudini --set /etc/heat/heat.conf heat_api_cfn bind_host 192.168.40.91
# crudini --set /etc/heat/heat.conf heat_api_cloudwatch bind_host 192.168.40.91
続いてkeystoneでHeat用ユーザー、サービス、エンドポイントを設定します。
管理者用の認証情報を記載した環境ファイル"keystonerc_admin"ファイルを読み込んでから"keystone"コマンドを実行します。
# . /root/keystonerc_admin
# keystone user-create --name=heat --pass=heat
# keystone user-role-add --user heat --role admin --tenant services
# keystone service-create --name heat --type orchestration
# keystone service-create --name heat-cfn --type cloudformation
# keystone endpoint-create --region RegionOne \
--service heat-cfn \
--publicurl "http://192.168.40.91:8000/v1" \
--adminurl "http://192.168.40.91:8000/v1" \
--internalurl "http://192.168.40.91:8000/v1"
# keystone endpoint-create --region RegionOne \
--service heat \
--publicurl "http://192.168.40.91:8004/v1/%(tenant_id)s" \
--adminurl "http://192.168.40.91:8004/v1/%(tenant_id)s" \
--internalurl "http://192.168.40.91:8004/v1/%(tenant_id)s"
Keystone v3 APIを使用してHeat用のIdentityドメインを作成します。
あらかじめ管理トークンを確認します。管理トークンは"keystone.conf"ファイルで"admin_token"に設定されている値です。
管理トークンは以降のコマンドで繰り返し使うので、変数に入れておきます。
# ADMIN_TOKEN=$(crudini --get /etc/keystone/keystone.conf DEFAULT admin_token)
ドメイン"heat"、ドメイン管理ユーザー"heat_domain_admin"を作成し、権限を付与します。
ドメインやユーザーを作成したときに表示されるIDを変数に入れ、後のコマンドで使いやすくしておきます。
# openstack --os-token $ADMIN_TOKEN --os-url=http://192.168.40.91:5000/v3 \
--os-identity-api-version=3 domain create heat \
--description "Owns users and projects created by heat"
# DOMAIN_ID=$(openstack --os-token $ADMIN_TOKEN --os-url=http://192.168.40.91:5000/v3 --os-identity-api-version=3 domain list | awk '/heat/ {print $2}')
# openstack --os-token $ADMIN_TOKEN --os-url=http://192.168.40.91:5000/v3 \
--os-identity-api-version=3 user create heat_domain_admin \
--password heat --domain ${DOMAIN_ID} \
--description "Manages users and projects created by heat"
# DOMAIN_ADMIN_ID=$(openstack --os-token $ADMIN_TOKEN --os-url=http://192.168.40.91:5000/v3 --os-identity-api-version=3 user list | awk '/heat_domain_admin/ {print $2}')
# openstack --os-token $ADMIN_TOKEN --os-url=http://192.168.40.91:5000/v3 \
--os-identity-api-version=3 role add \
--user ${DOMAIN_ADMIN_ID} --domain ${DOMAIN_ID} admin
ここまで作成した認証情報やエンドポイントの情報を"heat.conf"に記述していきます。
# crudini --set /etc/heat/heat.conf DEFAULT stack_domain_admin_password heat
# crudini --set /etc/heat/heat.conf DEFAULT stack_domain_admin ${DOMAIN_ADMIN_ID}
# crudini --set /etc/heat/heat.conf DEFAULT stack_user_domain ${DOMAIN_ID}
# crudini --set /etc/heat/heat.conf DEFAULT heat_metadata_server_url http://192.168.40.91:8000
# crudini --set /etc/heat/heat.conf DEFAULT heat_waitcondition_server_url http://192.168.40.91:8000/v1/waitcondition
# crudini --set /etc/heat/heat.conf DEFAULT heat_watch_server_url http://192.168.40.91:8003
# crudini --set /etc/heat/heat.conf DEFAULT heat_stack_user_role heat_stack_user
# crudini --set /etc/heat/heat.conf keystone_authtoken admin_tenant_name services
# crudini --set /etc/heat/heat.conf keystone_authtoken admin_user heat
# crudini --set /etc/heat/heat.conf keystone_authtoken admin_password heat
# crudini --set /etc/heat/heat.conf keystone_authtoken service_host 192.168.40.91
# crudini --set /etc/heat/heat.conf keystone_authtoken auth_host 192.168.40.91
# crudini --set /etc/heat/heat.conf keystone_authtoken auth_uri http://192.168.40.91:35357/v2.0
# crudini --set /etc/heat/heat.conf keystone_authtoken keystone_ec2_uri http://192.168.40.91:35357/v2.0
RabbitMQを使うための設定を追加します。
# crudini --set /etc/heat/heat.conf DEFAULT rpc_backend heat.openstack.common.rpc.impl_kombu
# crudini --set /etc/heat/heat.conf DEFAULT rabbit_host 192.168.40.91
# crudini --set /etc/heat/heat.conf DEFAULT rabbit_port 5672
# crudini --set /etc/heat/heat.conf DEFAULT rabbit_userid guest
# crudini --set /etc/heat/heat.conf DEFAULT rabbit_password guest
Heat関連サービスの起動、自動起動の有効化をします。
# systemctl start openstack-heat-api
# systemctl start openstack-heat-api-cfn
# systemctl start openstack-heat-api-cloudwatch
# systemctl start openstack-heat-engine
# systemctl enable openstack-heat-api
# systemctl enable openstack-heat-api-cfn
# systemctl enable openstack-heat-api-cloudwatch
# systemctl enable openstack-heat-engine
以上で設定は完了です。
"openstack-status"コマンドや"/var/log/heat"ディレクトリ以下のログファイルを確認してエラーがないことを確認します。
また、Horizonに「オーケストレーション」メニューが追加されます。
あとは実際にテンプレートを作成して動作確認ですが、とりあえずここまで。