diff --git a/attributes/apt.rb b/attributes/repo.rb similarity index 81% rename from attributes/apt.rb rename to attributes/repo.rb index 3e8804e..c753e56 100644 --- a/attributes/apt.rb +++ b/attributes/repo.rb @@ -1,3 +1,4 @@ default['ceph']['branch'] = "stable" # Can be stable, testing or dev. # Major release version to install or gitbuilder branch default['ceph']['version'] = "bobtail" +default['ceph']['el_add_epel'] = true diff --git a/recipes/apt.rb b/recipes/apt.rb index f666cb1..0b3dabe 100644 --- a/recipes/apt.rb +++ b/recipes/apt.rb @@ -4,7 +4,7 @@ case node['ceph']['branch'] when "stable" apt_repository "ceph-stable" do repo_name "ceph" - uri "http://www.ceph.com/debian-#{node['ceph']['version']}/" + uri "http://ceph.com/debian-#{node['ceph']['version']}/" distribution node['lsb']['codename'] components ["main"] key "https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc" @@ -26,3 +26,4 @@ when "dev" key "https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/autobuild.asc" end end + diff --git a/recipes/default.rb b/recipes/default.rb index 327eec6..8cb9395 100644 --- a/recipes/default.rb +++ b/recipes/default.rb @@ -16,18 +16,34 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - -packages = %w{ - ceph - ceph-common -} -if node['ceph']['install_debug'] - packages_dbg = %w{ - ceph-dbg - ceph-common-dbg +packages = [] + +case node['platform_family'] +when "debian" + packages = %w{ + ceph + ceph-common } - packages += packages_dbg + + if node['ceph']['install_debug'] + packages_dbg = %w{ + ceph-dbg + ceph-common-dbg + } + packages += packages_dbg + end +when "rhel", "fedora" + packages = %w{ + ceph + } + + if node['ceph']['install_debug'] + packages_dbg = %w{ + ceph-debug + } + packages += packages_dbg + end end packages.each do |pkg| diff --git a/recipes/repo.rb b/recipes/repo.rb new file mode 100644 index 0000000..3f50c17 --- /dev/null +++ b/recipes/repo.rb @@ -0,0 +1,8 @@ +case node['platform_family'] +when "debian" + include_recipe "ceph::apt" +when "rhel", "suse" + include_recipe "ceph::rpm" +else + raise "not supported" +end diff --git a/recipes/rpm.rb b/recipes/rpm.rb new file mode 100644 index 0000000..7659271 --- /dev/null +++ b/recipes/rpm.rb @@ -0,0 +1,47 @@ +case node['platform_family'] +when "rhel" + version = %x[ cat /etc/redhat-release | awk '{print $3}' | awk -F. '{print $1}' ].chomp + release = "el" + version + if node['ceph']['el_add_epel'] == true + # We need to do this since the EPEL + # version might change + epel_package = %x[ curl -s http://dl.fedoraproject.org/pub/epel/fullfilelist | grep ^#{version}/#{node['kernel']['machine']}/epel-release ].chomp + system "rpm -U http://dl.fedoraproject.org/pub/epel/#{epel_package}" + end +when "fedora" + version = %x[ cat /etc/fedora-release | awk '{print $3}' ].chomp + release = "fc" + version +when "suse" + suse = %x[ head -n1 /etc/SuSE-release| awk '{print $1}' ].chomp.downcase #can be suse or opensuse + version = %x[ grep VERSION /etc/SuSE-release | awk -F'= ' '{print $2}' ].chomp + release = suse + version +end + +end_path = "/#{release}/x86_64/ceph-release-1-0.#{release}.noarch.rpm" +case node['ceph']['branch'] +when "stable" + path = "http://ceph.com/rpm-#{node['ceph']['version']}" + end_path + system "rpm -U #{path}" +when "testing" + path = "http://ceph.com/rpm-testing" + end_path + system "rpm -U #{path}" +when "dev" + if node['platform'] == "centos" + baseurl="http://gitbuilder.ceph.com/ceph-rpm-centos#{version}-x86_64-basic/ref/#{node['ceph']['version']}/x86_64/" + elsif node['platform'] == "fedora" + baseurl="http://gitbuilder.ceph.com/ceph-rpm-#{release}-x86_64-basic/ref/#{node['ceph']['version']}/RPMS/x86_64/" + else + raise "repository not available for your distribution" + end + # Instead of using the yum cookbook, + # we do it this way. It avoids a dependency + system "curl -s 'https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/autobuild.asc' > /etc/pki/rpm-gpg/RPM-GPG-KEY-CEPH" + system "cat > /etc/yum.repos.d/ceph.repo << EOF\n" \ + "[ceph]\n" \ + "name=Ceph\n" \ + "baseurl=#{baseurl}\n" \ + "enabled=1\n" \ + "gpgcheck=1\n" \ + "gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CEPH\n" \ + "EOF\n" +end