You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
4 days ago | |
---|---|---|
inventory | 4 weeks ago | |
roles | 4 days ago | |
s3-migration | 2 months ago | |
vars | 1 week ago | |
.ansible-lint | 5 months ago | |
.gitignore | 2 months ago | |
LICENSE | 5 months ago | |
README.md | 4 months ago | |
ansible.cfg | 5 months ago | |
backup.yaml | 4 months ago | |
firewall.tf | 2 months ago | |
forgejo-prod.yaml | 5 months ago | |
forgejo-staging.yaml | 5 months ago | |
infra.yaml | 2 months ago | |
main.tf | 2 months ago | |
monitoring.yaml | 5 months ago | |
playbook.yaml | 4 months ago | |
requirements.yml | 5 months ago | |
s3-mig.tf | 2 months ago | |
s3-mig.yaml | 2 months ago | |
s3.yaml | 2 months ago | |
secrets.tfvars.example | 5 months ago | |
ssh.yaml | 2 months ago | |
staging.tf | 2 months ago | |
user_data.yml.tpl | 5 months ago | |
utils.tf | 2 months ago |
README.md
Forgejo DevOps
Automation to create/configure the infrastructure for all services related to forgejo.dev.
Setup (client/workstation)
- Install all dependencies:
- Create a Hetzner Cloud project
- Create an access token
- Add the SSH fingerprint to the project
- Copy
secrets.tfvars.example
tosecrets.tfvars
- Replace the dummy values with the real ones
- Copy
vars/smtp.yml.example
tovars/smtp.yml
- Replace the dummy values with the real ones
- Copy
vars/woodpecker.yml.example
tovars/woodpecker_staging.yml
andvars/woodpecker_production.yml
- Replace the dummy values with the real ones (values are only available after the manual creation of an OAuth2 app)
- Copy
vars/minio.yml.example
tovars/minio.yml
- Replace the dummy values with the real ones
- Copy
vars/backup.yml.example
tovars/backup.yml
- Replace the dummy values with the real ones
Terraform
Terraform is used to create the infrastructure (VMs) and run a basic provisioning script to install all dependencies for Ansible.
- To create the infrastructure, run:
$ terraform init
$ terraform plan -var-file="secrets.tfvars"
$ terraform apply -var-file="secrets.tfvars"
- To destroy the infrastructure, run:
$ terraform destroy -var-file="secrets.tfvars"
Ansible
Ansible is used to configure the VMs and create/configure all necessary services.
- To create/configure/update all services on the VMs, simply run:
$ export ANSIBLE_CONFIG=./ansible.cfg
$ ansible-galaxy install -r requirements.yml
$ ansible-playbook playbook.yml
Ansible Lint
- Installation:
$ pip3 install ansible-lint
- Usage:
$ ansible-lint --offline -p ./*.yml
Manual Steps
Unfortunately, there are currently some manual steps required to complete the initial configuration.
- Go to the webpage and finish the Forgejo installation including the creation of a
root
user.- Login as
root
+ change the profile picture.
- Login as
- Add an OAuth2 application for Woodpecker CI
- Register the tokens within the Woodpecker config and run the Ansible playbook again.
- Create the organisation
staging.forgejo.dev
/forgejo.dev
.- Set the correct profile picture.
- Create the
org
repository in the organisation.- Set the correct profile picture.
- Create user(s) and invite them to the organization.
License
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for more details.