付録A アンダークラウドの復元
以下の復元の手順は、お使いのアンダークラウドノードでエラーが発生して、回復不能な状態であることを前提としています。この手順では、新規インストール環境でデータベースおよびクリティカルなファイルシステムの復元を行う必要があります。以下が前提条件です。
- Red Hat Enterprise Linux 7 の最新版を再インストール済みであること
- ハードウェアレイアウトが同じであること
- マシンのホスト名とアンダークラウドの設定が同じであること
-
バックアップアーカイブが
root
ディレクトリーにコピー済みであること
手順
-
お使いのアンダークラウドに
root
ユーザーとしてログインします。 コンテンツ配信ネットワークにシステムを登録します。プロンプトが表示されたら、カスタマーポータルのユーザー名とパスワードを入力します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow subscription-manager register
[root@director ~]# subscription-manager register
Red Hat OpenStack Platform のエンタイトルメントをアタッチします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow subscription-manager attach --pool=Valid-Pool-Number-123456
[root@director ~]# subscription-manager attach --pool=Valid-Pool-Number-123456
デフォルトのリポジトリーをすべて無効にしてから、必要な Red Hat Enterprise Linux リポジトリーを有効にします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow subscription-manager repos --disable=* subscription-manager repos --enable=rhel-7-server-rpms --enable=rhel-7-server-extras-rpms --enable=rhel-7-server-rh-common-rpms --enable=rhel-ha-for-rhel-7-server-rpms --enable=rhel-7-server-openstack-10-rpms
[root@director ~]# subscription-manager repos --disable=* [root@director ~]# subscription-manager repos --enable=rhel-7-server-rpms --enable=rhel-7-server-extras-rpms --enable=rhel-7-server-rh-common-rpms --enable=rhel-ha-for-rhel-7-server-rpms --enable=rhel-7-server-openstack-10-rpms
システムで更新を実行して、ベースシステムパッケージを最新の状態にします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum update -y reboot
[root@director ~]# yum update -y [root@director ~]# reboot
アンダークラウドの時刻が同期されていることを確認します。以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install -y ntp systemctl start ntpd systemctl enable ntpd ntpdate pool.ntp.org systemctl restart ntpd
[root@director ~]# yum install -y ntp [root@director ~]# systemctl start ntpd [root@director ~]# systemctl enable ntpd [root@director ~]# ntpdate pool.ntp.org [root@director ~]# systemctl restart ntpd
-
アンダークラウドのバックアップアーカイブをアンダークラウドの
root
ディレクトリーにコピーします。これ以降のステップでは、ファイル名にundercloud-backup-$TIMESTAMP.tar
を使用しています。ここで、$TIMESTAMP はアーカイブのタイムスタンプの Bash 変数です。 データベースサーバーとクライアントツールをインストールします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install -y mariadb mariadb-server
[root@director ~]# yum install -y mariadb mariadb-server
データベースを起動します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl start mariadb systemctl enable mariadb
[root@director ~]# systemctl start mariadb [root@director ~]# systemctl enable mariadb
データベースのバックアップのサイズに対応するように、許可されるパケット数を増やします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mysql -uroot -e"set global max_allowed_packet = 1073741824;"
[root@director ~]# mysql -uroot -e"set global max_allowed_packet = 1073741824;"
アーカイブからデータベースおよびデータベース設定を抽出します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/my.cnf.d/*server*.cnf tar -xvC / -f undercloud-backup-$TIMESTAMP.tar root/undercloud-all-databases.sql
[root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/my.cnf.d/*server*.cnf [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar root/undercloud-all-databases.sql
データベースのバックアップをリストアします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mysql -u root < /root/undercloud-all-databases.sql
[root@director ~]# mysql -u root < /root/undercloud-all-databases.sql
root 設定ファイルの一時バージョンを抽出します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow tar -xvf undercloud-backup-$TIMESTAMP.tar root/.my.cnf
[root@director ~]# tar -xvf undercloud-backup-$TIMESTAMP.tar root/.my.cnf
データベースの古い root パスワードを取得します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OLDPASSWORD=$(sudo cat root/.my.cnf | grep -m1 password | cut -d'=' -f2 | tr -d "'")
[root@director ~]# OLDPASSWORD=$(sudo cat root/.my.cnf | grep -m1 password | cut -d'=' -f2 | tr -d "'")
データベースの root パスワードをリセットします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mysqladmin -u root password "$OLDPASSWORD"
[root@director ~]# mysqladmin -u root password "$OLDPASSWORD"
root 設定ファイルを一時ディレクトリーから
root
ディレクトリーに移動します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow mv ~/root/.my.cnf ~/. rmdir ~/root
[root@director ~]# mv ~/root/.my.cnf ~/. [root@director ~]# rmdir ~/root
古いユーザー権限の一覧を取得します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mysql -e 'select host, user, password from mysql.user;'
[root@director ~]# mysql -e 'select host, user, password from mysql.user;'
リストされた各ホストの古いユーザー権限を削除します。以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow HOST="192.0.2.1" USERS=$(mysql -Nse "select user from mysql.user WHERE user != \"root\" and host = \"$HOST\";" | uniq | xargs) for USER in $USERS ; do mysql -e "drop user \"$USER\"@\"$HOST\"" || true ;done for USER in $USERS ; do mysql -e "drop user $USER" || true ;done mysql -e 'flush privileges'
[root@director ~]# HOST="192.0.2.1" [root@director ~]# USERS=$(mysql -Nse "select user from mysql.user WHERE user != \"root\" and host = \"$HOST\";" | uniq | xargs) [root@director ~]# for USER in $USERS ; do mysql -e "drop user \"$USER\"@\"$HOST\"" || true ;done [root@director ~]# for USER in $USERS ; do mysql -e "drop user $USER" || true ;done [root@director ~]# mysql -e 'flush privileges'
ホスト IP および任意のホスト (“%") からアクセスするすべてのユーザーについて、この手順を実施します。
注記HOST パラメーターの IP アドレスは、コントロールプレーン内のアンダークラウドの IP アドレスです。
データベースを再起動します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart mariadb
[root@director ~]# systemctl restart mariadb
stack
ユーザーを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow useradd stack
[root@director ~]# useradd stack
ユーザーのパスワードを設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow passwd stack
[root@director ~]# passwd stack
sudo
を使用する場合にパスワードを要求されないようにします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack chmod 0440 /etc/sudoers.d/stack
[root@director ~]# echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack [root@director ~]# chmod 0440 /etc/sudoers.d/stack
stack
ユーザーのホームディレクトリーをリストアします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow tar -xvC / -f undercloud-backup-$TIMESTAMP.tar home/stack
# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar home/stack
policycoreutils-python
パッケージをインストールします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum -y install policycoreutils-python
[root@director ~]# yum -y install policycoreutils-python
openstack-glance
パッケージをインストールして、そのデータおよびファイルパーミッションをリストアします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install -y openstack-glance tar --xattrs --xattrs-include='*.*' -xvC / -f undercloud-backup-$TIMESTAMP.tar var/lib/glance/images chown -R glance: /var/lib/glance/images restorecon -R /var/lib/glance/images
[root@director ~]# yum install -y openstack-glance [root@director ~]# tar --xattrs --xattrs-include='*.*' -xvC / -f undercloud-backup-$TIMESTAMP.tar var/lib/glance/images [root@director ~]# chown -R glance: /var/lib/glance/images [root@director ~]# restorecon -R /var/lib/glance/images
openstack-swift
パッケージをインストールして、そのデータおよびファイルパーミッションをリストアします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install -y openstack-swift tar --xattrs --xattrs-include='*.*' -xvC / -f undercloud-backup-$TIMESTAMP.tar srv/node chown -R swift: /srv/node restorecon -R /srv/node
[root@director ~]# yum install -y openstack-swift [root@director ~]# tar --xattrs --xattrs-include='*.*' -xvC / -f undercloud-backup-$TIMESTAMP.tar srv/node [root@director ~]# chown -R swift: /srv/node [root@director ~]# restorecon -R /srv/node
openstack-keystone
パッケージをインストールして、その設定データをリストアします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum -y install openstack-keystone tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/keystone restorecon -R /etc/keystone
[root@director ~]# yum -y install openstack-keystone [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/keystone [root@director ~]# restorecon -R /etc/keystone
openstack-heat
をインストールして、設定をリストアします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install -y openstack-heat* tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/heat restorecon -R /etc/heat
[root@director ~]# yum install -y openstack-heat* [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/heat [root@director ~]# restorecon -R /etc/heat
Puppet をインストールして、その設定データをリストアします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install -y puppet hiera tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/puppet/hieradata/
[root@director ~]# yum install -y puppet hiera [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/puppet/hieradata/
アンダークラウドで SSL を使用する場合は、CA 証明書を更新します。アンダークラウドの設定に応じて、ユーザー提供の証明書の手順または自動生成された証明書の手順のいずれかを使用します。
アンダークラウドがユーザー提供の証明書で設定されている場合は、次の手順を実行します。
証明書を抽出します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/instack-certs/undercloud.pem tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/ca-trust/source/anchors/*
[root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/instack-certs/undercloud.pem [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/ca-trust/source/anchors/*
SELinux コンテキストを復元し、ファイルシステムのラベル付けを管理します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow restorecon -R /etc/pki semanage fcontext -a -t etc_t "/etc/pki/instack-certs(/.*)?" restorecon -R /etc/pki/instack-certs
[root@director ~]# restorecon -R /etc/pki [root@director ~]# semanage fcontext -a -t etc_t "/etc/pki/instack-certs(/.*)?" [root@director ~]# restorecon -R /etc/pki/instack-certs
証明書を更新します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow update-ca-trust extract
[root@director ~]# update-ca-trust extract
certmonger
を使用してアンダークラウドの証明書を自動生成する場合は、以下の手順を実行します。証明書、CA 証明書、および certmonger ファイルを抽出します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow tar -xvC / -f undercloud-backup-$TIMESTAMP.tar var/lib/certmonger/* tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/tls/* tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/ca-trust/source/anchors/*
[root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar var/lib/certmonger/* [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/tls/* [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/ca-trust/source/anchors/*
SELinux コンテキストを復元します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow restorecon -R /etc/pki restorecon -R /var/lib/certmonger
[root@director ~]# restorecon -R /etc/pki [root@director ~]# restorecon -R /var/lib/certmonger
/var/lib/certmonger/lock
ファイルを削除します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow rm -f /var/lib/certmonger/lock
[root@director ~]# rm -f /var/lib/certmonger/lock
stack
ユーザーに切り替えます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow su - stack
[root@director ~]# su - stack [stack@director ~]$
python-tripleoclient
パッケージをインストールします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo yum install -y python-tripleoclient
$ sudo yum install -y python-tripleoclient
アンダークラウドのインストールコマンドを実行します。このコマンドは、
stack
ユーザーのホームディレクトリーから実行するようにしてください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack undercloud install
[stack@director ~]$ openstack undercloud install
インストールが完了すると、アンダークラウドは、オーバークラウドへの接続を自動的にリストアします。ノードは、保留中のタスクに対して、OpenStack Orchestration (heat) のポーリングを続けます。