16384 Commits

Author SHA1 Message Date
Ian Wienand
10f5a23e4b zuul-web: fix zuul.openstack.org location match
In I4e5f803b9d4fb6c2351cf151a085b93a7fd20f60 I put the wrong thing in
the zuul.openstack.org config; for that site we want to cache
/api/status; not the tenant path.

Change-Id: Iffbd870aeff496b9c259206f866af3a90a4349db
2020-09-15 08:34:10 +10:00
Ian Wienand
8a2289f70a zuul-web: rework caching
mod_mem_cache was removed in Apache 2.4 so all the bits of
configuration gated by the IfModule are currently irrelevant.

The replacement is socache, the in-memory version is "shmcb" (can also
hook up to memcache, etc.).  Enable the socache module, and switch the
cache matching parts to use socache and then fall-back to disk cache
(this is what it says this will do in the manual [1])

The other part of this is to turn the CacheQuickHandler off.  The
manual says about this [2]

  In the default enabled configuration, the cache operates within the
  quick handler phase. This phase short circuits the majority of
  server processing, and represents the most performant mode of
  operation for a typical server. The cache bolts onto the front of
  the server, and the majority of server processing is avoided.

I won't claim to fully understand how our mod_rewrite rules and
mod_proxy all hang together with phases and what-not.  But emperically
with this turned on (default) we do not seem to get any caching on the
tenant status pages, and with it turned off we do.

I've deliberately removed IfModule gating as well.  This actually hid
the problem and made it much more difficult to diagnose; it is much
better if these directives just fail to start Apache if we do not have
the modules we expect to have.

[1] https://httpd.apache.org/docs/2.4/mod/mod_cache_socache.html
[2] https://httpd.apache.org/docs/2.4/mod/mod_cache.html#cachequickhandler

Change-Id: I4e5f803b9d4fb6c2351cf151a085b93a7fd20f60
2020-09-14 13:59:53 +10:00
Ian Wienand
0177b40618 zuul-web: move LogFormat combined-cache into config
These two values overwrite each other, move into common configuration.

The "cache-status" is a verbose string, so quote it.

Change-Id: I3cc4627de3d6a0de1adcfed6b424fc3ed0099245
2020-09-14 11:14:28 +10:00
Zuul
8c599a5bd0 Merge "Add ceph octopus mirrors" 2020-09-10 22:32:05 +00:00
Mohammed Naser
322afab352 Add ceph octopus mirrors
Change-Id: I8876b89088bf1530c99edd08f644efe03d2cf867
2020-09-10 21:31:16 +00:00
Clark Boylan
35c9783036 Use LocationMatch to cache zuul api statuses
We need a regex to match the url path for zuul statuses. Our existing
setup assumed this would work in a CacheEnable directive but it seems
that it does not. Move this into a LocationMatch which explicitly
supports regexes.

Change-Id: I9df06d2af31ce6550e537f4594640487cca1d735
2020-09-10 13:17:18 -07:00
Zuul
c3de2e8847 Merge "Improve logging and cache config for zuul web proxy" 2020-09-10 19:51:37 +00:00
Clark Boylan
9c68191ce8 Improve logging and cache config for zuul web proxy
We attempt to cache things served by zuul-web in our apache proxy. This
is to reduce the load on the zuul-web process which has to query
gearman, the sql database, and eventuall the zookeeper database to
produce its responses.

Things are currently operating slowly and it isn't clear if we're
caching properly. To check that better update our logging format to
record cache hits and misses. Also drop an unnecessary .* in the
CacheEnable url-strings for /static/ as it is unclear if the .* is
treated as a regex here.

Change-Id: Ib57c085fa15365b89b3276e037339dbeddb094e3
2020-09-10 11:41:08 -07:00
Zuul
728c7b701f Merge "Remove nodepool builder puppetry and nb03.openstack.org" 2020-09-10 18:33:58 +00:00
Zuul
c0d75862c4 Merge "Collect tox logs" 2020-09-10 01:18:54 +00:00
Zuul
e24878c068 Merge "tox: drop test-requirements.txt" 2020-09-10 01:18:52 +00:00
Clark Boylan
1ea83138ef Remove nodepool builder puppetry and nb03.openstack.org
This should only land after we've launched a new nb03.opendev.org
running with the new nodepool arm64 docker image. Once that happens and
we are happy with how it is running we  can safely stop managing the
existing nb03.openstack.org server with puppet.

Change-Id: I8d224f9775bd461b43a2631897babd9e351ab6ae
2020-09-09 15:09:43 -07:00
Zuul
d30861adb5 Merge "Add zuul-jobs-failures list" 2020-09-09 14:34:26 +00:00
Zuul
c4781984c9 Merge "run-base-post: fix ARA artifact link" 2020-09-09 03:09:34 +00:00
Zuul
0b2b8886bc Merge "Explain "why opendev" on opendev.org index page" 2020-09-08 22:56:29 +00:00
Zuul
dc1d14eab0 Merge "Add dev packages on arm64 for docker-compose installation" 2020-09-08 22:09:11 +00:00
Zuul
5830e04408 Merge "docs: Update some of sysadmin details" 2020-09-08 20:42:58 +00:00
Zuul
02f8fb0c85 Merge "Update README.rst" 2020-09-08 20:42:55 +00:00
Zuul
4e6fd221a8 Merge "launch: move old scripts out of top-level" 2020-09-08 20:42:52 +00:00
Zuul
de1394573a Merge "install-ansible: move install_modules.sh to puppet-setup-ansible" 2020-09-08 20:42:50 +00:00
Clark Boylan
3966bcdf4e Add dev packages on arm64 for docker-compose installation
We install docker-compose from pypi in order to get newer features
(particularly useful for gerrit). On x86 all the deps for this have
wheels and we don't need build deps but on arm64 wheels don't exist for
things like cffi. Add build-essential, python3-dev, libffi-dev, and
libssl-dev to ensure we can build the necessary deps to install
docker-compose on arm64.

Change-Id: Id9c61dc904d34d2f7cbe17c70ad736a9562bb923
2020-09-08 13:01:34 -07:00
Ian Wienand
e3fb7d2be0 docs: Update some of sysadmin details
Give a little more details on the current ci/cd setup; remove puppet
cruft.

Change-Id: I684df4459cf5940d70b89e4c05103f8a8352af87
2020-09-07 17:14:21 +10:00
Ian Wienand
642c6c2d88 Update README.rst
Update this to be more relevant to 2020

Change-Id: I6389fe292baf2f56d8b9dc6bb876e4ec4ed5e984
2020-09-07 17:09:36 +10:00
Clark Boylan
ebd9c4c59e Add nb03.opendev.org
This server is going to be our new arm64 nodepool-builder running on the
new arm64 docker images for nodepool.

Depends-On: https://review.opendev.org/750037
Change-Id: I3b46ff901eb92c7f09b79c22441c3f80bc6f9d15
2020-09-04 13:22:32 -07:00
Thierry Carrez
e793b45483 Explain "why opendev" on opendev.org index page
Update the contents for https://opendev.org/ default index page,
to be less of a transition explanation for existing OpenStack
infrastructure users, and more of an introduction for new users.

In particular:
- prominently display links to main opendev services
- explain what Opendev is and why we do it
- detail differences to expect from other development platforms

Change-Id: Idaefb41590df24e649a4fd5225cc1078f2903696
2020-09-03 15:13:49 +02:00
Zuul
cd4d940f64 Merge "puppet: don't run module install steps multiple times" 2020-09-03 02:02:33 +00:00
Ian Wienand
96dbd1a34e launch: move old scripts out of top-level
These don't make any sense in the top-level these days.

Once upon a time we used to use these as node scripts to bring up
testing nodes (I think).  The important thing is they're not used now.

Change-Id: Iffa6c6bee647f1a242e9e71241d829c813f2a3e7
2020-09-03 09:55:42 +10:00
Ian Wienand
b3c01b30b3 install-ansible: move install_modules.sh to puppet-setup-ansible
Modules are collected on bridge and then synchronized to remote hosts
where puppet is run.  This is done to ensure an atomic run of puppet
across affected hosts.

These modules are described in modules.env and cloned by
install_modules.sh.  Currently this is done in install-ansible, but
after some recent refactoring
(I3b1cea5a25974f56ea9202e252af7b8420f4adc9) the best home for it
appears to now be in puppet-setup-ansible; just before the script is
run.

Change-Id: I4b1d709d7037e2851d73be4bc7a202f52858ad4f
2020-09-03 09:28:16 +10:00
Ian Wienand
19ea4603f4 puppet: don't run module install steps multiple times
It turns out you can't use "run_once" with the "free" strategy in
Ansible.  It actually warns you about this, if you're looking in the
right place.

The existing run-puppet role calls two things with "run_once:", both
delegated to localhost -- cloning the ansible-role-puppet repo (so we
can include_role: puppet) and installing the puppet modules (via
install-ansible-roles role), which are copied from bridge to the
remote side and run by ansible-role-puppet.

With remote_puppet_else.yaml we are running all the puppet hosts at
once with the "free" strategy.  This means that these two tasks, both
delegated to localhost (bridge) are actually running for every host.
install-ansible-roles does a git clone, and thus we often see one of
the clones bailing out with a git locking error, because the other
host is running similtaneously.
I8585a1af2dcc294c0e61fc45d9febb044e42151d tried to stop this with
"run_once:" -- but as noted because it's running under the "free"
strategy this is silently ignored.

To get around this, split out the two copying steps into a new role
"puppet-setup".  To maintain the namespace, the "run-puppet" module is
renamed to "puppet-run".  Before each call of (now) "puppet-run", make
sure we run "puppet-setup" just on localhost.

Remove the run_once and delegation on "install-ansible-roles"; because
this is now called from the playbook with localhost context.

Change-Id: I3b1cea5a25974f56ea9202e252af7b8420f4adc9
2020-09-03 09:23:05 +10:00
Zuul
d9e1e64497 Merge "Improved ask read-only message" 2020-09-02 13:26:56 +00:00
Zuul
f282b69801 Merge "Mirror Puppetlabs puppet for Ubuntu Focal" 2020-09-02 00:12:46 +00:00
Zuul
e824ea1caf Merge "Make ask.openstack.org read-only" 2020-09-01 22:11:01 +00:00
Clark Boylan
be802b319a Install older setuptools in puppet apply jobs
We create a virtualenv to install ansible in which then runs puppet for
us in our puppet apply jobs. This is pulling in setuptools 50 which then
fails due to the problems setuptools 50 has with older pythons. Address
this by pinning back to setuptools <50.

Change-Id: I02ea466319f7cd90f73972bf5a99876d14823ac1
2020-09-01 13:59:21 -07:00
Sorin Sbarnea
19457efb3c Add zuul-jobs-failures list
Add list to be used to monitor failures of periodic checking jobs.

Change-Id: I0df2bf01d7ddf290326f1d83cdb73bcc91cf81f7
2020-08-28 15:59:54 +01:00
Clark Boylan
c4d74d2536 Update the limestone cert in our clouds.yaml
Limestone has updated their self signed cert and in order to properly
verify it we need to update the cert material to check against itself.

Maybe we should confirm with logan- that the new cert material looks
correct before landing this just to be sure we're trusting the correct
thing.

Change-Id: Id528716aecb45ffb263850f697c5fb22db3b7969
2020-08-25 15:25:25 -07:00
Ian Wienand
c55a548e71 mirror02.regionone.linaro.us : add missing LE file
Change-Id: Ia052f85a92b8a52d7e1896c24ac54dd9eb1620e0
2020-08-25 16:39:11 +10:00
Ian Wienand
f343494d6c Add LE bits for mirror02.regionone.linaro-us.opendev.org
I forgot in I5b7106e2263010ff353e8a1de43e73b0c0ec57e1 this is a new
mirror, which needs the LE bits setup.

Change-Id: I3109573b2b03453049a265a829445f88f8a87557
2020-08-25 14:43:07 +10:00
Ian Wienand
139dd374ec letsencrypt test: fix email match
It seems acme.sh might have been rewriting this with quotes, and has
now stopped doing that.  Fix the match.

Change-Id: I3c363c498580b79a1a9ed07da6ed3ac72807383b
2020-08-25 14:42:54 +10:00
Ian Wienand
06c5fc8d4b Collect tox logs
Collect the tox logs from the testinfra run on bridge.openstack.org.
The dependent change helps if we have errors installing things into
tox, and this change lets us see the results.

Depends-On: https://review.opendev.org/747325
Change-Id: Id3c39d4287d7dc9705890c73a230b1935d349b9f
2020-08-25 08:41:49 +10:00
Ian Wienand
001ad4d7b1 tox: drop test-requirements.txt
We have several tox environments that don't really share the same
dependencies.  Currently we put everything into test-requirements.txt,
meaning the linter environment gets testinfra and testinfra
environment gets things like ansible-lint it's not using.

Apart from being a bit faster not installing things, this is helpful
for restoring the ansible -devel test.  In that case, we have ansible
as a project dependency; when installing from git, ansible now
installs itself as "ansible-base" ("ansible" is the released pypi
package that incorporates collections).  So if we install ansible-lint
in the testinfra environment, this pulls in ansible ... and then it
breaks when tox wants to install our Zuul clone of upstream ansible
(you can't have ansible and ansible-base together).

Change-Id: I5f3fc93e6ddd611f319fa269e122ed576c9cb378
2020-08-25 08:41:44 +10:00
Sorin Sbarnea
ef5645baa7 Improved ask read-only message
Makes the read-only message more detailed and includes hyperlinks.

Change-Id: I01f76949276962971246ce760c371e5bd010cb02
2020-08-24 08:24:07 +01:00
Ian Wienand
60522f90a2 Add linaro Focal mirror
This is an updated mirror we wish to switch to.

Change-Id: Id9eb82abf720e7c4ffa32337690d0d06a25750a6
2020-08-24 14:59:54 +10:00
Zuul
341340dde5 Merge "Run service-eavesdrop hourly" 2020-08-21 20:12:55 +00:00
Zuul
3c1869904b Merge "Convert ssh keys for ruby net-ssh if necessary" 2020-08-20 19:02:55 +00:00
Ian Wienand
6c32bc8bda run-base-post: fix ARA artifact link
Change-Id: Icf05947bbc3268402c2ee0bd62ff30d6cb7757e9
Depends-On: https://review.opendev.org/747100
2020-08-20 14:12:46 +10:00
Ian Wienand
4ea57feabb arm64 mirror : update to Focal
We have having constant issues with the bionic arm64 mirror shutting
itself off.  Before we go too far down the path of debugging what
appears to be a kernel oops issue, let's rebuild it as focal.

Update the sources list in the base.  Update the testing to use a
focal node.

Change-Id: I5b7106e2263010ff353e8a1de43e73b0c0ec57e1
2020-08-20 13:32:08 +10:00
Ian Wienand
c20b778cc1 Work around new ansible lint errors.
For the reasons inline.  Inspired by
I0fdd4a79b886d1c4875e748b08f99da809d9d767

Change-Id: I11f78ac0ede9a36e2c9e4abdc9763c0843028387
2020-08-20 12:55:46 +10:00
Clark Boylan
dff18bac1b Convert ssh keys for ruby net-ssh if necessary
In our beaker rspec testing we ssh into localhost pretending it is a
managed VM because that is how all the config management testing tools
want to work... This is has run into problems with new format ssh keys
which zuul provides. If such a key is present we convert it to PEM
othrewise we generate our own.

Also add ensure-virtualenv to the job as we appear to need it to run
these tests properly.

Change-Id: Ibb6080b5a321a6955866ef9b847c4d00da17f427
2020-08-19 16:28:08 -07:00
Zuul
4798390909 Merge "Gerrit image cleanups/fixes" 2020-08-17 22:40:25 +00:00
Jeremy Stanley
aa5623982f Switch Fedora mirror to mirrors.mit.edu
The pubmirror[12].math.uh.edu mirrors of Fedora 31 updates for
x86_64 have been sitting stale for several days with a corrupt
index, causing jobs which access our copy of this from our mirror
network to fail. Instead mirror Fedora releases/updates from
mirrors.mit.edu which seems to be updating just fine currently. We
can switch this back if/when the situation with the uh.edu mirrors
is resolved.

We're continuing to mirror EPEL and Fedora Atomic from
pubmirror[12].math.uh.edu for now, as we've had no reports of EPEL
problems on our mirrors (yet anyway), and it's hard to find any
other rsync mirrors of Atomic.

Change-Id: Iefd02602e2f2b39c4b72dc4d95ac62993ca65cdd
2020-08-17 18:47:35 +00:00