Update Ansible to 2.8.2, Ceph-Ansible to 4.0, Ceph to Nautilus
This patch updates to the current version of Ansible in the 2.8 series, 2.8.2. Ceph-Ansible must be moved to version 4.0 to be compatible with Ansible 2.8 [1]. Older versions of Ceph-Ansible use syntax which is invalid for Ansible 2.8. In turn, Ceph-Ansible 4.0 can only install the Nautilus release of Ceph, there is no overlap with the previous Ceph release as there has been in the prior Ceph-Ansible 3.x series. This patch updates provisioning of the OSA AIO ceph build to be compatible with the ceph-volume tool [2], specifically ceph-volume cannot prepare OSDs from loopback devices. The AIO boostrap now creates LVM on top of the loopbacks which are then consumed by ceph-volume. The configuration of radosgw is updated to account for the addition of instance names to rados gateway configurations [3][4]. [1] http://docs.ceph.com/ceph-ansible/master/#releases [2] http://docs.ceph.com/docs/nautilus/ceph-volume [3]367dce2894/roles/ceph-config/templates/ceph.conf.j2 (L115-L116)
[4]367dce2894/roles/ceph-facts/tasks/facts.yml (L276-L280)
Change-Id: I7075be2b06e81e1008bd393cf0fc5619dad24e7e
This commit is contained in:
parent
0f970aa3b1
commit
fc1a968e30
@ -261,8 +261,8 @@
|
|||||||
- name: ceph-ansible
|
- name: ceph-ansible
|
||||||
scm: git
|
scm: git
|
||||||
src: https://github.com/ceph/ceph-ansible
|
src: https://github.com/ceph/ceph-ansible
|
||||||
version: stable-3.2
|
version: stable-4.0
|
||||||
trackbranch: stable-3.2
|
trackbranch: stable-4.0
|
||||||
- name: opendaylight
|
- name: opendaylight
|
||||||
scm: git
|
scm: git
|
||||||
src: https://github.com/opendaylight/integration-packaging-ansible-opendaylight
|
src: https://github.com/opendaylight/integration-packaging-ansible-opendaylight
|
||||||
|
@ -25,7 +25,7 @@ ceph_repository: community
|
|||||||
# The _stable_release var is used by both the OSA ceph_client role and the
|
# The _stable_release var is used by both the OSA ceph_client role and the
|
||||||
# ceph-ansible roles. It is defaulted in ceph_client but set here to keep the
|
# ceph-ansible roles. It is defaulted in ceph_client but set here to keep the
|
||||||
# OSA/ceph-ansible integrations in sync.
|
# OSA/ceph-ansible integrations in sync.
|
||||||
ceph_stable_release: mimic
|
ceph_stable_release: nautilus
|
||||||
fetch_directory: "{{ openstack_config_dir }}/ceph-fetch/"
|
fetch_directory: "{{ openstack_config_dir }}/ceph-fetch/"
|
||||||
# tries to create /var/log/ceph as a directory and fails if the log link already
|
# tries to create /var/log/ceph as a directory and fails if the log link already
|
||||||
# exists. we handle the log dir creation so this is not something we need
|
# exists. we handle the log dir creation so this is not something we need
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
ceph_conf_overrides_rgw:
|
ceph_conf_overrides_rgw:
|
||||||
"client.rgw.{{ hostvars[inventory_hostname]['ansible_hostname'] }}":
|
"client.rgw.{{ hostvars[inventory_hostname]['ansible_hostname'] }}.rgw0":
|
||||||
# OpenStack integration with Keystone
|
# OpenStack integration with Keystone
|
||||||
rgw_keystone_url: "{{ keystone_service_adminuri }}"
|
rgw_keystone_url: "{{ keystone_service_adminuri }}"
|
||||||
rgw_keystone_api_version: 3
|
rgw_keystone_api_version: 3
|
||||||
@ -12,4 +12,4 @@ ceph_conf_overrides_rgw:
|
|||||||
rgw_keystone_implicit_tenants: 'true'
|
rgw_keystone_implicit_tenants: 'true'
|
||||||
rgw_enable_apis: swift
|
rgw_enable_apis: swift
|
||||||
rgw_swift_account_in_url: 'true'
|
rgw_swift_account_in_url: 'true'
|
||||||
rgw_swift_versioning_enabled: 'true'
|
rgw_swift_versioning_enabled: 'true'
|
||||||
|
@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
The ansible version used by OSA is updated from the 2.7 to the 2.8 series.
|
||||||
|
This requires an upgrade of ceph-ansible to 4.0 and this in turn
|
||||||
|
requires an upgrade of ceph from Mimic to Nautilus. This version dependancy
|
||||||
|
applies where OSA uses ceph-ansible directly to deploy the ceph infrastructure,
|
||||||
|
but not when OSA is integrated with an externally provisioned ceph cluster.
|
||||||
|
upgrade:
|
||||||
|
- |
|
||||||
|
Any ceph infrastructure components (OSDs, MONs etc) deployed using the
|
||||||
|
OSA/ceph-ansible tooling will be upgraded to the Ceph Nautilus release.
|
||||||
|
Deployers should verify that this upgrade is suitable for their environment
|
||||||
|
before commencing a major upgrade to Train, and consult the ceph-ansible
|
||||||
|
and ceph release notes for Nautilus. For integration with external ceph
|
||||||
|
clusters where OSA does not deploy any of the ceph cluster infrastructure,
|
||||||
|
overrides can be used to select the specific version of ceph repositories
|
||||||
|
used by the OSA ceph_client ansible role.
|
@ -22,7 +22,7 @@ set -e -u -x
|
|||||||
export HTTP_PROXY=${HTTP_PROXY:-""}
|
export HTTP_PROXY=${HTTP_PROXY:-""}
|
||||||
export HTTPS_PROXY=${HTTPS_PROXY:-""}
|
export HTTPS_PROXY=${HTTPS_PROXY:-""}
|
||||||
# The Ansible version used for testing
|
# The Ansible version used for testing
|
||||||
export ANSIBLE_PACKAGE=${ANSIBLE_PACKAGE:-"ansible==2.7.10"}
|
export ANSIBLE_PACKAGE=${ANSIBLE_PACKAGE:-"ansible==2.8.2"}
|
||||||
export ANSIBLE_ROLE_FILE=${ANSIBLE_ROLE_FILE:-"ansible-role-requirements.yml"}
|
export ANSIBLE_ROLE_FILE=${ANSIBLE_ROLE_FILE:-"ansible-role-requirements.yml"}
|
||||||
export SSH_DIR=${SSH_DIR:-"/root/.ssh"}
|
export SSH_DIR=${SSH_DIR:-"/root/.ssh"}
|
||||||
export DEBIAN_FRONTEND=${DEBIAN_FRONTEND:-"noninteractive"}
|
export DEBIAN_FRONTEND=${DEBIAN_FRONTEND:-"noninteractive"}
|
||||||
|
@ -62,13 +62,34 @@
|
|||||||
mode: "0777"
|
mode: "0777"
|
||||||
with_items: "{{ ceph_create_loopback.results }}"
|
with_items: "{{ ceph_create_loopback.results }}"
|
||||||
|
|
||||||
|
# NOTE(jrosser) ceph-volume is unwilling to automatically create OSD
|
||||||
|
# directly on loop devices - see http://tracker.ceph.com/issues/36603
|
||||||
|
# Work around this with manual LVM creation and the advanced lvm OSD
|
||||||
|
# scenario
|
||||||
|
- name: Create LVM VG
|
||||||
|
lvg:
|
||||||
|
vg: "vg-{{ item.stdout | basename }}"
|
||||||
|
pvs: "{{ item.stdout }}"
|
||||||
|
loop: "{{ ceph_create_loopback.results }}"
|
||||||
|
|
||||||
|
- name: Create LVM LV
|
||||||
|
lvol:
|
||||||
|
lv: "lv-{{ item.stdout | basename }}"
|
||||||
|
vg: "vg-{{ item.stdout | basename }}"
|
||||||
|
size: 100%FREE
|
||||||
|
loop: "{{ ceph_create_loopback.results }}"
|
||||||
|
|
||||||
# TODO(logan): Move these vars to user_variables.ceph.yml.j2 once LP #1649381
|
# TODO(logan): Move these vars to user_variables.ceph.yml.j2 once LP #1649381
|
||||||
# is fixed and eliminate this task.
|
# is fixed and eliminate this task.
|
||||||
- name: Write ceph cluster config
|
- name: Write ceph cluster config
|
||||||
copy:
|
copy:
|
||||||
content: |
|
content: |
|
||||||
---
|
---
|
||||||
devices: {{ ceph_create_loopback.results | map(attribute='stdout') | list | to_yaml | trim }}
|
lvm_volumes:
|
||||||
|
{% for d in ceph_create_loopback | json_query('results[].stdout') %}
|
||||||
|
- data_vg: vg-{{ d | basename }}
|
||||||
|
data: lv-{{ d | basename }}
|
||||||
|
{% endfor %}
|
||||||
cinder_backends:
|
cinder_backends:
|
||||||
"RBD":
|
"RBD":
|
||||||
volume_driver: cinder.volume.drivers.rbd.RBDDriver
|
volume_driver: cinder.volume.drivers.rbd.RBDDriver
|
||||||
|
Loading…
Reference in New Issue
Block a user