]> git.apps.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
common: automate setting up online repositories for ceph deployments on debian nodes 1734/head
authorSébastien Han <seb@redhat.com>
Wed, 2 Aug 2017 13:13:06 +0000 (15:13 +0200)
committerSébastien Han <seb@redhat.com>
Thu, 3 Aug 2017 15:15:07 +0000 (17:15 +0200)
This commits automates the process of setting up online repositories for
Red Hat Ceph Storage on Debian nodes. The manual steps are currently
described here:
https://access.redhat.com/documentation/en-us/red_hat_ceph_storage/2/html/installation_guide_for_ubuntu/prerequisites#online_repositories

If you are an RHCS customer and run a Debian based system you can now
access package through the Red Hat CDN.
For this set: ceph_rhcs and ceph_rhcs_cdn_install to true. Then set your
customer credentials in ceph_rhcs_cdn_debian_repo. Replace
customername:customerpasswd with your details.

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1434175
Signed-off-by: Sébastien Han <seb@redhat.com>
group_vars/all.yml.sample
roles/ceph-common/tasks/checks/check_mandatory_vars.yml
roles/ceph-common/tasks/installs/install_rh_storage_on_debian.yml
roles/ceph-common/tasks/main.yml
roles/ceph-common/tasks/pre_requisites/prerequisite_rhcs_cdn_install_debian.yml [new file with mode: 0644]
roles/ceph-common/tasks/pre_requisites/prerequisite_rhcs_iso_install.yml
roles/ceph-defaults/defaults/main.yml

index de54eca35b0a46b6be41eddabd3dad8710059ff6..39b55edccaca2e498fb932c31734ebdef7c6686a 100644 (file)
@@ -159,6 +159,7 @@ dummy:
 # version. The previous version was 1.3. The current version is 2.
 #ceph_rhcs_version: "{{ ceph_stable_rh_storage_version | default(2) }}"
 #ceph_rhcs_cdn_install: "{{ ceph_stable_rh_storage_cdn_install | default(false) }}" # assumes all the nodes can connect to cdn.redhat.com
+#ceph_rhcs_cdn_debian_repo: https://customername:customerpasswd@rhcs.download.redhat.com
 #ceph_rhcs_iso_install: "{{ ceph_stable_rh_storage_iso_install | default(false) }}" # usually used when nodes don't have access to cdn.redhat.com
 #ceph_rhcs_iso_path: "{{ ceph_stable_rh_storage_iso_path | default('') }}"
 #ceph_rhcs_mount_path: "{{ ceph_stable_rh_storage_mount_path | default('/tmp/rh-storage-mount') }}"
index b4ef088f9e97c13982111dccae6848e9c4655558..91c34e1378ffe4a737abb92ce3eafb37458e24f3 100644 (file)
   tags:
     - package-install
 
+- name: verify that ceph_rhcs_cdn_debian_repo url is valid for red hat storage
+  fail:
+    msg: "ceph_rhcs_cdn_debian_repo url is invalid, please set your customername:customerpasswd"
+  when:
+    - ceph_rhcs
+    - ceph_rhcs_cdn_install
+    - ansible_os_family == 'Debian'
+    - ceph_rhcs_cdn_debian_repo == 'https://customername:customerpasswd@rhcs.download.redhat.com'
+  tags:
+    - package-install
+
 - name: make sure monitor_interface or monitor_address is defined
   fail:
     msg: "you must set monitor_interface or monitor_address"
index d90190e4b9974aa678e876eb6b17508c4fd90599..1ec33a4f4c2ca1249fd3ef3be346a2f1ff6ab25a 100644 (file)
@@ -1,40 +1,4 @@
 ---
-# NOTE: this assumes that the ISO will always have a MON directory. Current
-# ISOs have MON, OSD, Tools, and Agent. If ISOs change the layout or provide
-# certain repos depending on the type of node this task will require a more
-# intelligent way to determine the location of the key.
-- name: install the red hat ceph storage repository key
-  apt_key:
-    file: "{{ ceph_rhcs_repository_path }}/MON/release.asc"
-    state: present
-  when: ceph_rhcs_iso_install
-
-- name: add red hat ceph storage repositories
-  apt_repository:
-    repo: "deb file://{{ ceph_rhcs_repository_path }}/{{ item }}/ {{ ansible_lsb.codename }} main"
-    state: present
-  changed_when: false
-  with_items:
-    - "MON"
-    - "OSD"
-    - "Tools"
-    - "Agent"
-  when: ceph_rhcs_iso_install
-
-- name: set apt pinning for red hat ceph storage
-  template:
-    src: "{{ role_path }}/templates/rhcs.pref.j2"
-    dest: /etc/apt/preferences.d/rhcs.pref
-    owner: root
-    group: root
-    mode: 0644
-
-- name: add red hat storage apt-key
-  apt_key:
-    data: "{{ lookup('file', role_path+'/files/cephstablerhcs.asc') }}"
-    state: present
-  when: not ceph_rhcs_iso_install
-
 - name: install dependencies
   apt:
     pkg: "{{ item }}"
index 9c65a27bfc67d8c4a2d95740390d0413d178a7c0..3cd4027230909b4ddc487af1999453ed5ff43606 100644 (file)
   # Hard code this so we will skip the entire file instead of individual tasks (Default isn't Consistent)
   static: False
 
-- include: ./installs/install_on_redhat.yml
+- include: ./pre_requisites/prerequisite_rhcs_cdn_install_debian.yml
   when:
-    - ansible_os_family == 'RedHat'
-    - not ceph_rhcs
+    - ceph_rhcs
+    - ceph_rhcs_cdn_install
+    - ansible_os_family == "Debian"
   tags:
     - package-install
   # Hard code this so we will skip the entire file instead of individual tasks (Default isn't Consistent)
   static: False
 
-- include: ./installs/install_rh_storage_on_redhat.yml
+- include: ./installs/install_on_redhat.yml
   when:
-    - ansible_distribution == "RedHat"
-    - ceph_rhcs
+    - ansible_os_family == 'RedHat'
+    - not ceph_rhcs
   tags:
     - package-install
   # Hard code this so we will skip the entire file instead of individual tasks (Default isn't Consistent)
   # Hard code this so we will skip the entire file instead of individual tasks (Default isn't Consistent)
   static: False
 
+- include: ./installs/install_rh_storage_on_redhat.yml
+  when:
+    - ceph_rhcs
+    - ansible_distribution == "RedHat"
+  tags:
+    - package-install
+  # Hard code this so we will skip the entire file instead of individual tasks (Default isn't Consistent)
+  static: False
+
 - include: ./installs/install_rh_storage_on_debian.yml
   when:
     - ansible_os_family == 'Debian'
diff --git a/roles/ceph-common/tasks/pre_requisites/prerequisite_rhcs_cdn_install_debian.yml b/roles/ceph-common/tasks/pre_requisites/prerequisite_rhcs_cdn_install_debian.yml
new file mode 100644 (file)
index 0000000..4df13be
--- /dev/null
@@ -0,0 +1,32 @@
+---
+- name: install red hat storage repository key for debian systems
+  apt_key:
+    data: "{{ lookup('file', role_path+'/files/cephstablerhcs.asc') }}"
+    state: present
+
+- name: enable red hat storage monitor repository for debian systems
+  apt_repository:
+    repo: "deb {{ ceph_rhcs_cdn_debian_repo }}/2-updates/MON {{ ceph_stable_distro_source | default(ansible_lsb.codename) }} main"
+    state: present
+  changed_when: false
+  when: mon_group_name in group_names
+
+- name: enable red hat storage osd repository for debian systems
+  apt_repository:
+    repo: "deb {{ ceph_rhcs_cdn_debian_repo }}/2-updates/OSD {{ ceph_stable_distro_source | default(ansible_lsb.codename) }} main"
+    state: present
+  changed_when: false
+  when: osd_group_name in group_names
+
+- name: enable red hat storage rados gateway / mds repository for debian systems
+  apt_repository:
+    repo: "deb {{ ceph_rhcs_cdn_debian_repo }}/2-updates/Tools {{ ceph_stable_distro_source | default(ansible_lsb.codename) }} main"
+    state: present
+  changed_when: false
+  when: (rgw_group_name in group_names or mds_group_name in group_names)
+
+- name: enable red hat storage agent repository for debian systems
+  apt_repository:
+    repo: "deb {{ ceph_rhcs_cdn_debian_repo }}/2-updates/Agent {{ ceph_stable_distro_source | default(ansible_lsb.codename) }} main"
+    state: present
+  changed_when: false
index e589fec34f979d88e40c54fc2877bf55680c9bd9..51ada8e5801f677ea6346922c667c5ce5f4ba1b1 100644 (file)
     src: "{{ ceph_rhcs_iso_path }}"
     fstype: iso9660
     state: unmounted
+
+- name: install the red hat ceph storage repository key
+  apt_key:
+    file: "{{ ceph_rhcs_repository_path }}/MON/release.asc"
+    state: present
+  when: ceph_rhcs_iso_install
+
+- name: add red hat ceph storage repositories
+  apt_repository:
+    repo: "deb file://{{ ceph_rhcs_repository_path }}/{{ item }}/ {{ ansible_lsb.codename }} main"
+    state: present
+  changed_when: false
+  with_items:
+    - "MON"
+    - "OSD"
+    - "Tools"
+    - "Agent"
+  when: ceph_rhcs_iso_install
+
index 3a41ed5fbabdb9cec99f93d568b6b61b5975a3ea..2fbea9222d807bbac762c80469a8acb1e09c2957 100644 (file)
@@ -151,6 +151,7 @@ ceph_rhcs: "{{ ceph_stable_rh_storage | default(false) }}"
 # version. The previous version was 1.3. The current version is 2.
 ceph_rhcs_version: "{{ ceph_stable_rh_storage_version | default(2) }}"
 ceph_rhcs_cdn_install: "{{ ceph_stable_rh_storage_cdn_install | default(false) }}" # assumes all the nodes can connect to cdn.redhat.com
+ceph_rhcs_cdn_debian_repo: https://customername:customerpasswd@rhcs.download.redhat.com
 ceph_rhcs_iso_install: "{{ ceph_stable_rh_storage_iso_install | default(false) }}" # usually used when nodes don't have access to cdn.redhat.com
 ceph_rhcs_iso_path: "{{ ceph_stable_rh_storage_iso_path | default('') }}"
 ceph_rhcs_mount_path: "{{ ceph_stable_rh_storage_mount_path | default('/tmp/rh-storage-mount') }}"