common: automate setting up online repositories for ceph deployments on debian nodes

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>
pull/1734/head
Sébastien Han 2017-08-02 15:13:06 +02:00
parent 6e379157ec
commit 7559a2deff
7 changed files with 80 additions and 42 deletions

View 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') }}"

View File

@ -51,6 +51,17 @@
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"

View 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 }}"

View File

@ -31,6 +31,16 @@
# Hard code this so we will skip the entire file instead of individual tasks (Default isn't Consistent)
static: False
- include: ./pre_requisites/prerequisite_rhcs_cdn_install_debian.yml
when:
- 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_on_redhat.yml
when:
- ansible_os_family == 'RedHat'
@ -40,19 +50,19 @@
# 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_debian.yml
when:
- ansible_distribution == "RedHat"
- ceph_rhcs
- ansible_os_family == 'Debian'
- not ceph_rhcs
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_on_debian.yml
- include: ./installs/install_rh_storage_on_redhat.yml
when:
- ansible_os_family == 'Debian'
- not ceph_rhcs
- 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)

View File

@ -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

View File

@ -41,3 +41,22 @@
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

View 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') }}"