From 553ec510eb93f592fb3355bc99398119add8120b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Greg=20Kar=C3=A9kinian?= Date: Thu, 9 May 2019 18:38:56 +0200 Subject: [PATCH] Move the default config to a Chef attribute This is tested by serverspec integration test Closes #5 --- attributes/default.rb | 34 +++++++++++++++++-- metadata.rb | 2 +- recipes/default.rb | 30 +++------------- .../default/serverspec/ipfs_spec.rb | 34 +++++++++++++++++++ 4 files changed, 70 insertions(+), 30 deletions(-) diff --git a/attributes/default.rb b/attributes/default.rb index 77649c2..02b77bd 100644 --- a/attributes/default.rb +++ b/attributes/default.rb @@ -1,7 +1,35 @@ node.default['ipfs']['version'] = '0.4.17' node.default['ipfs']['checksum'] = '1bb1050ebe74f9042ac721eb1b71f92e1b0e78e54c59dadfde13080facb2901c' -# Do not contact local network addresses. This will stop platforms like Hetzner -# to block your server (https://github.com/ipfs/go-ipfs/issues/1226) -node.default['ipfs']['config']['swarm']['addr_filter'] = ['/ip4/10.0.0.0/ipcidr/8', '/ip4/100.64.0.0/ipcidr/10', '/ip4/169.254.0.0/ipcidr/16', '/ip4/172.16.0.0/ipcidr/12', '/ip4/192.0.0.0/ipcidr/24', '/ip4/192.0.0.0/ipcidr/29', '/ip4/192.0.0.8/ipcidr/32', '/ip4/192.0.0.170/ipcidr/32', '/ip4/192.0.0.171/ipcidr/32', '/ip4/192.0.2.0/ipcidr/24', '/ip4/192.168.0.0/ipcidr/16', '/ip4/198.18.0.0/ipcidr/15', '/ip4/198.51.100.0/ipcidr/24', '/ip4/203.0.113.0/ipcidr/24', '/ip4/240.0.0.0/ipcidr/4'] node.default['ipfs']['cluster']['version'] = '0.4.0' + +node.default['ipfs']['config'] = { + # Do not contact local network addresses. This will stop platforms like Hetzner + # to block your server (https://github.com/ipfs/go-ipfs/issues/1226) + "Swarm.AddrFilters" => ['/ip4/10.0.0.0/ipcidr/8', + '/ip4/100.64.0.0/ipcidr/10', + '/ip4/169.254.0.0/ipcidr/16', + '/ip4/172.16.0.0/ipcidr/12', + '/ip4/192.0.0.0/ipcidr/24', + '/ip4/192.0.0.0/ipcidr/29', + '/ip4/192.0.0.8/ipcidr/32', + '/ip4/192.0.0.170/ipcidr/32', + '/ip4/192.0.0.171/ipcidr/32', + '/ip4/192.0.2.0/ipcidr/24', + '/ip4/192.168.0.0/ipcidr/16', + '/ip4/198.18.0.0/ipcidr/15', + '/ip4/198.51.100.0/ipcidr/24', + '/ip4/203.0.113.0/ipcidr/24', + '/ip4/240.0.0.0/ipcidr/4'], + # Do not keep track of bandwidth metrics. Disabling bandwidth metrics can + # lead to a slight performance improvement, as well as a reduction in memory + # usage. + "Swarm.DisableBandwidthMetrics" => true, + # Disable the p2p-circuit relay transport + "Swarm.DisableRelay" => true, + # Number of connections that, when exceeded, will trigger a connection GC + # operation + "Swarm.ConnMgr.HighWater" => 10, + # Minimum number of connections to maintain + "Swarm.ConnMgr.LowWater" => 1 +} diff --git a/metadata.rb b/metadata.rb index 60d7807..a8b7488 100644 --- a/metadata.rb +++ b/metadata.rb @@ -4,7 +4,7 @@ maintainer_email 'mail@kosmos.org' license 'MIT' description 'Installs/Configures ipfs' long_description IO.read(File.join(File.dirname(__FILE__), 'README.md')) -version '0.1.3' +version '0.2.0' supports %w(ubuntu debian) diff --git a/recipes/default.rb b/recipes/default.rb index 91dd18f..73799a6 100644 --- a/recipes/default.rb +++ b/recipes/default.rb @@ -79,30 +79,8 @@ else end end -# Configure ipfs to not contact local network addresses -ipfs_config 'Swarm.AddrFilters' do - value node['ipfs']['config']['swarm']['addr_filter'] -end - -# Do not keep track of bandwidth metrics. Disabling bandwidth metrics can -# lead to a slight performance improvement, as well as a reduction in memory -# usage. -ipfs_config 'Swarm.DisableBandwidthMetrics' do - value true -end - -# Disable the p2p-circuit relay transport -ipfs_config 'Swarm.DisableRelay' do - value true -end - -# Number of connections that, when exceeded, will trigger a connection GC -# operation -ipfs_config 'Swarm.ConnMgr.HighWater' do - value 10 -end - -# Minimum number of connections to maintain -ipfs_config 'Swarm.ConnMgr.LowWater' do - value 1 +node['ipfs']['config'].each do |k, v| + ipfs_config k do + value v + end end diff --git a/test/integration/default/serverspec/ipfs_spec.rb b/test/integration/default/serverspec/ipfs_spec.rb index 7db110d..7eb3d3f 100644 --- a/test/integration/default/serverspec/ipfs_spec.rb +++ b/test/integration/default/serverspec/ipfs_spec.rb @@ -1,4 +1,5 @@ require 'serverspec' +require 'json' # Required by serverspec set :backend, :exec @@ -21,4 +22,37 @@ describe 'IPFS' do expect(service('ipfs')).to be_running expect(service('ipfs')).to be_enabled end + + addr_filters = <<-EOF +[ + "/ip4/10.0.0.0/ipcidr/8", + "/ip4/100.64.0.0/ipcidr/10", + "/ip4/169.254.0.0/ipcidr/16", + "/ip4/172.16.0.0/ipcidr/12", + "/ip4/192.0.0.0/ipcidr/24", + "/ip4/192.0.0.0/ipcidr/29", + "/ip4/192.0.0.8/ipcidr/32", + "/ip4/192.0.0.170/ipcidr/32", + "/ip4/192.0.0.171/ipcidr/32", + "/ip4/192.0.2.0/ipcidr/24", + "/ip4/192.168.0.0/ipcidr/16", + "/ip4/198.18.0.0/ipcidr/15", + "/ip4/198.51.100.0/ipcidr/24", + "/ip4/203.0.113.0/ipcidr/24", + "/ip4/240.0.0.0/ipcidr/4" +] +EOF + + { + "Swarm.AddrFilters" => addr_filters.rstrip, + "Swarm.DisableBandwidthMetrics" => true, + "Swarm.DisableRelay" => true, + "Swarm.ConnMgr.HighWater" => 10, + "Swarm.ConnMgr.LowWater" => 1, + }.each do |k, v| + describe command("IPFS_PATH=/home/ipfs/.ipfs ipfs config '#{k}'") do + let(:sudo_options) { '-u ipfs -i' } + its(:stdout) { should eq "#{v}\n" } + end + end end