From 19aeb7bfffb852ab8be005c004b1ef8e555a5b77 Mon Sep 17 00:00:00 2001 From: Tim Smith Date: Wed, 15 Nov 2017 15:14:53 -0800 Subject: [PATCH] Use multipackage installs throughout In Chef 12.1 we introduced multipackage installs. Instead of shelling out to dpkg for each package to determine what we should do we gather the information we need and check each package in the array. It's faster and it takes less memory. It's especially useful after the first run when nothing actually changes. Far fewer resources consumed. I noticed you arranged the packages so I tried to keep them to that same arrangement and I used multiline arrays since they make the diffs nicer in the future as you add / remove packages. This isn't necessary for Chef 13, but it's best practice. Signed-off-by: Tim Smith Closes #137 --- cookbooks/accounts/recipes/default.rb | 4 +- cookbooks/apache/recipes/default.rb | 6 ++- cookbooks/apt/recipes/default.rb | 8 +-- cookbooks/backup/recipes/default.rb | 6 ++- cookbooks/blogs/recipes/default.rb | 12 +++-- cookbooks/clamav/recipes/default.rb | 8 +-- cookbooks/dev/recipes/default.rb | 54 ++++++++++++--------- cookbooks/dns/recipes/default.rb | 17 ++++--- cookbooks/donate/recipes/default.rb | 12 +++-- cookbooks/elasticsearch/recipes/default.rb | 6 ++- cookbooks/exim/recipes/default.rb | 8 +-- cookbooks/forum/recipes/default.rb | 12 +++-- cookbooks/foundation/recipes/owg.rb | 6 ++- cookbooks/geodns/recipes/default.rb | 7 +-- cookbooks/gps-tile/recipes/default.rb | 22 +++++---- cookbooks/imagery/recipes/default.rb | 26 ++++++---- cookbooks/letsencrypt/recipes/default.rb | 6 ++- cookbooks/logstash/recipes/default.rb | 6 ++- cookbooks/mediawiki/recipes/default.rb | 42 ++++++++++------ cookbooks/ntp/recipes/default.rb | 8 +-- cookbooks/sysctl/recipes/default.rb | 4 +- cookbooks/taginfo/recipes/default.rb | 38 ++++++++------- cookbooks/tile/recipes/default.rb | 38 +++++++++------ cookbooks/tilecache/recipes/default.rb | 6 ++- cookbooks/tilelog/recipes/default.rb | 16 +++--- cookbooks/tools/recipes/default.rb | 38 ++++++++------- cookbooks/trac/recipes/default.rb | 8 +-- cookbooks/web/recipes/gpx.rb | 22 +++++---- cookbooks/wordpress/recipes/default.rb | 9 ++-- cookbooks/yournavigation/recipes/default.rb | 38 ++++++++------- 30 files changed, 286 insertions(+), 207 deletions(-) diff --git a/cookbooks/accounts/recipes/default.rb b/cookbooks/accounts/recipes/default.rb index feb57a5e9..b0110cf3c 100644 --- a/cookbooks/accounts/recipes/default.rb +++ b/cookbooks/accounts/recipes/default.rb @@ -17,9 +17,7 @@ # limitations under the License. # -package "zsh" do - action :install -end +package "zsh" administrators = [] diff --git a/cookbooks/apache/recipes/default.rb b/cookbooks/apache/recipes/default.rb index 1a274e223..625c3eb22 100644 --- a/cookbooks/apache/recipes/default.rb +++ b/cookbooks/apache/recipes/default.rb @@ -19,8 +19,10 @@ include_recipe "ssl" -package "apache2" -package "libwww-perl" +package %w[ + apache2 + libwww-perl +] %w[event itk prefork worker].each do |mpm| if mpm == node[:apache][:mpm] diff --git a/cookbooks/apt/recipes/default.rb b/cookbooks/apt/recipes/default.rb index 1de8cffe2..508030bf2 100644 --- a/cookbooks/apt/recipes/default.rb +++ b/cookbooks/apt/recipes/default.rb @@ -17,9 +17,11 @@ # limitations under the License. # -package "apt" -package "gnupg-curl" -package "update-notifier-common" +package %w[ + apt + gnupg-curl + update-notifier-common +] file "/etc/motd.tail" do action :delete diff --git a/cookbooks/backup/recipes/default.rb b/cookbooks/backup/recipes/default.rb index 27d12eb9b..268eaeec8 100644 --- a/cookbooks/backup/recipes/default.rb +++ b/cookbooks/backup/recipes/default.rb @@ -17,8 +17,10 @@ # limitations under the License. # -package "perl" -package "libdate-calc-perl" +package %w[ + perl + libdate-calc-perl +] directory "/store/backup" do owner "osmbackup" diff --git a/cookbooks/blogs/recipes/default.rb b/cookbooks/blogs/recipes/default.rb index faf12775c..e67716638 100644 --- a/cookbooks/blogs/recipes/default.rb +++ b/cookbooks/blogs/recipes/default.rb @@ -20,11 +20,13 @@ include_recipe "apache" include_recipe "git" -package "ruby" -package "ruby-dev" -package "make" -package "gcc" -package "libsqlite3-dev" +package %w[ + ruby + ruby-dev + make + gcc + libsqlite3-dev +] gem_package "bundler" diff --git a/cookbooks/clamav/recipes/default.rb b/cookbooks/clamav/recipes/default.rb index fe92becb5..93ec86e69 100644 --- a/cookbooks/clamav/recipes/default.rb +++ b/cookbooks/clamav/recipes/default.rb @@ -17,9 +17,11 @@ # limitations under the License. # -package "clamav-daemon" -package "clamav-freshclam" -package "clamav-unofficial-sigs" +package %w[ + clamav-daemon + clamav-freshclam + clamav-unofficial-sigs +] template "/etc/clamav-unofficial-sigs.conf.d/50-chef.conf" do source "clamav-unofficial-sigs.conf.erb" diff --git a/cookbooks/dev/recipes/default.rb b/cookbooks/dev/recipes/default.rb index 80b80586b..c1c56e8cf 100644 --- a/cookbooks/dev/recipes/default.rb +++ b/cookbooks/dev/recipes/default.rb @@ -28,30 +28,36 @@ include_recipe "nodejs" include_recipe "postgresql" include_recipe "python" -package "php" -package "php-cgi" -package "php-cli" -package "php-curl" -package "php-db" -package "php-fpm" -package "php-imagick" -package "php-mcrypt" -package "php-mysql" -package "php-pear" -package "php-pgsql" -package "php-sqlite3" - -package "pngcrush" -package "pngquant" - -package "python" -package "python-argparse" -package "python-beautifulsoup" -package "python-cheetah" -package "python-dateutil" -package "python-magic" -package "python-psycopg2" -package "python-gdal" +package %w[ + php + php-cgi + php-cli + php-curl + php-db + php-fpm + php-imagick + php-mcrypt + php-mysql + php-pear + php-pgsql + php-sqlite3 +] + +package %w[ + pngcrush + pngquant +] + +package %w[ + python + python-argparse + python-beautifulsoup + python-cheetah + python-dateutil + python-magic + python-psycopg2 + python-gdal +] nodejs_package "svgo" diff --git a/cookbooks/dns/recipes/default.rb b/cookbooks/dns/recipes/default.rb index 6c19048f2..33ec30277 100644 --- a/cookbooks/dns/recipes/default.rb +++ b/cookbooks/dns/recipes/default.rb @@ -22,14 +22,15 @@ include_recipe "apache" passwords = data_bag_item("dns", "passwords") -package "make" - -package "perl" -package "libxml-treebuilder-perl" -package "libxml-writer-perl" -package "libyaml-perl" -package "libwww-perl" -package "libjson-xs-perl" +package %w[ + make + perl + libxml-treebuilder-perl + libxml-writer-perl + libyaml-perl + libwww-perl + libjson-xs-perl +] directory "/srv/dns.openstreetmap.org" do owner "root" diff --git a/cookbooks/donate/recipes/default.rb b/cookbooks/donate/recipes/default.rb index 89eb26d57..1e056d96e 100644 --- a/cookbooks/donate/recipes/default.rb +++ b/cookbooks/donate/recipes/default.rb @@ -21,11 +21,13 @@ include_recipe "apache" include_recipe "mysql" include_recipe "git" -package "php" -package "php-cli" -package "php-curl" -package "php-mysql" -package "php-gd" +package %w[ + php + php-cli + php-curl + php-mysql + php-gd +] apache_module "php7.0" diff --git a/cookbooks/elasticsearch/recipes/default.rb b/cookbooks/elasticsearch/recipes/default.rb index a40d45ce2..36858b77d 100644 --- a/cookbooks/elasticsearch/recipes/default.rb +++ b/cookbooks/elasticsearch/recipes/default.rb @@ -17,8 +17,10 @@ # limitations under the License. # -package "default-jre-headless" -package "elasticsearch" +package %w[ + default-jre-headless + elasticsearch +] template "/etc/elasticsearch/elasticsearch.yml" do source "elasticsearch.yml.erb" diff --git a/cookbooks/exim/recipes/default.rb b/cookbooks/exim/recipes/default.rb index a74e4d6a5..144b62bb3 100644 --- a/cookbooks/exim/recipes/default.rb +++ b/cookbooks/exim/recipes/default.rb @@ -19,9 +19,11 @@ include_recipe "networking" -package "exim4" -package "openssl" -package "ssl-cert" +package %w[ + exim4 + openssl + ssl-cert +] package "exim4-daemon-heavy" if File.exist?("/var/run/clamav/clamd.ctl") diff --git a/cookbooks/forum/recipes/default.rb b/cookbooks/forum/recipes/default.rb index e6f131113..fcc776620 100644 --- a/cookbooks/forum/recipes/default.rb +++ b/cookbooks/forum/recipes/default.rb @@ -22,11 +22,13 @@ include_recipe "mysql" passwords = data_bag_item("forum", "passwords") -package "php" -package "php-cli" -package "php-mysql" -package "php-xml" -package "php-apcu" +package %w[ + php + php-cli + php-mysql + php-xml + php-apcu +] apache_module "php7.0" apache_module "rewrite" diff --git a/cookbooks/foundation/recipes/owg.rb b/cookbooks/foundation/recipes/owg.rb index d0dd92a84..3e0df09bb 100644 --- a/cookbooks/foundation/recipes/owg.rb +++ b/cookbooks/foundation/recipes/owg.rb @@ -20,8 +20,10 @@ include_recipe "apache" include_recipe "git" -package "ruby" -package "ruby-dev" +package %w[ + ruby + ruby-dev +] gem_package "bundler" diff --git a/cookbooks/geodns/recipes/default.rb b/cookbooks/geodns/recipes/default.rb index a0ee24646..a21323026 100644 --- a/cookbooks/geodns/recipes/default.rb +++ b/cookbooks/geodns/recipes/default.rb @@ -17,9 +17,10 @@ # limitations under the License. # -package "geoip-database-contrib" - -package "gdnsd" +package %w[ + geoip-database-contrib + gdnsd +] service "gdnsd" do action [:enable, :start] diff --git a/cookbooks/gps-tile/recipes/default.rb b/cookbooks/gps-tile/recipes/default.rb index f2104bc46..315865ac9 100644 --- a/cookbooks/gps-tile/recipes/default.rb +++ b/cookbooks/gps-tile/recipes/default.rb @@ -19,16 +19,18 @@ include_recipe "apache" -package "make" -package "build-essential" -package "pkg-config" -package "zlib1g-dev" -package "libbz2-dev" -package "libarchive-dev" -package "libexpat1-dev" -package "libpng-dev" -package "pngquant" -package "libcache-memcached-perl" +package %w[ + make + build-essential + pkg-config + zlib1g-dev + libbz2-dev + libarchive-dev + libexpat1-dev + libpng-dev + pngquant + libcache-memcached-perl +] directory "/srv/gps-tile.openstreetmap.org" do owner "gpstile" diff --git a/cookbooks/imagery/recipes/default.rb b/cookbooks/imagery/recipes/default.rb index 5a8e5517d..814c22582 100644 --- a/cookbooks/imagery/recipes/default.rb +++ b/cookbooks/imagery/recipes/default.rb @@ -21,24 +21,32 @@ include_recipe "nginx" include_recipe "git" # Imagery gdal Requirements -package "gdal-bin" -package "python-gdal" +package %w[ + gdal-bin + python-gdal +] # Imagery MapServer + Mapcache Requirements -package "cgi-mapserver" -package "mapcache-cgi" -package "mapcache-tools" +package %w[ + cgi-mapserver + mapcache-cgi + mapcache-tools +] # Mapserver via Nginx requires as fastcgi spawner -package "spawn-fcgi" -package "multiwatch" +package %w[ + spawn-fcgi + multiwatch +] # Imagery processing Requirements package "imagemagick" # Imagery misc compression -package "xz-utils" -package "unzip" +package %w[ + xz-utils + unzip +] directory "/srv/imagery/mapserver" do owner "root" diff --git a/cookbooks/letsencrypt/recipes/default.rb b/cookbooks/letsencrypt/recipes/default.rb index f3ddd9712..8f9564457 100644 --- a/cookbooks/letsencrypt/recipes/default.rb +++ b/cookbooks/letsencrypt/recipes/default.rb @@ -21,8 +21,10 @@ include_recipe "apache" keys = data_bag_item("chef", "keys") -package "certbot" -package "ruby" +package %w[ + certbot + ruby +] directory "/etc/letsencrypt" do owner "letsencrypt" diff --git a/cookbooks/logstash/recipes/default.rb b/cookbooks/logstash/recipes/default.rb index 3f2c98f91..fd758d880 100644 --- a/cookbooks/logstash/recipes/default.rb +++ b/cookbooks/logstash/recipes/default.rb @@ -21,8 +21,10 @@ include_recipe "networking" keys = data_bag_item("logstash", "keys") -package "default-jre-headless" -package "logstash" +package %w[ + default-jre-headless + logstash +] cookbook_file "/var/lib/logstash/lumberjack.crt" do source "lumberjack.crt" diff --git a/cookbooks/mediawiki/recipes/default.rb b/cookbooks/mediawiki/recipes/default.rb index 9dedef7cf..568ca2d72 100644 --- a/cookbooks/mediawiki/recipes/default.rb +++ b/cookbooks/mediawiki/recipes/default.rb @@ -23,33 +23,43 @@ include_recipe "mysql" include_recipe "git" # Mediawiki Base Requirements -package "php" -package "php-cli" -package "php-curl" -package "php-gd" -package "php-intl" -package "php-mbstring" -package "php-mysql" -package "php-xml" +package %w[ + php + php-cli + php-curl + php-gd + php-intl + php-mbstring + php-mysql + php-xml +] # Mediawiki enhanced difference engine package "php-wikidiff2" # Mediawiki Image + SVG support -package "imagemagick" -package "librsvg2-bin" +package %w[ + imagemagick + librsvg2-bin +] # Mediawiki PDF support via Extension:PdfHandler -package "ghostscript" -package "poppler-utils" +package %w[ + ghostscript + poppler-utils +] # Mediawiki backup -package "xz-utils" -package "liblz4-tool" +package %w[ + xz-utils + liblz4-tool +] # Mediawiki packages for VisualEditor support -package "curl" -package "parsoid" +package %w[ + curl + parsoid +] # Mediawiki packages for SyntaxHighight support package "python-pygments" diff --git a/cookbooks/ntp/recipes/default.rb b/cookbooks/ntp/recipes/default.rb index cdf3b5a96..ef5b328b3 100644 --- a/cookbooks/ntp/recipes/default.rb +++ b/cookbooks/ntp/recipes/default.rb @@ -19,9 +19,11 @@ require "socket" -package "ntp" -package "ntpdate" -package "tzdata" +package %w[ + ntp + ntpdate + tzdata +] execute "dpkg-reconfigure-tzdata" do action :nothing diff --git a/cookbooks/sysctl/recipes/default.rb b/cookbooks/sysctl/recipes/default.rb index 930541945..de6cdcbf5 100644 --- a/cookbooks/sysctl/recipes/default.rb +++ b/cookbooks/sysctl/recipes/default.rb @@ -17,9 +17,7 @@ # limitations under the License. # -package "procps" do - action :install -end +package "procps" directory "/etc/sysctl.d" do owner "root" diff --git a/cookbooks/taginfo/recipes/default.rb b/cookbooks/taginfo/recipes/default.rb index e1a9c7225..50528eae7 100644 --- a/cookbooks/taginfo/recipes/default.rb +++ b/cookbooks/taginfo/recipes/default.rb @@ -23,23 +23,27 @@ include_recipe "apache" include_recipe "passenger" include_recipe "git" -package "libsqlite3-dev" -package "zlib1g-dev" -package "libbz2-dev" -package "libboost-dev" -package "libexpat1-dev" -package "libsparsehash-dev" -package "libgd2-xpm-dev" -package "libicu-dev" -package "libboost-program-options-dev" -package "cmake" -package "make" -package "g++" - -package "sqlite3" -package "osmosis" -package "curl" -package "pbzip2" +package %w[ + libsqlite3-dev + zlib1g-dev + libbz2-dev + libboost-dev + libexpat1-dev + libsparsehash-dev + libgd2-xpm-dev + libicu-dev + libboost-program-options-dev + cmake + make + g++ +] + +package %w[ + sqlite3 + osmosis + curl + pbzip2 +] ruby_version = node[:passenger][:ruby_version] diff --git a/cookbooks/tile/recipes/default.rb b/cookbooks/tile/recipes/default.rb index 9ae3dfc93..7befcdc20 100644 --- a/cookbooks/tile/recipes/default.rb +++ b/cookbooks/tile/recipes/default.rb @@ -118,17 +118,21 @@ template "/srv/tile.openstreetmap.org/html/index.html" do mode 0o644 end -package "python-cairo" -package "python-mapnik" -package "python-setuptools" +package %w[ + python-cairo + python-mapnik + python-setuptools +] python_package "pyotp" -package "fonts-noto-cjk" -package "fonts-noto-hinted" -package "fonts-noto-unhinted" -package "fonts-hanazono" -package "ttf-unifont" +package %w[ + fonts-noto-cjk + fonts-noto-hinted + fonts-noto-unhinted + fonts-hanazono + ttf-unifont +] ["NotoSansArabicUI-Regular.ttf", "NotoSansArabicUI-Bold.ttf"].each do |font| remote_file "/usr/share/fonts/truetype/noto/#{font}" do @@ -421,14 +425,20 @@ directory "/var/log/tile" do mode 0o755 end -package "osm2pgsql" -package "osmosis" +package %w[ + osm2pgsql + osmosis +] -package "ruby" -package "ruby-dev" +package %w[ + ruby + ruby-dev +] -package "libproj-dev" -package "libxml2-dev" +package %w[ + libproj-dev + libxml2-dev +] gem_package "proj4rb" gem_package "libxml-ruby" diff --git a/cookbooks/tilecache/recipes/default.rb b/cookbooks/tilecache/recipes/default.rb index 0a02e1567..728d26f49 100644 --- a/cookbooks/tilecache/recipes/default.rb +++ b/cookbooks/tilecache/recipes/default.rb @@ -27,8 +27,10 @@ package "apache2" do action :remove end -package "xz-utils" -package "openssl" +package %w[ + xz-utils + openssl +] # oathtool for QoS token package "oathtool" diff --git a/cookbooks/tilelog/recipes/default.rb b/cookbooks/tilelog/recipes/default.rb index 675e3abc2..0916f6b60 100644 --- a/cookbooks/tilelog/recipes/default.rb +++ b/cookbooks/tilelog/recipes/default.rb @@ -19,13 +19,15 @@ include_recipe "tools" -package "gcc" -package "make" -package "autoconf" -package "automake" -package "libboost-filesystem-dev" -package "libboost-system-dev" -package "libboost-program-options-dev" +package %w[ + gcc + make + autoconf + automake + libboost-filesystem-dev + libboost-system-dev + libboost-program-options-dev +] tilelog_source_directory = node[:tilelog][:source_directory] tilelog_input_directory = node[:tilelog][:input_directory] diff --git a/cookbooks/tools/recipes/default.rb b/cookbooks/tools/recipes/default.rb index 5c872d909..99c03e2b9 100644 --- a/cookbooks/tools/recipes/default.rb +++ b/cookbooks/tools/recipes/default.rb @@ -17,24 +17,26 @@ # limitations under the License. # -package "bash-completion" -package "dmidecode" -package "ethtool" -package "lsof" -package "lsscsi" -package "pciutils" -package "screen" -package "smartmontools" -package "strace" -package "sysstat" -package "tcpdump" -package "usbutils" -package "numactl" -package "xfsprogs" -package "sysv-rc-conf" -package "iotop" -package "lvm2" -package "rsyslog" +package %w[ + bash-completion + dmidecode + ethtool + lsof + lsscsi + pciutils + screen + smartmontools + strace + sysstat + tcpdump + usbutils + numactl + xfsprogs + sysv-rc-conf + iotop + lvm2 + rsyslog +] service "rsyslog" do action [:enable, :start] diff --git a/cookbooks/trac/recipes/default.rb b/cookbooks/trac/recipes/default.rb index b149a5751..a26cc7d27 100644 --- a/cookbooks/trac/recipes/default.rb +++ b/cookbooks/trac/recipes/default.rb @@ -19,9 +19,11 @@ include_recipe "apache" -package "trac" -package "trac-git" -package "ruby" +package %w[ + trac + trac-git + ruby +] site_name = "trac.openstreetmap.org" site_directory = "/srv/#{site_name}" diff --git a/cookbooks/web/recipes/gpx.rb b/cookbooks/web/recipes/gpx.rb index 59d5bc1de..4a1da30b2 100644 --- a/cookbooks/web/recipes/gpx.rb +++ b/cookbooks/web/recipes/gpx.rb @@ -21,16 +21,18 @@ include_recipe "web::base" db_passwords = data_bag_item("db", "passwords") -package "gcc" -package "make" -package "pkg-config" -package "libarchive-dev" -package "libbz2-dev" -package "libexpat1-dev" -package "libgd2-noxpm-dev" -package "libmemcached-dev" -package "libpq-dev" -package "zlib1g-dev" +package %w[ + gcc + make + pkg-config + libarchive-dev + libbz2-dev + libexpat1-dev + libgd2-noxpm-dev + libmemcached-dev + libpq-dev + zlib1g-dev +] gpx_directory = "#{node[:web][:base_directory]}/gpx-import" pid_directory = node[:web][:pid_directory] diff --git a/cookbooks/wordpress/recipes/default.rb b/cookbooks/wordpress/recipes/default.rb index a694f42b2..9c9bc7213 100644 --- a/cookbooks/wordpress/recipes/default.rb +++ b/cookbooks/wordpress/recipes/default.rb @@ -20,10 +20,11 @@ include_recipe "apache" include_recipe "mysql" -package "subversion" - -package "php" -package "php-mysql" +package %w[ + subversion + php + php-mysql +] apache_module "php7.0" apache_module "rewrite" diff --git a/cookbooks/yournavigation/recipes/default.rb b/cookbooks/yournavigation/recipes/default.rb index 949637b58..f9d5e2a39 100644 --- a/cookbooks/yournavigation/recipes/default.rb +++ b/cookbooks/yournavigation/recipes/default.rb @@ -19,27 +19,31 @@ include_recipe "apache" -package "php" -package "php-cli" -package "php-apcu" +package %w[ + php + php-cli + php-apcu +] # Required for osmosis package "default-jre-headless" # Required for building gosmore -package "build-essential" -package "libxml2-dev" -package "libgtk2.0-dev" -package "subversion" -package "libcurl4-gnutls-dev" -package "libgps-dev" -package "libcurl3" -package "buffer" -package "git" -package "cmake" -package "libqt4-dev" -package "qt4-dev-tools" -package "qt4-linguist-tools" -package "libicu-dev" +package %w[ + build-essential + libxml2-dev + libgtk2.0-dev + subversion + libcurl4-gnutls-dev + libgps-dev + libcurl3 + buffer + git + cmake + libqt4-dev + qt4-dev-tools + qt4-linguist-tools + libicu-dev +] apache_module "php7.0" -- 2.43.2