18.5. Red Hat Ceph Storage のアップグレードと cephadm の導入
環境に Red Hat Ceph Storage デプロイメントが含まれている場合は、デプロイメントを Red Hat Ceph Storage 5 にアップグレードする必要があります。バージョン 5 へのアップグレードにより、cephadm
は、ceph-ansible
の代わりに Red Hat Ceph Storage を管理するようになりました。
手順
-
ceph-admin-user-playbook.yaml
という名前の Ansible Playbook ファイルを作成して、オーバークラウドノードにceph-admin
ユーザーを作成します。 次の設定を
ceph-admin-user-playbook.yaml
ファイルに追加します。- hosts: localhost gather_facts: false tasks: - name: set ssh key path facts set_fact: private_key: "{{ lookup('env', 'HOME') }}/.ssh/{{ tripleo_admin_user }}-id_rsa" public_key: "{{ lookup('env', 'HOME') }}/.ssh/{{ tripleo_admin_user }}-id_rsa.pub" run_once: true - name: stat private key stat: path: "{{ private_key }}" register: private_key_stat - name: create private key if it does not exist shell: "ssh-keygen -t rsa -q -N '' -f {{ private_key }}" no_log: true when: - not private_key_stat.stat.exists - name: stat public key stat: path: "{{ public_key }}" register: public_key_stat - name: create public key if it does not exist shell: "ssh-keygen -y -f {{ private_key }} > {{ public_key }}" when: - not public_key_stat.stat.exists - hosts: overcloud gather_facts: false become: true pre_tasks: - name: Get local private key slurp: src: "{{ hostvars['localhost']['private_key'] }}" register: private_key_get delegate_to: localhost no_log: true - name: Get local public key slurp: src: "{{ hostvars['localhost']['public_key'] }}" register: public_key_get delegate_to: localhost roles: - role: tripleo_create_admin tripleo_admin_user: "{{ tripleo_admin_user }}" tripleo_admin_pubkey: "{{ public_key_get['content'] | b64decode }}" tripleo_admin_prikey: "{{ private_key_get['content'] | b64decode }}" no_log: true
Playbook を
openstackclient
コンテナーにコピーします。$ oc cp -n openstack ceph-admin-user-playbook.yml openstackclient:/home/cloud-admin/ceph-admin-user-playbook.yml
openstackclient
コンテナーで Playbook を実行します。$ oc rsh -n openstack openstackclient $ ansible-playbook -i /home/cloud-admin/ctlplane-ansible-inventory -e tripleo_admin_user=ceph-admin -e distribute_private_key=true /home/cloud-admin/ceph-admin-user-playbook.yml
デプロイメントで使用する Red Hat Ceph Storage のバージョンに合わせて、
containers-prepare-parameter.yaml
ファイル内の Red Hat Ceph Storage コンテナーイメージのパラメーターを更新します。ceph_namespace: registry.redhat.io/rhceph ceph_image: <ceph_image_file> ceph_tag: latest ceph_grafana_image: <grafana_image_file> ceph_grafana_namespace: registry.redhat.io/rhceph ceph_grafana_tag: latest
<ceph_image_file>
は、デプロイメントで使用する Red Hat Ceph Storage のバージョンのイメージファイルの名前に置き換えます。-
Red Hat Ceph Storage 5:
rhceph-5-rhel8
-
Red Hat Ceph Storage 5:
<grafana_image_file>
をデプロイメントで使用する Red Hat Ceph Storage のバージョンのイメージファイルの名前に置き換えます。-
Red Hat Ceph Storage 5:
rhceph-5-dashboard-rhel8
-
Red Hat Ceph Storage 5:
-
デプロイメントに HCI が含まれている場合は、
compute-hci.yaml
のCephAnsibleRepo
パラメーターを "rhelosp-ceph-5-tools" に更新します。 upgrade.yaml
という名前の環境ファイルを作成し、そのファイルに次の設定を追加します。parameter_defaults: UpgradeInitCommand: | sudo subscription-manager repos --disable * if $( grep -q 9.2 /etc/os-release ) then sudo subscription-manager repos --enable=rhel-9-for-x86_64-baseos-eus-rpms --enable=rhel-9-for-x86_64-appstream-eus-rpms --enable=rhel-9-for-x86_64-highavailability-eus-rpms --enable=openstack-17.1-for-rhel-9-x86_64-rpms --enable=fast-datapath-for-rhel-9-x86_64-rpms sudo podman ps | grep -q ceph && subscription-manager repos --enable=rhceph-5-tools-for-rhel-9-x86_64-rpms sudo subscription-manager release --set=9.2 else sudo subscription-manager repos --enable=rhel-8-for-x86_64-baseos-tus-rpms --enable=rhel-8-for-x86_64-appstream-tus-rpms --enable=rhel-8-for-x86_64-highavailability-tus-rpms --enable=openstack-17.1-for-rhel-8-x86_64-rpms --enable=fast-datapath-for-rhel-8-x86_64-rpms sudo podman ps | grep -q ceph && subscription-manager repos --enable=rhceph-5-tools-for-rhel-8-x86_64-rpms sudo subscription-manager release --set=8.4 fi sudo dnf -y install cephadm
-
ceph-upgrade
という名前の新しいOpenStackConfigGenerator
CR を作成して、更新した環境ファイルと tripleo-tarball ConfigMap を含めます。 ワークステーション上に
openstack-ceph-upgrade.yaml
という名前のファイルを作成して、Red Hat Ceph Storage 4 から 5 へのアップグレード用のOpenStackDeploy
CR を定義します。apiVersion: osp-director.openstack.org/v1beta1 kind: OpenStackDeploy metadata: name: ceph-upgrade spec: configVersion: <config_version> configGenerator: ceph-upgrade mode: externalUpgrade advancedSettings: skipTags: - ceph_health - opendev-validation - ceph_ansible_remote_tmp tags: - ceph - facts
-
openstack-ceph-upgrade.yaml
ファイルを保存します。 OpenStackDeploy
リソースを作成します。$ oc create -f openstack-ceph-upgrade.yaml -n openstack
- デプロイが完了するまで待ちます。
ワークステーション上に
openstack-ceph-upgrade-packages.yaml
という名前のファイルを作成して、Red Hat Ceph Storage パッケージをアップグレードするOpenStackDeploy
CR を定義します。apiVersion: osp-director.openstack.org/v1beta1 kind: OpenStackDeploy metadata: name: ceph-upgrade-packages spec: configVersion: <config_version> configGenerator: ceph-upgrade mode: upgrade advancedSettings: limit: ceph_osd,ceph_mon,Undercloud playbook: - upgrade_steps_playbook.yaml skipTags: - ceph_health - opendev-validation - ceph_ansible_remote_tmp tags: - setup_packages
-
openstack-ceph-upgrade-packages.yaml
ファイルを保存します。 OpenStackDeploy
リソースを作成します。$ oc create -f openstack-ceph-upgrade-packages.yaml -n openstack
- デプロイが完了するまで待ちます。
ワークステーション上に
openstack-ceph-upgrade-to-cephadm.yaml
という名前のファイルを作成して、cephadm
の導入を実行するOpenStackDeploy
CR を定義します。apiVersion: osp-director.openstack.org/v1beta1 kind: OpenStackDeploy metadata: name: ceph-upgrade-to-cephadm spec: configVersion: <config_version> configGenerator: ceph-upgrade mode: externalUpgrade advancedSettings: skipTags: - ceph_health - opendev-validation - ceph_ansible_remote_tmp tags: - cephadm_adopt
-
openstack-ceph-upgrade-to-cephadm.yaml
ファイルを保存します。 OpenStackDeploy
リソースを作成します。$ oc create -f openstack-ceph-upgrade-to-cephadm.yaml -n openstack
- デプロイが完了するまで待ちます。
openstackclient
CR から現在のimageURL
を削除して、openstackclient
イメージを RHEL9 コンテナーイメージに更新します。$ oc patch openstackclient -n openstack openstackclient --type=json -p="[{'op': 'remove', 'path': '/spec/imageURL'}]"