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 1/4] 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 From ae97c0d7392939723fff370434c548a899c8952c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Greg=20Kar=C3=A9kinian?= Date: Thu, 9 May 2019 19:29:38 +0200 Subject: [PATCH 2/4] Fix the linting errors --- attributes/default.rb | 10 +++++----- test/integration/default/serverspec/ipfs_spec.rb | 12 ++++++------ 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/attributes/default.rb b/attributes/default.rb index 02b77bd..cf69a8d 100644 --- a/attributes/default.rb +++ b/attributes/default.rb @@ -6,7 +6,7 @@ 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', + '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', @@ -24,12 +24,12 @@ node.default['ipfs']['config'] = { # 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, + 'Swarm.DisableBandwidthMetrics' => true, # Disable the p2p-circuit relay transport - "Swarm.DisableRelay" => true, + 'Swarm.DisableRelay' => true, # Number of connections that, when exceeded, will trigger a connection GC # operation - "Swarm.ConnMgr.HighWater" => 10, + 'Swarm.ConnMgr.HighWater' => 10, # Minimum number of connections to maintain - "Swarm.ConnMgr.LowWater" => 1 + 'Swarm.ConnMgr.LowWater' => 1, } diff --git a/test/integration/default/serverspec/ipfs_spec.rb b/test/integration/default/serverspec/ipfs_spec.rb index 7eb3d3f..dcc8ff3 100644 --- a/test/integration/default/serverspec/ipfs_spec.rb +++ b/test/integration/default/serverspec/ipfs_spec.rb @@ -41,14 +41,14 @@ describe 'IPFS' do "/ip4/203.0.113.0/ipcidr/24", "/ip4/240.0.0.0/ipcidr/4" ] -EOF + EOF { - "Swarm.AddrFilters" => addr_filters.rstrip, - "Swarm.DisableBandwidthMetrics" => true, - "Swarm.DisableRelay" => true, - "Swarm.ConnMgr.HighWater" => 10, - "Swarm.ConnMgr.LowWater" => 1, + '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' } From 01c2246454c530bd36de37f5729b85336b50b73f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Greg=20Kar=C3=A9kinian?= Date: Thu, 20 Jun 2019 18:22:57 +0200 Subject: [PATCH 3/4] Bump the cookbook version --- metadata.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metadata.rb b/metadata.rb index a8b7488..1ee7900 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.2.0' +version '0.3.0' supports %w(ubuntu debian) From cfa3435c40a013148f8c439f105f5b30453f053d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Greg=20Kar=C3=A9kinian?= Date: Thu, 20 Jun 2019 19:10:29 +0200 Subject: [PATCH 4/4] Fix the indentation of an EOF in the integration tests --- test/integration/default/serverspec/ipfs_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/integration/default/serverspec/ipfs_spec.rb b/test/integration/default/serverspec/ipfs_spec.rb index dcc8ff3..48cb2b4 100644 --- a/test/integration/default/serverspec/ipfs_spec.rb +++ b/test/integration/default/serverspec/ipfs_spec.rb @@ -41,7 +41,7 @@ describe 'IPFS' do "/ip4/203.0.113.0/ipcidr/24", "/ip4/240.0.0.0/ipcidr/4" ] - EOF + EOF { 'Swarm.AddrFilters' => addr_filters.rstrip,