From 7fdc2b1d36c00ba28aab05eafe2adfb753a7f48e Mon Sep 17 00:00:00 2001 From: leseb Date: Fri, 3 Jul 2015 20:18:41 +0200 Subject: [PATCH] Use more variable check Fail early if a variable is not defined. Signed-off-by: leseb --- Vagrantfile | 1 + group_vars/all | 1 + .../tasks/check-mandatory-vars.yml | 16 ----- .../tasks/check_mandatory_vars.yml | 65 +++++++++++++++++++ roles/ceph-common/tasks/main.yml | 4 +- roles/ceph-mon/tasks/start_monitor.yml | 1 + roles/ceph-osd/defaults/main.yml | 24 ++++--- 7 files changed, 81 insertions(+), 31 deletions(-) delete mode 100644 roles/ceph-common/tasks/check-mandatory-vars.yml create mode 100644 roles/ceph-common/tasks/check_mandatory_vars.yml diff --git a/Vagrantfile b/Vagrantfile index 8d2db6c3f..842aff0cd 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -40,6 +40,7 @@ ansible_provision = proc do |ansible| monitor_interface: 'eth1', cluster_network: "#{SUBNET}.0/24", public_network: "#{SUBNET}.0/24", + devices: "[ '/dev/sdb', '/dev/sdc' ]", } ansible.limit = 'all' end diff --git a/group_vars/all b/group_vars/all index 8f9a32a72..3a0e504b7 100644 --- a/group_vars/all +++ b/group_vars/all @@ -102,6 +102,7 @@ dummy: ## Monitor options # #monitor_interface: interface +#monitor_secret: #mon_osd_down_out_interval: 600 #mon_osd_min_down_reporters: 7 # number of OSDs per host + 1 #mon_clock_drift_allowed: .15 diff --git a/roles/ceph-common/tasks/check-mandatory-vars.yml b/roles/ceph-common/tasks/check-mandatory-vars.yml deleted file mode 100644 index 47ac2316c..000000000 --- a/roles/ceph-common/tasks/check-mandatory-vars.yml +++ /dev/null @@ -1,16 +0,0 @@ ---- -- name: make sure journal_size configured - fail: msg="journal_size must be configured. See http://ceph.com/docs/master/rados/configuration/osd-config-ref/" - when: journal_size|int == 0 - -- name: make sure monitor_interface configured - fail: msg="monitor_interface must be configured. Interface for the monitor to listen on" - when: monitor_interface == 'interface' - -- name: make sure cluster_network configured - fail: msg="cluster_network must be configured. Ceph replication network" - when: cluster_network == '0.0.0.0/0' - -- name: make sure public_network configured - fail: msg="public_network must be configured. Ceph public network" - when: public_network == '0.0.0.0/0' diff --git a/roles/ceph-common/tasks/check_mandatory_vars.yml b/roles/ceph-common/tasks/check_mandatory_vars.yml new file mode 100644 index 000000000..472796abe --- /dev/null +++ b/roles/ceph-common/tasks/check_mandatory_vars.yml @@ -0,0 +1,65 @@ +--- +- name: make sure an installation source was chosen + fail: msg="choose an installation source or read https://github.com/ceph/ceph-ansible/wiki" + when: + not ceph_stable and + not ceph_dev and + not ceph_stable_ice and + not ceph_stable_rh_storage + +- name: verify that a method was chosen for red hat storage + fail: msg="choose between ceph_stable_rh_storage_cdn_install and ceph_stable_rh_storage_iso_install" + when: + ceph_stable_rh_storage and + not ceph_stable_rh_storage_cdn_install and + not ceph_stable_rh_storage_iso_install + +- name: make sure a monitor secret is defined + fail: msg"monitor_secret must be defined. Go edit group_vars/all or read https://github.com/ceph/ceph-ansible/wiki" + when: monitor_secret is not defined + +- name: make sure journal_size configured + fail: msg="journal_size must be configured. See http://ceph.com/docs/master/rados/configuration/osd-config-ref/" + when: journal_size|int == 0 + +- name: make sure monitor_interface configured + fail: msg="monitor_interface must be configured. Interface for the monitor to listen on" + when: monitor_interface == 'interface' + +- name: make sure cluster_network configured + fail: msg="cluster_network must be configured. Ceph replication network" + when: cluster_network == '0.0.0.0/0' + +- name: make sure public_network configured + fail: msg="public_network must be configured. Ceph public network" + when: public_network == '0.0.0.0/0' + +- name: make sure an osd scenario was chosen + fail: msg="please choose an osd scenario" + when: + osd_group_name is defined and + not journal_collocation and + not raw_multi_journal and + not osd_directory + +- name: verify devices have been provided + fail: msg="please provide devices to your osd scenario" + when: + osd_group_name is defined and + (journal_collocation or raw_multi_journal) and + devices is not defined + +- name: verify journal devices have been provided + fail: msg="please provide devices to your osd scenario" + when: + osd_group_name is defined and + raw_multi_journal and + raw_journal_devices is not defined + +- name: verify directories have been provided + fail: msg="please provide directories to your osd scenario" + when: + osd_group_name is defined and + osd_group_name in group_names and + osd_directory and + osd_directories is not defined diff --git a/roles/ceph-common/tasks/main.yml b/roles/ceph-common/tasks/main.yml index 5144ff8ad..d8fb34507 100644 --- a/roles/ceph-common/tasks/main.yml +++ b/roles/ceph-common/tasks/main.yml @@ -1,6 +1,8 @@ --- - include: os_check.yml +- include: check_mandatory_vars.yml + - include: os_tuning.yml when: osd_group_name in group_names @@ -48,8 +50,6 @@ register: cluster_uuid sudo: false -- include: check-mandatory-vars.yml - - name: generate Ceph configuration file template: > src=ceph.conf.j2 diff --git a/roles/ceph-mon/tasks/start_monitor.yml b/roles/ceph-mon/tasks/start_monitor.yml index 7c78680e6..62937a21f 100644 --- a/roles/ceph-mon/tasks/start_monitor.yml +++ b/roles/ceph-mon/tasks/start_monitor.yml @@ -24,6 +24,7 @@ # as a safety measure we run the raw command - name: start and add that the monitor service to the init sequence command: service ceph start mon + changed_when: false when: ansible_distribution != "Ubuntu" - name: collect admin and bootstrap keys diff --git a/roles/ceph-osd/defaults/main.yml b/roles/ceph-osd/defaults/main.yml index 368f3c322..c32b25614 100644 --- a/roles/ceph-osd/defaults/main.yml +++ b/roles/ceph-osd/defaults/main.yml @@ -48,9 +48,9 @@ zap_devices: false # Declare devices # All the scenarii inherit from the following device declaration # -devices: - - /dev/sdb - - /dev/sdc +#devices: +# - /dev/sdb +# - /dev/sdc # Device discovery is based on the Ansible fact 'ansible_devices' # which reports all the devices on a system. If chosen all the disks @@ -86,22 +86,20 @@ journal_collocation: false # 2. Progressively add new devices raw_multi_journal: false -raw_journal_devices: - - /dev/sdb - - /dev/sdb - - /dev/sdc - - /dev/sdc +#raw_journal_devices: +# - /dev/sdb +# - /dev/sdb +# - /dev/sdc +# - /dev/sdc # IV. Fourth scenario: use directory instead of disk for OSDs # Use 'true' to enable this scenario osd_directory: false -osd_directories: - - /var/lib/ceph/osd/mydir1 - - /var/lib/ceph/osd/mydir2 - - /var/lib/ceph/osd/mydir3 - - /var/lib/ceph/osd/mydir4 +#osd_directories: +# - /var/lib/ceph/osd/mydir1 +# - /var/lib/ceph/osd/mydir2 ##########