Gitea 28.1.0 -> 28.3.0 (skipping 28.2.0). Both are maintenance releases with no breaking changes and no app.ini changes. They carry a large set of security fixes: token scope enforcement across many API and web routes, OAuth2 ACCOUNT_LINKING=auto account takeover, review-triggered Actions workflows running with repository secrets, stored XSS via Actions artifact Content-Encoding, SSH certificate principal confusion, OpenID association CSRF, and several private-data leaks in feeds, profiles, project boards and issue timelines. Behavior changes to be aware of, none requiring a cookbook change: git maintenance now defaults to the gc strategy; profile pages treat token requests as anonymous and user/org RSS/Atom feeds require read:user or read:organization; the API rejects changes to issues, labels, milestones and releases of archived repositories; review-triggered workflows run on the pull request head; the gitea-vscode OAuth2 application is pre-registered; email validation is relaxed to what Go's mail.ParseAddress accepts. Gitea Actions runner 5.2.2 -> 5.2.4. No config.yaml changes were required. 5.2.4 fixes the v4 artifact API in exec mode so upload-artifact v4 and later work; 5.2.3 fixes the action header group, dry runs touching the Docker daemon, and damaged shared action cache trees. Checksums verified against the published binaries.
This repository contains all infrastructure automation code that we use to set up and configure servers, virtual machines, and applications for Kosmos hosted services.
Chef cookbooks are written in Ruby, and based on Chef Infra resources. Some cookbooks contain integration test suites based on Test Kitchen.
Note: Manual configuration of servers and applications is highly discouraged, and can be overwritten or lost without notice!
Setup
Install Chef Workstation
- macOS, Windows, RHEL, Ubuntu: https://docs.chef.io/workstation/install_workstation/
- Arch Linux: https://aur.archlinux.org/packages/chef-workstation
rbenv
If you use rbenv to manage Ruby versions on your system, install the rbenv-chef-workstation plugin.
Install gem dependencies
Clone this repository, cd into it, and run:
bundle install
Common tasks
Bootstrap a new host server
knife zero bootstrap root@server-name.kosmos.org --run-list "role[base],role[kvm_host]" --secret-file .chef/encrypted_data_bag_secret
Bootstrap a new VM
knife zero bootstrap ubuntu@zerotier-ip-address -x ubuntu --sudo --run-list "role[base],role[kvm_guest]" --secret-file .chef/encrypted_data_bag_secret
Bootstrap a new VM with environment and role/app (postgres replica as example)
knife zero bootstrap ubuntu@10.1.1.134 -x ubuntu --sudo --environment production --run-list "role[base],role[kvm_guest],role[postgresql_replica]" --secret-file .chef/encrypted_data_bag_secret
Run Chef Zero on a host server
knife zero converge -p2222 name:server-name.kosmos.org
Run Chef Zero on a VM
knife zero converge -a knife_zero.host name:vm-name-23
Update Chef Client on a server:
knife zero converge name:dev.kosmos.org --client-version 15.3.14
Upgrade Chef Client on a node:
knife ssh -a knife_zero.host 'name:foo-1' 'curl -L https://chef.io/chef/install.sh | sudo bash -s -- -v 18.10.17'
Managing cookbooks
Cookbooks are managed via Berkshelf. Run berks --help for command help.
Install cookbooks listed in Berksfile:
berks install
Vendor installed cookbooks to the cookbooks/ dir:
berks vendor cookbooks/ --delete
"Expired" TLS certificates
If you encounter expired TLS certificates during a Chef run (e.g. for remote files), the issue is likely that the certificate has been issued by Let's Encrypt and Chef is still using its own, outdated CA cert store (see here for example).
As a hotfix, you can manually remove the "DST Root CA X3" cert from
/opt/chef/embedded/ssl/cert.pem on the machine you're trying to converge.