Page MenuHomePhabricator

Fix Pontoon to bootstrap from Bookworm and Puppetserver
Closed, ResolvedPublic

Description

The bootstrap/quickstart instructions for Ponton at https://wikitech.wikimedia.org/wiki/Puppet/Pontoon mention grabbing a Buster host, which isn't going to work anymore.

Pontoon should instead bootstrap and work from a Bookworm host, making use of a self-hosted puppetserver

The development branch for this work is sandbox/filippo/pontoon-puppetserver and now contains a modules/pontoon/README.md with instructions to get started.

Note that I've taken this occasion to also rethink/rework how Pontoon user interactions happen: pontoonctl is a new interface to handle interacting with your Pontoon stack

Event Timeline

Change 985125 had a related patch set uploaded (by Filippo Giunchedi; author: Filippo Giunchedi):

[operations/puppet@production] pontoon: copy post-receive hook from puppetmaster

https://gerrit.wikimedia.org/r/985125

Change 985125 merged by Filippo Giunchedi:

[operations/puppet@production] pontoon: copy post-receive hook from puppetmaster

https://gerrit.wikimedia.org/r/985125

I have made some progress on getting puppetserver::pontoon to be a thing.

Things mostly work, however for a successful bootstrap I have made the following changes:

  • The puppetserver CA is used to issue certificates (as opposed to PKI) and to bootstrap pki.discovery.wmnet I'm using SANs on the multirootca host. Therefore I have changes to set the CA name to a well known name (as opposed to defaulting to the puppetserver fqdn) and allow_san option
  • puppetdb cert key at the moment allows only secret() calls, whereas in Pontoon the key might be found on the server filesystem. For this I've implemented an approach similar to what we're doing in pki where content/source for the key can come either from secret() or the filesystem

Change 1002384 had a related patch set uploaded (by Filippo Giunchedi; author: Filippo Giunchedi):

[operations/puppet@production] multirootca: depend on cfssl when generating CRLs

https://gerrit.wikimedia.org/r/1002384

Change 1002385 had a related patch set uploaded (by Filippo Giunchedi; author: Filippo Giunchedi):

[operations/puppet@production] puppetserver: add Puppet CA custom name and SANs

https://gerrit.wikimedia.org/r/1002385

Change 1002386 had a related patch set uploaded (by Filippo Giunchedi; author: Filippo Giunchedi):

[operations/puppet@production] puppetdb: allow both secret() and source for site key material

https://gerrit.wikimedia.org/r/1002386

Change 1002387 had a related patch set uploaded (by Filippo Giunchedi; author: Filippo Giunchedi):

[operations/puppet@production] postgresql: install configuration before starting the server

https://gerrit.wikimedia.org/r/1002387

Change 1002388 had a related patch set uploaded (by Filippo Giunchedi; author: Filippo Giunchedi):

[operations/puppet@production] postgresql: use 'systemd reload' for pgreload

https://gerrit.wikimedia.org/r/1002388

Change 1002384 merged by Filippo Giunchedi:

[operations/puppet@production] multirootca: depend on cfssl when generating CRLs

https://gerrit.wikimedia.org/r/1002384

Change 1002388 merged by Filippo Giunchedi:

[operations/puppet@production] postgresql: use 'systemd reload' for pgreload

https://gerrit.wikimedia.org/r/1002388

Change 1002385 merged by Filippo Giunchedi:

[operations/puppet@production] puppetserver: add Puppet CA custom name and SANs

https://gerrit.wikimedia.org/r/1002385

Mentioned in SAL (#wikimedia-operations) [2024-02-13T14:18:26Z] <godog> bounce puppetserver on puppetserver1003 to test noop config change - T352640

Change 1002386 merged by Filippo Giunchedi:

[operations/puppet@production] puppetdb: allow both secret() and source for site key material

https://gerrit.wikimedia.org/r/1002386

Change #1002387 merged by Filippo Giunchedi:

[operations/puppet@production] postgresql: install configuration before starting the server

https://gerrit.wikimedia.org/r/1002387

For the folks subscribed to this task and interested in beta-testing, please see sandbox/filippo/pontoon-puppetserver branch and its README.md: https://gerrit.wikimedia.org/r/plugins/gitiles/operations/puppet/+/refs/heads/sandbox/filippo/pontoon-puppetserver/modules/pontoon/

The branch is to be considered in active development, i.e. git push -f to it can and will happen!

Please do reach out here or elsewhere with any feedback/ideas/etc

This is effectively done, what's left to do on my end is put sandbox/filippo/pontoon-puppetserver branch for review and get it merged, which I'll do in July when I'm back from vacation

Change #1052730 had a related patch set uploaded (by Filippo Giunchedi; author: Filippo Giunchedi):

[operations/puppet@production] pontoon: support puppet 7 / puppetserver and openstack API

https://gerrit.wikimedia.org/r/1052730

Change #1052731 had a related patch set uploaded (by Filippo Giunchedi; author: Filippo Giunchedi):

[operations/puppet@production] pontoon: add frontend proxy capability to LB

https://gerrit.wikimedia.org/r/1052731

Change #1052730 merged by Filippo Giunchedi:

[operations/puppet@production] pontoon: support puppet 7 / puppetserver and openstack API

https://gerrit.wikimedia.org/r/1052730

Change #1052731 merged by Filippo Giunchedi:

[operations/puppet@production] pontoon: add frontend proxy capability to LB

https://gerrit.wikimedia.org/r/1052731

Change #1052966 had a related patch set uploaded (by Filippo Giunchedi; author: Filippo Giunchedi):

[operations/puppet@production] pontoon: remove note re: sandbox/ branch

https://gerrit.wikimedia.org/r/1052966

Change #1052966 merged by Filippo Giunchedi:

[operations/puppet@production] pontoon: remove note re: sandbox/ branch

https://gerrit.wikimedia.org/r/1052966

fgiunchedi claimed this task.

Calling this done, Pontoon now supports Puppet 7 (puppetserver) and I've updated the wikitech documentation