To provide infrastructure for the Adoptium farm that is:
- Secure - Infrastructure is private by default and access is granted in a time and access control limited manner.
- Consistent - Infrastructure is consistent in order to produce consistent AdoptOpenJDK binaries.
- Repeatable - Infrastructure can be reproduced by our infrastructure as code. We embrace the Chaos Monkey.
- Auditable - What each host/platform is made up of is publicly accessible infrastructure as code.
The end result should be immutable hosts, which can be destroyed and reproduced from Ansible playbooks. See our Contribution Guidelines on how we implement these goals.
Can we Chaos Monkey it
See our current Chaos Monkey Status.
- secrets - A private repo containing encrypted secrets.
- openjdk-jenkins-helper - A repo containing helper scripts for out Jenkins CI.
- hosts - Our inventory, visualized.
- Ansible at AdoptOpenJDK - Our hosts are built using Ansible Playbooks.
Please visit our
#infrastructure Slack Channel and say hello.
Please read our Contribution
submitting Pull Requests.
We list administrative members and their organisation affiliation for maximum transparency. Want to add a new member? Please follow our Onboarding Process. If you want access for yourself, raise an issue in this repository for the team to consider it - if you are working on an issue here we will generally be happy to add you to the triage team.
* Indicates access to the secrets repo
Members of this team that holds super user access to our machines to perform maintenance
- @karianna - Martijn Verburg (Microsoft) - *
- @gdams - George Adams (Microsoft) - *
- @johnoliver - John Oliver (Microsoft / LJC) - *
- @sxa - Stewart X Addison (Red Hat) - *
- @willsparker - Will Parker (Red Hat)
- @Haroon-Khel - Haroon Khel (Red Hat)
- @aahlenst - Andreas Ahlenstorf (ZHAW)
- @steelhead31 - Scott Fryer (Red Hat)
The primary infrastructure team who manage issues and PRs in this
repository. People in this team are committers and able to merge pull requests
in this repository. In general if you need assistance from a committer,
please post a message into the
#infrastructure slack channel where one of
the committers should be able to help rather than attempting to contact
This team is the starting point for new members.
People in this team can take ownership of issues but do not have the privileges to merge pull requests. In general new people in the team will go into this group for a while before being granted additional access.
The Adoptium project is proud to receive contributions from many companies, both in the form of monetary contributions in exchange for membership or in-kind contributions for required resources. The Infrastructure collaborates with the following companies who contribute various kinds of cloud and physical hardware to the Adoptium project.
Most information about our machines can be found at Inventory This file is important not only as a reference for the team, but is used by AWX which we often use to deploy ansible playbooks so it is important that it is kept up to date
Maintenance Window Schedule
We will aim to perform routine maintenance on the first Tuesday of each month, generally between 1000-1200 (UTC). This will be announced in the infrastructure channel on slack on the day prior to the maintenance. This timing should typically avoid coinciding with release work, although if a release in the previous month is ongoing then the window can be delayed til the following Tuesday.
Jenkins and it's plugins will be updated to the latest LTS every month. Other services such as Bastillion, AWX, and Nagios will be updated as required on a quarterly basis (On the first month of each quarter) during the same window if required for security reasons. In some cases we may wish to do an out-of-bound patch if a sufficientl sever issue is identified.
Standard Action Items
- Ensure off-machine backups are working!
- Check for plugin updates that will apply to the current version of jenkins (Each plugin should be checked for potential issues in the readme)
- Repeat step 1 if necessary until jenkins does not offer any more plugins
- Identify new LTS level - check the release notes to identify any potential problems. Allow jenkins to upgrade itself
- Redo step 1/2 so that any plugins that were unable to be updated due to the older jenkins level can update themselves.
- If necessary, and the remediation cannot be performed within the window, identify potentially risky plugins that were held back and create an issue to deal with them in the next cycle.
(TODO: Publish and link to video of an upgrade session)
These are taken on a daily basis, and one per month is currently kept "forever" on our backup server. Details are now in a separate document
OS Patch Management
- Nagios is configured to monitor each system and report on the status of OS patches required so we can identify if any system is not self-updating
- Non-infrastructure systems are configured by ansible to automatically apply all patches. (Sundays at 5am local host time) where possible
- Infrastructure systems are configured to automatically apply security patches only. (Sundays at 5am local host time) This information is logged on the localhost: /var/log/apt-security-updates
- We do not currently schedule outages to reboot to pick up new kernels.