ceph-ansible/roles/ceph-mon/tasks/openstack_config.yml

77 lines
2.5 KiB
YAML
Raw Normal View History

---
- name: create openstack pool(s)
command: >
{{ docker_exec_cmd }} ceph --cluster {{ cluster }}
osd pool create {{ item.name }}
{{ item.pg_num }}
{{ item.pgp_num | default(item.pg_num) }}
{{ item.rule_name | default("replicated_rule") }}
{{ item.type | default("replicated") }}
{%- if item.type | default("replicated") == 'erasure' and item.erasure_profile != '' %}
{{ item.erasure_profile }}
{%- endif %}
{{ item.expected_num_objects | default('') }}
with_items: "{{ openstack_pools | unique }}"
changed_when: false
- name: assign rbd application to pool(s)
command: "{{ docker_exec_cmd }} ceph --cluster {{ cluster }} osd pool application enable {{ item.name }} rbd"
with_items: "{{ openstack_pools | unique }}"
changed_when: false
when:
- ceph_release_num[ceph_release] >= ceph_release_num['luminous']
- name: create openstack cephx key(s)
ceph_key:
state: present
name: "{{ item.name }}"
caps: "{{ item.caps }}"
secret: "{{ item.key | default('') }}"
containerized: "{{ docker_exec_cmd | default(False) }}"
cluster: "{{ cluster }}"
with_items: "{{ openstack_keys }}"
when: cephx
- name: fetch openstack cephx key(s)
fetch:
src: "/etc/ceph/{{ cluster }}.{{ item.name }}.keyring"
dest: "{{ fetch_directory }}/{{ fsid }}/etc/ceph/{{ cluster }}.{{ item.name }}.keyring"
flat: yes
with_items: "{{ openstack_keys }}"
- name: copy to other mons the openstack cephx key(s)
copy:
src: "{{ fetch_directory }}/{{ fsid }}/etc/ceph/{{ cluster }}.{{ item.1.name }}.keyring"
dest: "/etc/ceph/{{ cluster }}.{{ item.1.name }}.keyring"
with_nested:
- "{{ groups[mon_group_name] }}"
- "{{ openstack_keys }}"
delegate_to: "{{ item.0 }}"
when:
- cephx
- openstack_config
- item.0 != groups[mon_group_name] | last
- name: chmod openstack cephx key(s) on the other mons and this mon
file:
Set permissions and ACLs of OpenStack keys on all ceph-mons If ceph-ansible deploys a Ceph cluster with "openstack_config: true" and sets the openstack_keys map to have certain ACLs or permissions, the requested ACLs or permissions are only set on one of the monitor nodes [2] when they should be set on all of them. This patch solves [3] the above issue by having the chmod and setfacl tasks iterate the list of mon nodes (including the mon node that the task was delegated to) to apply the chmod of setfacl to the keys in openstack_keys. [1] ``` openstack_keys: - { name: client.openstack, key: "$(ceph-authtool --gen-print-key)", mon_cap: "allow r", osd_cap: "allow class-read object_prefix rbd_children, allow rwx pool=images, allow rwx pool=vms, allow rwx pool=volumes, allow rwx pool=backups", mode: "0600", acls: ["u:nova:r--", "u:cinder:r--", "u:glance:r--", "u:gnocchi:r--"] } ``` [2] ``` $ ansible mons -m shell -b -a "ls -l /etc/ceph/ceph.client.openstack.keyring ; getfacl /etc/ceph/ceph.client.openstack.keyring" 192.168.1.26 | SUCCESS | rc=0 >> -rw-r-----+ 1 root root 253 Nov 3 20:30 /etc/ceph/ceph.client.openstack.keyring user::rw- user:glance:r-- user:nova:r-- user:cinder:r-- user:gnocchi:r-- group::--- mask::r-- other::---getfacl: Removing leading '/' from absolute path names 192.168.1.29 | SUCCESS | rc=0 >> -rw-r--r--. 1 root root 253 Nov 3 20:30 /etc/ceph/ceph.client.openstack.keyring user::rw- group::r-- other::r--getfacl: Removing leading '/' from absolute path names 192.168.1.23 | SUCCESS | rc=0 >> -rw-r--r--. 1 root root 253 Nov 3 20:30 /etc/ceph/ceph.client.openstack.keyring user::rw- group::r-- other::r--getfacl: Removing leading '/' from absolute path names $ ``` [3] ``` (undercloud) [stack@hci-director ceph-ansible]$ ansible mons -m shell -b -a "ls -l /etc/ceph/ceph.client.openstack.keyring ; getfacl /etc/ceph/ceph.client.openstack.keyring" 192.168.1.25 | SUCCESS | rc=0 >> -rw-r-----+ 1 root root 253 Nov 14 01:12 /etc/ceph/ceph.client.openstack.keyring user::rw- user:glance:r-- user:nova:r-- user:cinder:r-- user:gnocchi:r-- group::--- mask::r-- other::---getfacl: Removing leading '/' from absolute path names 192.168.1.29 | SUCCESS | rc=0 >> -rw-r-----+ 1 root root 253 Nov 14 01:12 /etc/ceph/ceph.client.openstack.keyring user::rw- user:glance:r-- user:nova:r-- user:cinder:r-- user:gnocchi:r-- group::--- mask::r-- other::---getfacl: Removing leading '/' from absolute path names 192.168.1.27 | SUCCESS | rc=0 >> -rw-r-----+ 1 root root 253 Nov 14 01:12 /etc/ceph/ceph.client.openstack.keyring user::rw- user:glance:r-- user:nova:r-- user:cinder:r-- user:gnocchi:r-- group::--- mask::r-- other::---getfacl: Removing leading '/' from absolute path names (undercloud) [stack@hci-director ceph-ansible]$ ```
2017-11-07 06:24:48 +08:00
path: "/etc/ceph/{{ cluster }}.{{ item.1.name }}.keyring"
mode: "{{ item.1.mode|default(omit) }}" # if mode not in list, uses mode from ps umask
with_nested:
- "{{ groups[mon_group_name] }}"
- "{{ openstack_keys }}"
delegate_to: "{{ item.0 }}"
when:
- openstack_config
- cephx
Set permissions and ACLs of OpenStack keys on all ceph-mons If ceph-ansible deploys a Ceph cluster with "openstack_config: true" and sets the openstack_keys map to have certain ACLs or permissions, the requested ACLs or permissions are only set on one of the monitor nodes [2] when they should be set on all of them. This patch solves [3] the above issue by having the chmod and setfacl tasks iterate the list of mon nodes (including the mon node that the task was delegated to) to apply the chmod of setfacl to the keys in openstack_keys. [1] ``` openstack_keys: - { name: client.openstack, key: "$(ceph-authtool --gen-print-key)", mon_cap: "allow r", osd_cap: "allow class-read object_prefix rbd_children, allow rwx pool=images, allow rwx pool=vms, allow rwx pool=volumes, allow rwx pool=backups", mode: "0600", acls: ["u:nova:r--", "u:cinder:r--", "u:glance:r--", "u:gnocchi:r--"] } ``` [2] ``` $ ansible mons -m shell -b -a "ls -l /etc/ceph/ceph.client.openstack.keyring ; getfacl /etc/ceph/ceph.client.openstack.keyring" 192.168.1.26 | SUCCESS | rc=0 >> -rw-r-----+ 1 root root 253 Nov 3 20:30 /etc/ceph/ceph.client.openstack.keyring user::rw- user:glance:r-- user:nova:r-- user:cinder:r-- user:gnocchi:r-- group::--- mask::r-- other::---getfacl: Removing leading '/' from absolute path names 192.168.1.29 | SUCCESS | rc=0 >> -rw-r--r--. 1 root root 253 Nov 3 20:30 /etc/ceph/ceph.client.openstack.keyring user::rw- group::r-- other::r--getfacl: Removing leading '/' from absolute path names 192.168.1.23 | SUCCESS | rc=0 >> -rw-r--r--. 1 root root 253 Nov 3 20:30 /etc/ceph/ceph.client.openstack.keyring user::rw- group::r-- other::r--getfacl: Removing leading '/' from absolute path names $ ``` [3] ``` (undercloud) [stack@hci-director ceph-ansible]$ ansible mons -m shell -b -a "ls -l /etc/ceph/ceph.client.openstack.keyring ; getfacl /etc/ceph/ceph.client.openstack.keyring" 192.168.1.25 | SUCCESS | rc=0 >> -rw-r-----+ 1 root root 253 Nov 14 01:12 /etc/ceph/ceph.client.openstack.keyring user::rw- user:glance:r-- user:nova:r-- user:cinder:r-- user:gnocchi:r-- group::--- mask::r-- other::---getfacl: Removing leading '/' from absolute path names 192.168.1.29 | SUCCESS | rc=0 >> -rw-r-----+ 1 root root 253 Nov 14 01:12 /etc/ceph/ceph.client.openstack.keyring user::rw- user:glance:r-- user:nova:r-- user:cinder:r-- user:gnocchi:r-- group::--- mask::r-- other::---getfacl: Removing leading '/' from absolute path names 192.168.1.27 | SUCCESS | rc=0 >> -rw-r-----+ 1 root root 253 Nov 14 01:12 /etc/ceph/ceph.client.openstack.keyring user::rw- user:glance:r-- user:nova:r-- user:cinder:r-- user:gnocchi:r-- group::--- mask::r-- other::---getfacl: Removing leading '/' from absolute path names (undercloud) [stack@hci-director ceph-ansible]$ ```
2017-11-07 06:24:48 +08:00
- name: setfacl for openstack cephx key(s) on the other mons and this mon
Set permissions and ACLs of OpenStack keys on all ceph-mons If ceph-ansible deploys a Ceph cluster with "openstack_config: true" and sets the openstack_keys map to have certain ACLs or permissions, the requested ACLs or permissions are only set on one of the monitor nodes [2] when they should be set on all of them. This patch solves [3] the above issue by having the chmod and setfacl tasks iterate the list of mon nodes (including the mon node that the task was delegated to) to apply the chmod of setfacl to the keys in openstack_keys. [1] ``` openstack_keys: - { name: client.openstack, key: "$(ceph-authtool --gen-print-key)", mon_cap: "allow r", osd_cap: "allow class-read object_prefix rbd_children, allow rwx pool=images, allow rwx pool=vms, allow rwx pool=volumes, allow rwx pool=backups", mode: "0600", acls: ["u:nova:r--", "u:cinder:r--", "u:glance:r--", "u:gnocchi:r--"] } ``` [2] ``` $ ansible mons -m shell -b -a "ls -l /etc/ceph/ceph.client.openstack.keyring ; getfacl /etc/ceph/ceph.client.openstack.keyring" 192.168.1.26 | SUCCESS | rc=0 >> -rw-r-----+ 1 root root 253 Nov 3 20:30 /etc/ceph/ceph.client.openstack.keyring user::rw- user:glance:r-- user:nova:r-- user:cinder:r-- user:gnocchi:r-- group::--- mask::r-- other::---getfacl: Removing leading '/' from absolute path names 192.168.1.29 | SUCCESS | rc=0 >> -rw-r--r--. 1 root root 253 Nov 3 20:30 /etc/ceph/ceph.client.openstack.keyring user::rw- group::r-- other::r--getfacl: Removing leading '/' from absolute path names 192.168.1.23 | SUCCESS | rc=0 >> -rw-r--r--. 1 root root 253 Nov 3 20:30 /etc/ceph/ceph.client.openstack.keyring user::rw- group::r-- other::r--getfacl: Removing leading '/' from absolute path names $ ``` [3] ``` (undercloud) [stack@hci-director ceph-ansible]$ ansible mons -m shell -b -a "ls -l /etc/ceph/ceph.client.openstack.keyring ; getfacl /etc/ceph/ceph.client.openstack.keyring" 192.168.1.25 | SUCCESS | rc=0 >> -rw-r-----+ 1 root root 253 Nov 14 01:12 /etc/ceph/ceph.client.openstack.keyring user::rw- user:glance:r-- user:nova:r-- user:cinder:r-- user:gnocchi:r-- group::--- mask::r-- other::---getfacl: Removing leading '/' from absolute path names 192.168.1.29 | SUCCESS | rc=0 >> -rw-r-----+ 1 root root 253 Nov 14 01:12 /etc/ceph/ceph.client.openstack.keyring user::rw- user:glance:r-- user:nova:r-- user:cinder:r-- user:gnocchi:r-- group::--- mask::r-- other::---getfacl: Removing leading '/' from absolute path names 192.168.1.27 | SUCCESS | rc=0 >> -rw-r-----+ 1 root root 253 Nov 14 01:12 /etc/ceph/ceph.client.openstack.keyring user::rw- user:glance:r-- user:nova:r-- user:cinder:r-- user:gnocchi:r-- group::--- mask::r-- other::---getfacl: Removing leading '/' from absolute path names (undercloud) [stack@hci-director ceph-ansible]$ ```
2017-11-07 06:24:48 +08:00
command: "setfacl -m {{ item.1.acls | join(',') }} /etc/ceph/{{ cluster }}.{{ item.1.name }}.keyring"
with_nested:
- "{{ groups[mon_group_name] }}"
- "{{ openstack_keys }}"
Set permissions and ACLs of OpenStack keys on all ceph-mons If ceph-ansible deploys a Ceph cluster with "openstack_config: true" and sets the openstack_keys map to have certain ACLs or permissions, the requested ACLs or permissions are only set on one of the monitor nodes [2] when they should be set on all of them. This patch solves [3] the above issue by having the chmod and setfacl tasks iterate the list of mon nodes (including the mon node that the task was delegated to) to apply the chmod of setfacl to the keys in openstack_keys. [1] ``` openstack_keys: - { name: client.openstack, key: "$(ceph-authtool --gen-print-key)", mon_cap: "allow r", osd_cap: "allow class-read object_prefix rbd_children, allow rwx pool=images, allow rwx pool=vms, allow rwx pool=volumes, allow rwx pool=backups", mode: "0600", acls: ["u:nova:r--", "u:cinder:r--", "u:glance:r--", "u:gnocchi:r--"] } ``` [2] ``` $ ansible mons -m shell -b -a "ls -l /etc/ceph/ceph.client.openstack.keyring ; getfacl /etc/ceph/ceph.client.openstack.keyring" 192.168.1.26 | SUCCESS | rc=0 >> -rw-r-----+ 1 root root 253 Nov 3 20:30 /etc/ceph/ceph.client.openstack.keyring user::rw- user:glance:r-- user:nova:r-- user:cinder:r-- user:gnocchi:r-- group::--- mask::r-- other::---getfacl: Removing leading '/' from absolute path names 192.168.1.29 | SUCCESS | rc=0 >> -rw-r--r--. 1 root root 253 Nov 3 20:30 /etc/ceph/ceph.client.openstack.keyring user::rw- group::r-- other::r--getfacl: Removing leading '/' from absolute path names 192.168.1.23 | SUCCESS | rc=0 >> -rw-r--r--. 1 root root 253 Nov 3 20:30 /etc/ceph/ceph.client.openstack.keyring user::rw- group::r-- other::r--getfacl: Removing leading '/' from absolute path names $ ``` [3] ``` (undercloud) [stack@hci-director ceph-ansible]$ ansible mons -m shell -b -a "ls -l /etc/ceph/ceph.client.openstack.keyring ; getfacl /etc/ceph/ceph.client.openstack.keyring" 192.168.1.25 | SUCCESS | rc=0 >> -rw-r-----+ 1 root root 253 Nov 14 01:12 /etc/ceph/ceph.client.openstack.keyring user::rw- user:glance:r-- user:nova:r-- user:cinder:r-- user:gnocchi:r-- group::--- mask::r-- other::---getfacl: Removing leading '/' from absolute path names 192.168.1.29 | SUCCESS | rc=0 >> -rw-r-----+ 1 root root 253 Nov 14 01:12 /etc/ceph/ceph.client.openstack.keyring user::rw- user:glance:r-- user:nova:r-- user:cinder:r-- user:gnocchi:r-- group::--- mask::r-- other::---getfacl: Removing leading '/' from absolute path names 192.168.1.27 | SUCCESS | rc=0 >> -rw-r-----+ 1 root root 253 Nov 14 01:12 /etc/ceph/ceph.client.openstack.keyring user::rw- user:glance:r-- user:nova:r-- user:cinder:r-- user:gnocchi:r-- group::--- mask::r-- other::---getfacl: Removing leading '/' from absolute path names (undercloud) [stack@hci-director ceph-ansible]$ ```
2017-11-07 06:24:48 +08:00
delegate_to: "{{ item.0 }}"
when:
- item.1.get('acls', []) | length > 0
- openstack_config
- cephx