# Developer Guide **This guide is under heavy development and just drafted, expect frequent changes and check back every now and then** This guide contains information to develop and roll out the configuration management and system deployment of RHEL-8.
*PSI RHEL-8* heavily relies on the Ansible automation technology for configuration management and automation. Mandatory information is available at * https://docs.ansible.com/ansible/latest/index.html * https://docs.ansible.com/ansible/latest/user_guide/index.html * https://docs.ansible.com/ansible/latest/user_guide/quickstart.html ## Main code PSI RHEL-8 configuration management consists of mainly two things * [RHEL-8 PSI Defaults](https://git.psi.ch/linux/engineering/ansible/inventories/rhel-8-psi-defaults) Ansible Inventory * [RHEL-8 Ansible Collection](https://git.psi.ch/linux/engineering/ansible/collections/rhel-8) The supplemental PSI Ansible Roles, which are referrenced from the *RHEL-8 Ansible Collection* are developed in * [PSI Ansible Roles](https://git.psi.ch/linux/engineering/ansible/roles) Addition group/section inventories are managed in * [PSI Ansible Inventories](https://git.psi.ch/linux/engineering/ansible/inventories) ## Adding my code Depending on where your code changes are happening (see section [Main code](#main-code)) you need to follow the following process: 1. Create a branch for what you are doing eg. *feature/my-new-feature* or *fix/problem-xyz-solved* 2. Do your work and commit and push your branch 3. Create a merge request and fill in a human understandable description 4. Motivate other maintainers to approve your changes and get the code merged ## Using Vagrant to develop Ansible code [Vagrant](https://vagrantup.com/intro) is a tool for building and managing virtual machine environments in a single workflow. With an easy-to-use workflow and focus on automation, Vagrant lowers development environment setup time, increases production parity, and makes the "works on my machine" excuse a relic of the past. Documentation * https://www.vagrantup.com/docs * https://www.vagrantup.com/intro/getting-started [PSI Ansible Vagrant](https://git.psi.ch/linux/engineering/ansible/vagrant) is a preconfigured environment allowing an easy and fast development of PSI related Ansible based configuration mangement. System requirements are either Virtualbox on Linux/Windows or Mac or libvirt on Linux. ## Components and Functions The following software or solutions are chosen to provide RHEL-8 in compliance with the PSI Linux support policy | Component | Function | URL | | --- | --- | --- | | Red Hat Satellite 6 | system deployment, update and oversight | [satint.psi.ch](satint.psi.ch) | | Red Hat Ansible | configuration management | [docs.ansible.com](https://docs.ansible.com/ansible/latest/index.html) | | Red Hat Ansible Tower (AWX) | configuration management center | [rhel-8-awx.psi.ch](https://rhel-8-awx.psi.ch) | | Koji | RPM package building solution | (tbd..) | ## Tools and Functions The following tools are chosen for code and collaboration | Tool | Function | URL | | --- | --- | --- | | GitLab | Git code revision system and code collaboration | [git.psi.ch/linux/engineering/home](https://git.psi.ch/linux/engineering/home) | | Slack | instant messaging, ChatOps | [controls-ha.slack.com/rhel-8-maintainers](https://controls-ha.slack.com/archives/G0163S918CB) | | Zoom | video conferencing | [psich.zoom.us](https://psich.zoom.us/j/2970303190)