--- /dev/null
+---\r
+dummy:\r
+\r
+#cephx: true\r
+\r
+\r
+##########\r
+# DOCKER #\r
+##########\r
+\r
+#ceph_containerized_deployment: false\r
+#ceph_mds_docker_username: ceph\r
+#ceph_mds_docker_imagename: daemon\r
##########\r
\r
#ceph_containerized_deployment: false\r
-#ceph_mon_docker_interface: eth0\r
#ceph_mon_docker_username: ceph\r
-#ceph_mon_docker_imagename: "mon:latest"\r
+#ceph_mon_docker_imagename: "daemon"\r
+#ceph_mon_docker_interface: eth0\r
+#ceph_mon_docker_subnet: # subnet of the ceph_mon_docker_interface\r
# - /var/lib/ceph/osd/mydir2
# - /var/lib/ceph/osd/mydir3
# - /var/lib/ceph/osd/mydir4
+
+
+##########
+# DOCKER #
+##########
+
+#ceph_containerized_deployment: false
+#ceph_osd_docker_username: ceph
+#ceph_osd_docker_imagename: daemon
+#ceph_osd_docker_devices:
+# - /dev/sdb
--- /dev/null
+---\r
+dummy:\r
+\r
+## Ceph options\r
+#\r
+#cephx: true\r
+\r
+# Toggle 100-continue support for Apache and FastCGI\r
+# WARNING: Changing this value will cause an outage of Apache while it is reinstalled on RGW nodes\r
+#http_100_continue: false\r
+\r
+# Rados Gateway options\r
+#redhat_distro_ceph_extra: centos6.4 # supported distros are centos6.3, centos6.4, centos6, fedora18, fedora19, opensuse12.2, rhel6.3, rhel6.4, rhel6.5, rhel6, sles11sp2\r
+#email_address: foo@bar.com\r
+#radosgw_frontend: civetweb # we currently only support a single backend\r
+\r
+\r
+##########\r
+# DOCKER #\r
+##########\r
+\r
+#ceph_containerized_deployment: false\r
+#ceph_rgw_docker_username: ceph\r
+#ceph_rgw_docker_imagename: daemon\r
+#ceph_rgw_civetweb_port: 80\r
\r
ceph_containerized_deployment: false\r
ceph_mds_docker_username: ceph\r
-ceph_mds_docker_imagename: "mds:latest"\r
+ceph_mds_docker_imagename: daemon\r
---
dependencies:
- - { role: ceph-common}
+ - { role: ceph-common, when: not docker }
---
-- name: fetch Ceph config and keys
+- name: set config and keys paths
+ set_fact:
+ ceph_config_keys:
+ - /etc/ceph/ceph.client.admin.keyring
+ - /etc/ceph/ceph.conf
+ - /etc/ceph/monmap
+ - /etc/ceph/ceph.mon.keyring
+ - /var/lib/ceph/bootstrap-mds/ceph.keyring
+
+- name: install docker-py
+ pip: name=docker-py version=1.1.0 # https://github.com/ansible/ansible-modules-core/issues/1227
+
+- name: stat for Ceph config and keys
+ stat: >
+ path={{ item }}
+ with_items: ceph_config_keys
+ register: statconfig
+ ignore_errors: True
+
+- name: try to fetch Ceph config and keys
copy: >
- src=fetch/docker_mon_files/{{ item }}
+ src=fetch/docker_mon_files/"{{ item }}"
dest=/etc/ceph/
owner=root
group=root
mode=600
- with_items:
- - /etc/ceph/ceph.client.admin.keyring
- - /etc/ceph/ceph.conf
- - /etc/ceph/monmap
- - /etc/ceph/ceph.mon.keyring
+ with_together:
+ - ceph_config_keys
+ - statconfig.results
+ when: item.1.stat.exists == False
-- name: run the Ceph Medata docker image
+- name: run the ceph medata docker image
docker: >
image="{{ ceph_mds_docker_username }}/{{ ceph_mds_docker_imagename }}"
- name=ceph-mds-{{ ansible_hostname }}
+ name=ceph-{{ ansible_hostname }}-mds
net=host
state=running
- env="MDS_NAME=ceph-mds-{{ ansible_hostname }}, MDS_CIVETWEB_PORT={{ ceph_mds_civetweb_port }}"
+ env="CEPH_DAEMON=MDS,CEPHFS_CREATE=1"
volumes="/var/lib/ceph:/var/lib/ceph,/etc/ceph:/etc/ceph"
- name: ensure ceph_mds service is running
docker: >
image="{{ ceph_mds_docker_username }}/{{ ceph_mds_docker_imagename }}"
- name="ceph-{{ ansible_hostname }}"
- detach=yes
+ name="ceph-{{ ansible_hostname }}-mds"
state=running
\r
ceph_containerized_deployment: false\r
ceph_mon_docker_interface: eth0\r
+#ceph_mon_docker_subnet: # subnet of the ceph_mon_docker_interface\r
ceph_mon_docker_username: ceph\r
-ceph_mon_docker_imagename: "mon:latest"\r
+ceph_mon_docker_imagename: daemon\r
---
dependencies:
- - { role: ceph-common}
+ - { role: ceph-common, when: not docker }
---
+# NOTE (leseb): in the present playbook the conditional is done on the task
+# We don't do this in main.yml because of the 'docker' variable, when set to true
+# the role 'ceph-common' doesn't get inherited so the condition can not be evaluate
+# since those check are performed by the ceph-common role
- name: create filesystem pools
command: ceph osd pool create {{ item }} {{ pool_default_pg_num }}
with_items:
- cephfs_data
- cephfs_metadata
changed_when: False
+ when: not {{ ceph_version.stdout | version_compare('0.84', '<') }}
- name: create Ceph Filesystem
command: ceph fs new {{ cephfs }} {{ cephfs_metadata }} {{ cephfs_data }}
changed_when: False
+ when: not {{ ceph_version.stdout | version_compare('0.84', '<') }}
---
+- name: set config and keys paths
+ set_fact:
+ ceph_config_keys:
+ - /etc/ceph/ceph.client.admin.keyring
+ - /etc/ceph/ceph.conf
+ - /etc/ceph/monmap
+ - /etc/ceph/ceph.mon.keyring
+
+- name: install docker-py
+ pip: name=docker-py version=1.1.0 # https://github.com/ansible/ansible-modules-core/issues/1227
+
+- name: stat for Ceph config and keys
+ stat: >
+ path={{ item }}
+ with_items: ceph_config_keys
+ register: statconfig
+ ignore_errors: True
+
- name: try to fetch Ceph config and keys
copy: >
- src=fetch/docker_mon_files/{{ item }}
+ src=fetch/docker_mon_files/"{{ item }}"
dest=/etc/ceph/
owner=root
group=root
mode=600
- with_items:
- - /etc/ceph/ceph.client.admin.keyring
- - /etc/ceph/ceph.conf
- - /etc/ceph/monmap
- - /etc/ceph/ceph.mon.keyring
- ignore_errors: true
+ with_together:
+ - ceph_config_keys
+ - statconfig.results
+ when: item.1.stat.exists == False
- name: run the Ceph Monitor docker image
docker: >
name=ceph-{{ ansible_hostname }}
net=host
state=running
- env="MON_NAME=ceph-{{ ansible_hostname }},MON_IP={{ hostvars[inventory_hostname]['ansible_' + ceph_mon_docker_interface]['ipv4']['address'] }}"
+ env="MON_NAME=ceph-{{ ansible_hostname }},MON_IP={{ hostvars[inventory_hostname]['ansible_' + ceph_mon_docker_interface]['ipv4']['address'] }},CEPH_DAEMON=MON, CEPH_PUBLIC_NETWORK={{ ceph_mon_docker_subnet }}"
volumes="/var/lib/ceph:/var/lib/ceph,/etc/ceph:/etc/ceph"
- name: ensure ceph_mon service is running
- /etc/ceph/ceph.conf
- /etc/ceph/monmap
- /etc/ceph/ceph.mon.keyring
+ - /var/lib/ceph/bootstrap-osd/ceph.keyring
+ - /var/lib/ceph/bootstrap-rgw/ceph.keyring
+ - /var/lib/ceph/bootstrap-mds/ceph.keyring
when: not ceph_containerized_deployment
- include: create_mds_filesystems.yml
- when: not ceph_containerized_deployment and not {{ ceph_version.stdout | version_compare('0.84', '<') }} and mds
+ when: not ceph_containerized_deployment and mds
- include: secure_cluster.yml
- when: secure_cluster and {{ ceph_version.stdout | version_compare('0.94', '>=') }}
+ when: secure_cluster and not ceph_containerized_deployment
tags: secure_cluster
- include: docker.yml
- name: collect all the pool
command: rados lspools
register: ceph_pools
+ when: "{{ ceph_version.stdout | version_compare('0.94', '>=') }}"
- name: secure the cluster
command: ceph osd pool set {{ item[0] }} {{ item[1] }} true
with_nested:
- ceph_pools.stdout_lines
- secure_cluster_flags
+ when: "{{ ceph_version.stdout | version_compare('0.94', '>=') }}"
\r
ceph_containerized_deployment: false\r
ceph_osd_docker_username: ceph\r
-ceph_osd_docker_imagename: "osd:latest"\r
+ceph_osd_docker_imagename: daemon\r
+#ceph_osd_docker_device: /dev/sdb\r
---
dependencies:
- - { role: ceph-common}
+ - { role: ceph-common, when: not docker }
---
-- name: fetch Ceph config and keys
+- name: set config and keys paths
+ set_fact:
+ ceph_config_keys:
+ - /etc/ceph/ceph.client.admin.keyring
+ - /etc/ceph/ceph.conf
+ - /etc/ceph/monmap
+ - /etc/ceph/ceph.mon.keyring
+ - /var/lib/ceph/bootstrap-osd/ceph.keyring
+
+- name: install docker-py
+ pip: name=docker-py version=1.1.0 # https://github.com/ansible/ansible-modules-core/issues/1227
+
+- name: stat for Ceph config and keys
+ stat: >
+ path={{ item }}
+ with_items: ceph_config_keys
+ register: statconfig
+ ignore_errors: True
+
+- name: try to fetch Ceph config and keys
copy: >
- src=fetch/docker_mon_files/{{ item }}
+ src=fetch/docker_mon_files/"{{ item }}"
dest=/etc/ceph/
owner=root
group=root
mode=600
- with_items:
- - /etc/ceph/ceph.client.admin.keyring
- - /etc/ceph/ceph.conf
- - /etc/ceph/monmap
- - /etc/ceph/ceph.mon.keyring
+ with_together:
+ - ceph_config_keys
+ - statconfig.results
+ when: item.1.stat.exists == False
- name: run the Ceph OSD docker image
docker: >
image="{{ ceph_osd_docker_username }}/{{ ceph_osd_docker_imagename }}"
- name=ceph-{{ ansible_hostname }}
+ name={{ ansible_hostname }}-osd-{{ item | regex_replace('/', '') }}
net=host
state=running
- env="OSD_NAME=ceph-{{ ansible_hostname }}"
- volumes="/var/lib/ceph:/var/lib/ceph,/etc/ceph:/etc/ceph"
+ privileged=yes
+ env="CEPH_DAEMON=OSD_CEPH_DISK,OSD_DEVICE={{ item }}"
+ volumes="/var/lib/ceph:/var/lib/ceph,/etc/ceph:/etc/ceph,/dev/:/dev/"
+ with_items: ceph_osd_docker_devices
- name: ensure ceph_osd service is running
docker: >
image="{{ ceph_osd_docker_username }}/{{ ceph_osd_docker_imagename }}"
- name="ceph-{{ ansible_hostname }}"
- detach=yes
- state=running
+ name={{ ansible_hostname }}-osd-{{ item | regex_replace('/', '') }}
+ state=started
+ with_items: ceph_osd_docker_devices
ceph_containerized_deployment: false\r
ceph_rgw_civetweb_port: 80\r
ceph_rgw_docker_username: ceph\r
-ceph_rgw_docker_imagename: "rgw:latest"\r
+ceph_rgw_docker_imagename: daemon\r
---
dependencies:
- - { role: ceph-common}
+ - { role: ceph-common, when: not docker }
---
-- name: fetch Ceph config and keys
+- name: set config and keys paths
+ set_fact:
+ ceph_config_keys:
+ - /etc/ceph/ceph.client.admin.keyring
+ - /etc/ceph/ceph.conf
+ - /etc/ceph/monmap
+ - /etc/ceph/ceph.mon.keyring
+ - /var/lib/ceph/bootstrap-rgw/ceph.keyring
+
+- name: install docker-py
+ pip: name=docker-py version=1.1.0 # https://github.com/ansible/ansible-modules-core/issues/1227
+
+- name: stat for Ceph config and keys
+ stat: >
+ path={{ item }}
+ with_items: ceph_config_keys
+ register: statconfig
+ ignore_errors: True
+
+- name: try to fetch Ceph config and keys
copy: >
- src=fetch/docker_mon_files/{{ item }}
+ src=fetch/docker_mon_files/"{{ item }}"
dest=/etc/ceph/
owner=root
group=root
mode=600
- with_items:
- - /etc/ceph/ceph.client.admin.keyring
- - /etc/ceph/ceph.conf
- - /etc/ceph/monmap
- - /etc/ceph/ceph.mon.keyring
+ with_together:
+ - ceph_config_keys
+ - statconfig.results
+ when: item.1.stat.exists == False
-- name: run the Ceph Monitor docker image
+- name: run the rados gateway docker image
docker: >
image="{{ ceph_rgw_docker_username }}/{{ ceph_rgw_docker_imagename }}"
- name=ceph-rgw-{{ ansible_hostname }}
- net=host
+ name=ceph-{{ ansible_hostname }}-rgw
+ expose={{ ceph_rgw_civetweb_port }}
state=running
- env="RGW_NAME=ceph-rgw-{{ ansible_hostname }}, RGW_CIVETWEB_PORT={{ ceph_rgw_civetweb_port }}"
+ env="RGW_CIVETWEB_PORT={{ ceph_rgw_civetweb_port }},CEPH_DAEMON=RGW"
volumes="/var/lib/ceph:/var/lib/ceph,/etc/ceph:/etc/ceph"
- name: ensure ceph_rgw service is running
docker: >
image="{{ ceph_rgw_docker_username }}/{{ ceph_rgw_docker_imagename }}"
- name="ceph-{{ ansible_hostname }}"
+ name="ceph-{{ ansible_hostname }}-rgw"
detach=yes
state=running
---
dependencies:
- - { role: ceph-common}
+ - { role: ceph-common, when: not docker }