diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 8a2971a5..f5f9c96b 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -2,7 +2,7 @@ pool: # self-hosted agent on Windows 10 1709 environment # includes newer Docker engine with LCOW enabled, new build of LCOW image # includes Ruby 2.5, Go 1.10, Node.js 10.10, hadolint - name: Default + name: Internal LCOW variables: COMPOSE_PROJECT_NAME: pupperware diff --git a/docker-compose.yml b/docker-compose.yml index cdb2ddce..d9b62a43 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -28,6 +28,7 @@ services: - puppet.internal postgres: + hostname: postgres.internal image: postgres:9.6 environment: - POSTGRES_PASSWORD=puppetdb @@ -51,7 +52,7 @@ services: - PUPPERWARE_ANALYTICS_ENABLED=${PUPPERWARE_ANALYTICS_ENABLED:-true} # This name is an FQDN so the short name puppet doesn't collide outside compose network - PUPPETSERVER_HOSTNAME=puppet.internal - - PUPPETDB_DATABASE_CONNECTION="//postgres.internal:5432/puppetdb" + - PUPPETDB_POSTGRES_HOSTNAME=postgres.internal - PUPPETDB_PASSWORD=puppetdb - PUPPETDB_USER=puppetdb ports: diff --git a/gem/lib/pupperware/spec_helper.rb b/gem/lib/pupperware/spec_helper.rb index b00baab1..95e0d636 100644 --- a/gem/lib/pupperware/spec_helper.rb +++ b/gem/lib/pupperware/spec_helper.rb @@ -137,6 +137,11 @@ def get_container_hostname(container) return fqdn || inspect_container(container, '{{.Config.Hostname}}') end + # this only works when a container has a single network + def get_container_ip(container) + inspect_container(container, '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}') + end + def emit_log(container) container_name = get_container_name(container) STDOUT.puts("#{'*' * 80}\nContainer logs for #{container_name} / #{container}\n#{'*' * 80}\n") @@ -240,6 +245,10 @@ def run_agent(agent_name, network, server = get_container_hostname(get_service_c # setting up a Windows TTY is difficult, so we don't # allocating a TTY will show container pull output on Linux, but that's not good for tests STDOUT.puts("running agent #{agent_name} in network #{network} against #{server}") + # NOTE: --add-host doesn't do anything in LCOW!! + # host_map = hosts.map { |k, v| "--add-host=\"#{k}:#{v}\"" }.join(' ') + # STDOUT.puts("adding hosts #{host_map} to agents /etc/hosts") unless host_map.nil? + # TODO: try puppet-agent instead of puppet-agent-alpine result = run_command("docker run --rm --network #{network} --name #{agent_name} --hostname #{agent_name} puppet/puppet-agent-alpine agent --verbose --onetime --no-daemonize --summarize --server #{server}") return result[:status].exitstatus end diff --git a/spec/examples/running_cluster.rb b/spec/examples/running_cluster.rb index ada64fc3..488ed703 100644 --- a/spec/examples/running_cluster.rb +++ b/spec/examples/running_cluster.rb @@ -33,7 +33,11 @@ end it 'should be able to run an agent' do - status = run_agent(@test_agent, 'pupperware_default') + # to workaround DNS resolution problems, add a /etc/hosts entry + puppetserver_container = get_service_container('puppet') + puppetserver_hostname = get_container_hostname(puppetserver_container) + # hosts = { puppetserver_hostname => get_container_ip(puppetserver_container) } + status = run_agent(@test_agent, 'pupperware_default', puppetserver_hostname) expect(status).to eq(0) end