From 7e72af6717778f869498e10adcd77404f06c0035 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Tue, 11 Sep 2018 17:58:23 +0100 Subject: [PATCH] Replace apt_source with builtin apt_repository resource Closes #189 --- cookbooks/apt/recipes/default.rb | 137 +++++++++--------- cookbooks/apt/resources/source.rb | 82 ----------- .../apt/templates/default/default.list.erb | 4 - .../templates/default/elasticsearch.list.erb | 3 - cookbooks/apt/templates/default/hp.list.erb | 7 - .../apt/templates/default/hwraid.list.erb | 4 - .../apt/templates/default/mediawiki.list.erb | 4 - .../apt/templates/default/nginx.list.erb | 4 - .../apt/templates/default/postgresql.list.erb | 4 - 9 files changed, 66 insertions(+), 183 deletions(-) delete mode 100644 cookbooks/apt/resources/source.rb delete mode 100644 cookbooks/apt/templates/default/default.list.erb delete mode 100644 cookbooks/apt/templates/default/elasticsearch.list.erb delete mode 100644 cookbooks/apt/templates/default/hp.list.erb delete mode 100644 cookbooks/apt/templates/default/hwraid.list.erb delete mode 100644 cookbooks/apt/templates/default/mediawiki.list.erb delete mode 100644 cookbooks/apt/templates/default/nginx.list.erb delete mode 100644 cookbooks/apt/templates/default/postgresql.list.erb diff --git a/cookbooks/apt/recipes/default.rb b/cookbooks/apt/recipes/default.rb index 51586d61b..4282ba107 100644 --- a/cookbooks/apt/recipes/default.rb +++ b/cookbooks/apt/recipes/default.rb @@ -31,9 +31,8 @@ file "/etc/motd.tail" do action :delete end -execute "apt-update" do +apt_update "/etc/apt/sources.list" do action :nothing - command "/usr/bin/apt-get update" end archive_host = if node[:country] @@ -48,110 +47,106 @@ template "/etc/apt/sources.list" do group "root" mode 0o644 variables :archive_host => archive_host, :codename => node[:lsb][:codename] - notifies :run, "execute[apt-update]", :immediately + notifies :update, "apt_update[/etc/apt/sources.list]", :immediately end -if node[:lsb][:release].to_f >= 16.04 - apt_source "brightbox-ruby-ng" do - action :delete - end -else - apt_source "brightbox-ruby-ng" do - url "http://ppa.launchpad.net/brightbox/ruby-ng/ubuntu" - key "F5DA5F09C3173AA6" - end +repository_actions = Hash.new do |_, repository| + node[:apt][:sources].include?(repository) ? :add : :remove end -apt_source "ubuntugis-stable" do - url "http://ppa.launchpad.net/ubuntugis/ppa/ubuntu" - key "089EBE08314DF160" +apt_repository "brightbox-ruby-ng" do + action repository_actions["brightbox-ruby-ng"] + uri "ppa:brightbox/ruby-ng" end -apt_source "ubuntugis-unstable" do - url "http://ppa.launchpad.net/ubuntugis/ubuntugis-unstable/ubuntu" - key "089EBE08314DF160" +apt_repository "ubuntugis-stable" do + action repository_actions["ubuntugis-stable"] + uri "ppa:ubuntugis/ppa" end -apt_source "openstreetmap" do - url "http://ppa.launchpad.net/osmadmins/ppa/ubuntu" - key "D57F48750AC4F2CB" - update true +apt_repository "ubuntugis-unstable" do + action repository_actions["ubuntugis-unstable"] + uri "ppa:ubuntugis/ubuntugis-unstable" end -apt_source "squid2" do - url "http://ppa.launchpad.net/osmadmins/squid2/ubuntu" - key "D57F48750AC4F2CB" - update true +apt_repository "openstreetmap" do + action repository_actions["openstreetmap"] + uri "ppa:osmadmins/ppa" end -apt_source "squid3" do - url "http://ppa.launchpad.net/osmadmins/squid3/ubuntu" - key "D57F48750AC4F2CB" - update true +apt_repository "squid2" do + action repository_actions["squid2"] + uri "ppa:osmadmins/squid2" end -apt_source "management-component-pack" do - source_template "hp.list.erb" - url "https://downloads.linux.hpe.com/SDR/repo/mcp" - key "C208ADDE26C2B797" - key_url "https://downloads.linux.hpe.com/SDR/hpePublicKey2048_key1.pub" +apt_repository "squid3" do + action repository_actions["squid3"] + uri "ppa:osmadmins/squid3" end -apt_source "hwraid" do - source_template "hwraid.list.erb" - url "https://hwraid.le-vert.net/ubuntu" - key "6005210E23B3D3B4" +apt_repository "management-component-pack" do + action repository_actions["management-component-pack"] + uri "https://downloads.linux.hpe.com/SDR/repo/mcp" + if node[:lsb][:release].to_f >= 16.04 + distribution "xenial/current" + else + distribution "#{node[:lsb][:codename]}/current" + end + components ["non-free"] + key "C208ADDE26C2B797" end -apt_source "mapnik-v210" do - url "http://ppa.launchpad.net/mapnik/v2.1.0/ubuntu" - key "4F7B93595D50B6BA" +apt_repository "hwraid" do + action repository_actions["hwraid"] + uri "https://hwraid.le-vert.net/ubuntu" + distribution "precise" + components ["main"] + key "6005210E23B3D3B4" end -apt_source "nginx" do - source_template "nginx.list.erb" - url "https://nginx.org/packages/ubuntu" +apt_repository "nginx" do + action repository_actions["nginx"] + uri "https://nginx.org/packages/ubuntu" + components ["nginx"] key "ABF5BD827BD9BF62" end -apt_source "elasticsearch1.7" do - source_template "elasticsearch.list.erb" - url "https://packages.elasticsearch.org/elasticsearch/1.7/debian" - key "D27D666CD88E42B4" -end - -apt_source "elasticsearch2.x" do - source_template "elasticsearch.list.erb" - url "https://packages.elasticsearch.org/elasticsearch/2.x/debian" - key "D27D666CD88E42B4" -end - -apt_source "elasticsearch5.x" do - source_template "elasticsearch.list.erb" - url "https://artifacts.elastic.co/packages/5.x/apt" +apt_repository "elasticsearch5.x" do + action repository_actions["elasticsearch5.x"] + uri "https://artifacts.elastic.co/packages/5.x/apt" + distribution "stable" + components ["main"] key "D27D666CD88E42B4" end -apt_source "logstash" do - source_template "elasticsearch.list.erb" - url "https://packages.elasticsearch.org/logstash/2.3/debian" +apt_repository "logstash" do + action repository_actions["logstash"] + uri "https://packages.elasticsearch.org/logstash/2.3/debian" + distribution "stable" + components ["main"] key "D27D666CD88E42B4" end -apt_source "passenger" do - url "https://oss-binaries.phusionpassenger.com/apt/passenger" +apt_repository "passenger" do + action repository_actions["passenger"] + uri "https://oss-binaries.phusionpassenger.com/apt/passenger" + components ["main"] key "561F9B9CAC40B2F7" end -apt_source "postgresql" do - source_template "postgresql.list.erb" - url "https://apt.postgresql.org/pub/repos/apt" +apt_repository "postgresql" do + action repository_actions["postgresql"] + uri "https://apt.postgresql.org/pub/repos/apt" + distribution "#{node[:lsb][:codename]}-pgdg" + components ["main"] key "7FCC7D46ACCC4CF8" end -apt_source "mediawiki" do - source_template "mediawiki.list.erb" - url "https://releases.wikimedia.org/debian" +apt_repository "mediawiki" do + action repository_actions["mediawiki"] + uri "https://releases.wikimedia.org/debian" + distribution "jessie-mediawiki" + components ["main"] key "90E9F83F22250DD7" end diff --git a/cookbooks/apt/resources/source.rb b/cookbooks/apt/resources/source.rb deleted file mode 100644 index d678ccca9..000000000 --- a/cookbooks/apt/resources/source.rb +++ /dev/null @@ -1,82 +0,0 @@ -# -# Cookbook Name:: apt -# Resource:: apt_source -# -# Copyright 2015, OpenStreetMap Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# 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. -# - -default_action :create - -property :source_name, String, :name_property => true -property :source_template, String, :default => "default.list.erb" -property :url, String, :required => true -property :key, String -property :key_url, String -property :update, [TrueClass, FalseClass], :default => false - -def initialize(name, run_context = nil) - super(name, run_context) - - @action = node[:apt][:sources].include?(name) ? :create : :delete -end - -action :create do - if new_resource.key - execute "apt-key-#{new_resource.key}-clean" do - command "/usr/bin/apt-key adv --batch --delete-key --yes #key}" - only_if "/usr/bin/apt-key adv --list-keys #{new_resource.key} | fgrep expired" - end - - if new_resource.key_url - execute "apt-key-#{new_resource.key}-install" do - command "/usr/bin/apt-key adv --fetch-keys #{new_resource.key_url}" - not_if "/usr/bin/apt-key adv --list-keys #{new_resource.key}" - notifies :run, "execute[apt-update-#{new_resource.source_name}]" - end - else - execute "apt-key-#{new_resource.key}-install" do - command "/usr/bin/apt-key adv --keyserver hkp://keys.gnupg.net --recv-keys #{new_resource.key}" - not_if "/usr/bin/apt-key adv --list-keys #{new_resource.key}" - notifies :run, "execute[apt-update-#{new_resource.source_name}]" - end - end - end - - template source_path do - source new_resource.source_template - owner "root" - group "root" - mode 0o644 - variables :url => new_resource.url - notifies :run, "execute[apt-update-#{new_resource.source_name}]" - end - - execute "apt-update-#{new_resource.source_name}" do - action new_resource.update ? :run : :nothing - command "/usr/bin/apt-get update --no-list-cleanup -o Dir::Etc::sourcelist='#{source_path}' -o Dir::Etc::sourceparts='-'" - end -end - -action :delete do - file source_path do - action :delete - end -end - -action_class do - def source_path - "/etc/apt/sources.list.d/#{new_resource.source_name}.list" - end -end diff --git a/cookbooks/apt/templates/default/default.list.erb b/cookbooks/apt/templates/default/default.list.erb deleted file mode 100644 index 50622adce..000000000 --- a/cookbooks/apt/templates/default/default.list.erb +++ /dev/null @@ -1,4 +0,0 @@ -# DO NOT EDIT - This file is being maintained by Chef - -deb <%= @url %> <%= node[:lsb][:codename] %> main -deb-src <%= @url %> <%= node[:lsb][:codename] %> main diff --git a/cookbooks/apt/templates/default/elasticsearch.list.erb b/cookbooks/apt/templates/default/elasticsearch.list.erb deleted file mode 100644 index d78b447d5..000000000 --- a/cookbooks/apt/templates/default/elasticsearch.list.erb +++ /dev/null @@ -1,3 +0,0 @@ -# DO NOT EDIT - This file is being maintained by Chef - -deb <%= @url %> stable main diff --git a/cookbooks/apt/templates/default/hp.list.erb b/cookbooks/apt/templates/default/hp.list.erb deleted file mode 100644 index f76d66efb..000000000 --- a/cookbooks/apt/templates/default/hp.list.erb +++ /dev/null @@ -1,7 +0,0 @@ -# DO NOT EDIT - This file is being maintained by Chef - -<% if node[:lsb][:release].to_f >= 16.04 -%> -deb <%= @url %> xenial/current non-free -<% else -%> -deb <%= @url %> trusty/current non-free -<% end -%> diff --git a/cookbooks/apt/templates/default/hwraid.list.erb b/cookbooks/apt/templates/default/hwraid.list.erb deleted file mode 100644 index 211e6b9b8..000000000 --- a/cookbooks/apt/templates/default/hwraid.list.erb +++ /dev/null @@ -1,4 +0,0 @@ -# DO NOT EDIT - This file is being maintained by Chef - -deb <%= @url %> precise main -deb-src <%= @url %> precise main diff --git a/cookbooks/apt/templates/default/mediawiki.list.erb b/cookbooks/apt/templates/default/mediawiki.list.erb deleted file mode 100644 index 3d0062ad9..000000000 --- a/cookbooks/apt/templates/default/mediawiki.list.erb +++ /dev/null @@ -1,4 +0,0 @@ -# DO NOT EDIT - This file is being maintained by Chef - -deb <%= @url %> jessie-mediawiki main -deb-src <%= @url %> jessie-mediawiki main diff --git a/cookbooks/apt/templates/default/nginx.list.erb b/cookbooks/apt/templates/default/nginx.list.erb deleted file mode 100644 index 02bab5476..000000000 --- a/cookbooks/apt/templates/default/nginx.list.erb +++ /dev/null @@ -1,4 +0,0 @@ -# DO NOT EDIT - This file is being maintained by Chef - -deb <%= @url %> <%= node[:lsb][:codename] %> nginx -deb-src <%= @url %> <%= node[:lsb][:codename] %> nginx diff --git a/cookbooks/apt/templates/default/postgresql.list.erb b/cookbooks/apt/templates/default/postgresql.list.erb deleted file mode 100644 index 1f62a0d01..000000000 --- a/cookbooks/apt/templates/default/postgresql.list.erb +++ /dev/null @@ -1,4 +0,0 @@ -# DO NOT EDIT - This file is being maintained by Chef - -deb <%= @url %> <%= node[:lsb][:codename] %>-pgdg main -deb-src <%= @url %> <%= node[:lsb][:codename] %>-pgdg main -- 2.43.2