18328 Commits

Author SHA1 Message Date
Ian Wienand
ecc2e9a69f
letsencrypt: pin acme.sh to 3.0.5
We've been running against the dev branch of acme.sh since the initial
commit of the letsencrypt work -- at the time I feel like there were
things we needed that weren't in a release.  Anyway, there is now an
issue causing ECC certificates to be made and failing to renew [1]
which we can't work-around.

Pin this to the current release.  It would probably be good to pin
this to the "latest" release to avoid us forgetting to ever bump this
and ending up with even harder to debug bit-rot.

[1] https://github.com/acmesh-official/acme.sh/issues/4416

Change-Id: I0d07ba1b5ab77e07c67ad990e7bc78a9f90005a4
2022-11-29 13:11:51 +11:00
Zuul
f40c52b01a Merge "opendev.org: close <li> tag properly" 2022-11-22 20:20:59 +00:00
Zuul
b879e5fad7 Merge "Fork the maxking/docker-mailman images" 2022-11-22 18:11:24 +00:00
Zuul
b7b2157133 Merge "Add a mailman3 list server" 2022-11-22 18:00:30 +00:00
Ian Wienand
2afd126254
opendev.org: close <li> tag properly
Typo in Ic127ceb4abd2d89cd6155e8831145fa3b3705664

Change-Id: I9766cec96e126ac6f45717d1f93e6f429ff25467
2022-11-22 18:18:41 +11:00
Zuul
3dc6d8f612 Merge "opendev.org: add status update links" 2022-11-22 05:24:25 +00:00
Zuul
635373492b Merge "system-config-run-gitea: use standard bridge host" 2022-11-22 02:40:32 +00:00
Ian Wienand
9445fccb55
system-config-run-gitea: use standard bridge host
In what looks like a typo, we are overriding the bridge node for this
test to a bionic host.  Remove this.  This was detected by testing an
upgraded Ansible, which wouldn't install on the lower python on
Bionic.

Change-Id: Ie3e754598c6da1812e74afa914f50d91972012cd
2022-11-22 11:26:14 +11:00
Zuul
7ca1225df7 Merge "launch-node : make into a small package" 2022-11-21 23:19:40 +00:00
Zuul
be9db368af Merge "openafs: copy dkms log directory" 2022-11-21 21:12:41 +00:00
Zuul
37ff268a74 Merge "rax-dns-backup: fix parsing" 2022-11-21 20:46:58 +00:00
Zuul
c89ffc3d6f Merge "Switch python-builder/python-base to pip wheel" 2022-11-21 18:35:21 +00:00
Clark Boylan
12d4355385 Fork the maxking/docker-mailman images
These images have a number of issues we've identified and worked
around. The current iteration of this change is essentially
identical to upstream but with a minor tweak to allow the latest
mailman version, and adjusts the paths for hyperkitty and postorius
URLs to match those in the upstream mailman-web codebase, but
doesn't try to address the other items. However, we should consider
moving our fixes from ansible into the docker images where possible
and upstream those updates.

Unfortunately upstream hasn't been super responsive so far hence this
fork. For tracking purposes here are the issues/PRs we've already filed
upstream:

  https://github.com/maxking/docker-mailman/pull/552
  https://github.com/maxking/docker-mailman/issues/548
  https://github.com/maxking/docker-mailman/issues/549
  https://github.com/maxking/docker-mailman/issues/550

Change-Id: I3314037d46c2ef2086a06dea0321d9f8cdd35c73
2022-11-21 16:51:02 +00:00
Ian Wienand
ed7083ed88
launch-node : make into a small package
This turns launch-node into an installable package.  This is not meant
for distribution, we just encapsulate the installation in a virtualenv
on the bastion host.  Small updates to documentation and simple
testing are added (also remove some spaces to make test_bridge.py
consistent).

Change-Id: Ibcb4774114d73600753ca155ed277d775964bc79
2022-11-21 16:29:22 +11:00
Ian Wienand
7146cdebaf
rax-dns-backup: fix parsing
It looks like at some point the RAX bind output changed format
slightly, which messed up our backup script.  Rework it to parse the
current output.

This parsing is obviously a little fragile ... it is nice to have the
output sorted and lined up nicely (like our manually maintained
opendev.org bind files...).  If the format changes again and this
becomes a problem, maybe we switch to dumping the RAX output directly
and forget about formatting it nicely.

Change-Id: I742dd6ef9ffdb377274b384b847625c98dd5ff16
2022-11-21 11:44:07 +11:00
Zuul
95c9cf6ec6 Merge "Use prod_bastion group in gate bootstrap" 2022-11-21 00:12:42 +00:00
Zuul
83df65a252 Merge "bastion host: add global known_hosts values" 2022-11-20 23:48:27 +00:00
Ian Wienand
039aae5fa7
openafs: copy dkms log directory
Grab the make logs from the dkms directory.  This is helpful if the
modules are failing to build.

The /var/lib/dkms directory contains all the source and object files,
etc., which seems unnecessary to store in general.  Thus we just trim
this to the log directory.

Change-Id: I9b5abc9cf4cd59305470a04dda487dfdfd1b395a
2022-11-21 10:33:11 +11:00
Zuul
73b9cf4100 Merge "inventory: add host keys" 2022-11-20 22:41:01 +00:00
Ian Wienand
d03f4b1f22
bastion host: add global known_hosts values
Write out the ssh host keys from the inventory as part of the bastion
host bootstrap.

Change-Id: I0823c09165c445e9178c75ac5083f1988e8d3055
2022-11-19 11:18:07 +11:00
Ian Wienand
c887a0a7d9
Use prod_bastion group in gate bootstrap
This was missed in I137ab824b9a09ccb067b8d5f0bb2896192291883.

The called bootstrap playbook runs on prod_bastion[0], but we were
still calling the constructed gate group "bastion" (see note below on
what it's doing).

We don't notice because the multi-node setup is already making it so
the nodes can log into each other.  But it means we're not exercising
the root key addition role, which we should be doing in the gate.

Change-Id: I8238fc11a055c6d926b58df93c48a47121c0fde1
2022-11-18 16:26:17 +11:00
Ian Wienand
618708b42a
inventory: add host keys
Add the host keys to the inventory.  This will allow us to populate
the known_hosts on the bastion host from system-config

Change-Id: I4863425d5b784d0cdf118e1252414ca78fd24179
2022-11-18 12:55:39 +11:00
Clark Boylan
2e961b1af0 Cleanup force merging docs
At some point we shifted from doing this task using the web UI to
primarily using ssh only admin accounts. The docs ended up in a slightly
confusing place with steps that only make sense when you interact with
the web UI. Update the force merge docs to assume ssh only which is far
more aligned with our admin account expectations.

Change-Id: Ia99afe7ee10927765733891f72bd428e52fa2225
2022-11-16 14:50:11 -08:00
Zuul
72a64bf997 Merge "statusbot: add mastodon config options" 2022-11-16 01:29:45 +00:00
Zuul
94cb35a7f6 Merge "Update Gerrit images to 3.5.4 and 3.6.3" 2022-11-16 01:29:42 +00:00
Ian Wienand
56cd4268df
opendev.org: add status update links
This adds links to @opendevinfra; the Mastodon one allows us to have a
"green" certified link to opendev.org in our Mastodon profile.

Change-Id: Ic127ceb4abd2d89cd6155e8831145fa3b3705664
2022-11-16 11:21:19 +11:00
Ian Wienand
cfdbec4b16
statusbot: add mastodon config options
The dependent change allows us to also post to mastodon.  Configure
this to point to fosstodon where we have an opendevinfra account.

Change-Id: Iafa8074a439315f3db74b6372c1c3181a159a474
Depends-On: https://review.opendev.org/c/opendev/statusbot/+/864586
2022-11-16 11:02:07 +11:00
Zuul
f468ee07e2 Merge "gerrit-build: jammy updates: update to nodejs 18.x, allow submodule clones" 2022-11-15 20:13:12 +00:00
Zuul
b0ea6c601e Merge "etherpad: redirect container logs" 2022-11-15 19:35:25 +00:00
Clark Boylan
c1c91886b4 Add a mailman3 list server
This should now be a largely functional deployment of mailman 3. There
are still some bits that need testing but we'll use followup changes to
force failure and hold nodes.

This deployment of mailman3 uses upstream docker container images. We
currently hack up uids and gids to accomodate that. We also hack up the
settings file and bind mount it over the upstream file in order to use
host networking. We override the hyperkitty index type to xapian. All
list domains are hosted in a single installation and we use native
vhosting to handle that.

We'll deploy this to a new server and migrate one mailing list domain at
a time. This will allow us to start with lists.opendev.org and test
things like dmarc settings before expanding to the remaining lists.

A migration script is also included, which has seen extensive
testing on held nodes for importing copies of the production data
sets.

Change-Id: Ic9bf5cfaf0b87c100a6ce003a6645010a7b50358
2022-11-11 23:20:19 +00:00
Zuul
d4731aa9c4 Merge "Ignore bashate E010" 2022-11-11 15:15:15 +00:00
Ian Wienand
9c76ebf4af
Update a few s/bridge01/bridge99 references
These were foregotten in I137ab824b9a09ccb067b8d5f0bb2896192291883
when we switched the testing bridge host to bridge99.

Change-Id: I742965c61ed00be05f1daea2d6110413cff99e2a
2022-11-11 15:05:39 +11:00
Clark Boylan
5e8d704278
Update Gerrit images to 3.5.4 and 3.6.3
Gerrit made new releases and we should update to them. Release notes can
be found here:

  https://www.gerritcodereview.com/3.5.html#354
  https://www.gerritcodereview.com/3.6.html#363

The main improvement for us is likely to be the copy approvals
performance boosts and error handling. We still need to run that prior
to our 3.6 upgrade.

Note we currently only run 3.5 in production but we test the 3.6 upgrade
from our current production version so it makes sense to update the 3.6
image as well.

Change-Id: Idf9a16b443907a2d0c19c1b6ec016f5d16583ad2
2022-11-11 13:20:36 +11:00
Ian Wienand
c78e410373
gerrit-build: jammy updates: update to nodejs 18.x, allow submodule clones
It seems there's no jammy repositories for nodejs 10.x.  Upstream
reccommends "at least" LTS v16 -- the current LTS is 18 so let's try
that.

Also update the git config to allow the submodule clones per the
recent CVE's.

[1] https://gerrit.googlesource.com/gerrit/+/master/polygerrit-ui/README.md#installing-node_js-and-npm-packages

Change-Id: I1492e4c136c18155eb3cb7fed24b413b250c78b5
2022-11-11 12:50:51 +11:00
Zuul
2cd574c16f Merge "Cleanup uwsgi build hacks" 2022-11-10 17:32:29 +00:00
James E. Blair
a7026aba8a Add ssl support to zookeeper-statsd and fix latency handling
This adds optional SSL support to zookeeper-statsd.  This could
come in handy if we ever decide to turn off the plaintext
localhost-only port.

This also corrects the type handling for the latency value, which
can be a floating point.

Change-Id: Id39fc8bd924eda528723c40d2e7e24993a60d6a5
2022-11-09 13:44:28 -08:00
Zuul
2c72c8b9e3 Merge "Add summit-track-chairs ML in place of old name" 2022-11-09 21:04:27 +00:00
Zuul
b9a5cebd09 Merge "Remove bridge.openstack.org" 2022-11-09 20:35:23 +00:00
Zuul
34f27b9000 Merge "zuul reboot: pin to bridge01.opendev.org" 2022-11-09 20:35:21 +00:00
Jeremy Stanley
b6d09d3bd9 Add summit-track-chairs ML in place of old name
The OpenInfra Summit organizers have decided they're going back to
using the term "track chairs" instead of "programming committee" and
would like to switch to a new mailing list name in order to
coordinate things for the upcoming conference. Remove the old list
from our configuration when adding the new one, and set up a
forwarding alias for the old list's address so that replies to
previous messages will end up in the right place.

Change-Id: I8060b78b74f66dd8eb95d83659cc92b3186f573e
2022-11-09 20:01:46 +00:00
Clark Boylan
521df0eda0 Switch python-builder/python-base to pip wheel
A recent change in pip wheel cache behavior had upstream pip indicating
that we really should be using pip wheel instead. The reason we weren't
using pip wheel appears to be that we wanted to infer what top level
wheel to install via contents of a dir separate from our wheel output
dir/wheel cache. Using pip wheel implies everything gets flattened into
one location. We deal with this by having the build tool write all of
the top level wheels we care about into a separate location. Later we
can install all of the top level wheels while pointing find links at the
larger set of deps in the dir created by pip wheel.

Change-Id: Id9c674c1ec6fe5e72534549082e3adda9e286fd5
2022-11-09 09:10:18 -08:00
Clark Boylan
4884d3b858 Cleanup uwsgi build hacks
The recent uwsgi 2.0.21 release claims to have fixed issues building
uwsgi that required us to increase pip verbosity and reduce concurrency.
Remove those hacky workarounds in order to simplify our image.

Change-Id: I8b81bc3a5e6977ba8cd296708f356bc6db030fc2
2022-11-09 09:09:10 -08:00
Ian Wienand
535757551c
etherpad: redirect container logs
Redirect etherpad container logs via rsyslogd to /var/log/containers,
which is rotated by default.  This avoids some issues we've seen with
the journal becoming too big.

Change-Id: Id557b9265e30acdb2ca09631dbedf034f85a700f
2022-11-09 07:46:15 +11:00
Zuul
3b60679d6b Merge "Reference bastion through prod_bastion group" 2022-11-07 22:03:17 +00:00
Zuul
b78dc08f69 Merge "run-production-bootstrap-bridge: use add-bastion-host" 2022-11-06 23:12:32 +00:00
Zuul
a38b0bfd33 Merge "Revert "Update to tip of master in periodic jobs"" 2022-11-06 23:12:30 +00:00
Zuul
81664d7e94 Merge "cloud-launcher: use venv with openstacksdk installed" 2022-11-06 21:24:13 +00:00
Zuul
6117de7f3c Merge "edit-secrets: configure gpg-agent/emacs" 2022-11-04 06:26:12 +00:00
Ian Wienand
bda420d801
zuul reboot: pin to bridge01.opendev.org
This job is special in that we want it to install only on the
production bastion host.  Pin it directly to the current host, and
leave a note about changing it when the bridge node is updated.

Change-Id: I15303daedef62d3002f0126c7782c59cc6ad2a8e
2022-11-04 09:33:15 +11:00
Ian Wienand
0c90c128d7
Reference bastion through prod_bastion group
In thinking harder about the bootstrap process, it struck me that the
"bastion" group we have is two separate ideas that become a bit
confusing because they share a name.

We have the testing and production paths that need to find a single
bridge node so they can run their nested Ansible.  We've recently
merged changes to the setup playbooks to not hard-code the bridge node
and they now use groups["bastion"][0] to find the bastion host -- but
this group is actually orthogonal to the group of the same name
defined in inventory/service/groups.yaml.

The testing and production paths are running on the executor, and, as
mentioned, need to know the bridge node to log into.  For the testing
path this is happening via the group created in the job definition
from zuul.d/system-config-run.yaml.  For the production jobs, this
group is populated via the add-bastion-host role which dynamically
adds the bridge host and group.

Only the *nested* Ansible running on the bastion host reads
s-c:inventory/service/groups.yaml.  None of the nested-ansible
playbooks need to target only the currently active bastion host.  For
example, we can define as many bridge nodes as we like in the
inventory and run service-bridge.yaml against them.  It won't matter
because the production jobs know the host that is the currently active
bridge as described above.

So, instead of using the same group name in two contexts, rename the
testing/production group "prod_bastion".  groups["prod_bastion"][0]
will be the host that the testing/production jobs use as the bastion
host -- references are updated in this change (i.e. the two places
this group is defined -- the group name in the system-config-run jobs,
and add-bastion-host for production).

We then can return the "bastion" group match to bridge*.opendev.org in
inventory/service/groups.yaml.

This fixes a bootstrapping problem -- if you launch, say,
bridge03.opendev.org the launch node script will now apply the
base.yaml playbook against it, and correctly apply all variables from
the "bastion" group which now matches this new host.  This is what we
want to ensure, e.g. the zuul user and keys are correctly populated.

The other thing we can do here is change the testing path
"prod_bastion" hostname to "bridge99.opendev.org".  By doing this we
ensure we're not hard-coding for the production bridge host in any way
(since if both testing and production are called bridge01.opendev.org
we can hide problems).  This is a big advantage when we want to rotate
the production bridge host, as we can be certain there's no hidden
dependencies.

Change-Id: I137ab824b9a09ccb067b8d5f0bb2896192291883
2022-11-04 09:18:35 +11:00