generated from the-liberated-edge/wikijs
adds docu on getting started and contributing
This commit is contained in:
parent
280eced725
commit
3787c67f39
223
README.md
223
README.md
@ -1,3 +1,222 @@
|
||||
# Ansible Collection - theliberatededge.test_linux_containers
|
||||
# Overview
|
||||
|
||||
Documentation for the collection.
|
||||
The Ansible collection `theliberatededge.test_linux_containers`
|
||||
helps with automating various scenarios based on
|
||||
[Linux containers](https://linuxcontainers.org/).
|
||||
|
||||
# Getting started
|
||||
|
||||
This section describes the ways in which engineers could benefit from utilising
|
||||
the Ansible collection `theliberatededge.test_linux_containers`.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
1. You have access to a machine running a Linux distribution of your
|
||||
choice.
|
||||
2. [LXD](https://ubuntu.com/lxd) has been installed and initialised on this
|
||||
machine, so that containers can be launched. It will effectively be used as
|
||||
a container hypervisor.
|
||||
3. Your user has been granted permissions to manage Linux containers.
|
||||
4. Python 3 has been set up correctly on the machine.
|
||||
5. [Ansible](https://pypi.org/project/ansible/) has been installed.
|
||||
|
||||
# Install the Ansible collection theliberatededge.test_linux_containers
|
||||
|
||||
Install or update `theliberatededge.test_linux_containers` on your
|
||||
Linux machine using `ansible-galaxy`.
|
||||
|
||||
```
|
||||
ansible-galaxy collection install -U --force \
|
||||
git+https://git.theliberatededge.org/the-liberated-edge/test_linux_containers.git,i-1-test-linux-container
|
||||
```
|
||||
|
||||
## Run the launch_linux_container playbook
|
||||
|
||||
Substitute the missing variable valuess and run the playbook
|
||||
for launching Debian Bookworm linux containers.
|
||||
|
||||
Variables
|
||||
- `lte_container_name` stands for the desired container name that
|
||||
will be visible when running `lxc ls`.
|
||||
- `lte_container_root_pwd` is the password that will be set for
|
||||
the `root` user in the container named `lte_container_name`.
|
||||
|
||||
```
|
||||
LC_ALL=C.UTF-8 ansible-playbook \
|
||||
theliberatededge.test_linux_containers.launch_linux_container \
|
||||
-e "lte_container_name=<container name> lte_container_root_pwd=<password>"
|
||||
```
|
||||
|
||||
Once the playbook finishes execution, you should be able to
|
||||
connect to the newly launched container as user `root` via
|
||||
ssh.
|
||||
|
||||
## Include playbook or role from the collection
|
||||
|
||||
Reusing Ansible roles and playbooks is quite straight
|
||||
forward and follows the practices established by Ansible. Below
|
||||
you will find a sample playbook.
|
||||
|
||||
Similarly to executing the playbook via CLI, one needs to
|
||||
assign values to the missing variables.
|
||||
|
||||
```
|
||||
---
|
||||
- name: Launch Linux Container
|
||||
hosts: all
|
||||
gather_facts: false
|
||||
- name: imports and executes the playbook under test
|
||||
ansible.builtin.import_playbook:
|
||||
theliberatededge.test_linux_containers.launch_linux_container.yml
|
||||
vars:
|
||||
lte_debian_version: bookworm
|
||||
lte_container_name: <container name>
|
||||
lte_container_root_pwd: <password>
|
||||
```
|
||||
|
||||
# How to contribute
|
||||
|
||||
This section describes what you need to do in order to contribute to this
|
||||
project if you want to work on our code base. It is all about setting up your
|
||||
local development environment and the ways of working that we have
|
||||
established.
|
||||
|
||||
## Development workflow
|
||||
|
||||
Our team uses [Github flow](https://docs.github.com/en/get-started/quickstart/github-flow)
|
||||
to release changes.
|
||||
|
||||
## Definition of Done
|
||||
|
||||
We are a small team and for us squeezing and saving any second is key. This
|
||||
is the way we could manage better our scarce resources. Therefore, we have
|
||||
been experimenting with and adopting industry practices which help us
|
||||
do more with less.
|
||||
|
||||
Every change that we merge in the `main` branch complies to the following
|
||||
list of requirements or checklist.
|
||||
|
||||
1. Every change request is represented as a git pull request. Merging changes
|
||||
directly in the `main` branch is prohibited and guarded by a branch protection
|
||||
rule in our source control system.
|
||||
2. Every git pull request has been linked to exactly one project issue. The
|
||||
issue number prefixes the pull request title, e.g. `i-1 <issue title>`.
|
||||
3. The change has been thoroughly reviewed and all discovered issues have
|
||||
been resolved. Merging without a code review approval is only acceptable
|
||||
when reviewers are not available.
|
||||
4. The change has been tested by Ansible Molecule scenarios. Our team adopted
|
||||
an approach resembling Test Driven Development for the sake of automated
|
||||
regression testing and avoidance.
|
||||
5. All automated tests have been passing successfully consistently. We have
|
||||
zero tolerance on test flakiness.
|
||||
6. Source code has been linted with `yamllint` and `ansible-lint`. Any issues
|
||||
have been resolved.
|
||||
7. YAML documents have been formated with `yamlfix`.
|
||||
8. User facing changes have been documented appropriately.
|
||||
|
||||
## Development environment setup
|
||||
|
||||
### Prerequisites
|
||||
|
||||
Before you could set up your local development environment you will need to
|
||||
make sure that the list of prerequisites below has been satisfied.
|
||||
|
||||
1. You have access to a machine running a Linux distribution of your
|
||||
choice.
|
||||
2. [LXD](https://ubuntu.com/lxd) has been installed and initialised on this
|
||||
machine, so that containers can be launched. It will effectively be used as
|
||||
a container hypervisor.
|
||||
3. Your user has been granted permissions to manage Linux containers.
|
||||
4. Python 3 has been set up correctly on the machine.
|
||||
5. [Pipenv](https://github.com/pypa/pipenv) has been installed on the machine.
|
||||
6. [git](https://git-scm.com/) has been installed on the machine.
|
||||
|
||||
### Initialize collection project locally
|
||||
|
||||
All dependencies and dev dependencies will be installed in a Python 3 virtual
|
||||
environment, which will be activated for you.
|
||||
```
|
||||
git clone \
|
||||
https://git.theliberatededge.org/the-liberated-edge/test_linux_containers.git
|
||||
```
|
||||
|
||||
```
|
||||
cd test_linux_containers
|
||||
```
|
||||
|
||||
```
|
||||
pipenv install
|
||||
```
|
||||
|
||||
```
|
||||
pipenv install --dev
|
||||
```
|
||||
|
||||
```
|
||||
pipenv shell
|
||||
```
|
||||
|
||||
### Lint Ansible artifacts
|
||||
|
||||
Navigate to the root folder of the local copy of this git repository.
|
||||
|
||||
```
|
||||
cd test_linux_containers
|
||||
```
|
||||
|
||||
Lint all YAML documents.
|
||||
|
||||
```
|
||||
yamllint .
|
||||
```
|
||||
|
||||
Use `ansible-lint` to verify good practices relevant to Ansible.
|
||||
|
||||
```
|
||||
LC_ALL=C.UTF-8 ansible-lint .
|
||||
```
|
||||
|
||||
### YAML code formatting
|
||||
|
||||
Navigate to the root folder of the local copy of this git repository.
|
||||
|
||||
```
|
||||
cd test_linux_containers
|
||||
```
|
||||
|
||||
Format all YAML documents.
|
||||
|
||||
```
|
||||
yamlfix .
|
||||
```
|
||||
|
||||
### Execute Ansible Molecule scenarios
|
||||
|
||||
In order to run all existing Ansible Molecule scenarios, one needs to
|
||||
follow the steps below.
|
||||
|
||||
Navigate to the root folder of the local copy of this git repository.
|
||||
|
||||
```
|
||||
cd test_linux_containers
|
||||
```
|
||||
|
||||
Install locally a snapshot version of `theliberatededge.test_linux_containers`
|
||||
that will be used as the foundation for automated testing.
|
||||
|
||||
```
|
||||
LC_ALL=C.UTF-8 ansible-galaxy install -r requirements-test.yml --force
|
||||
```
|
||||
|
||||
Execute all existing Ansible Molecule scenarios.
|
||||
|
||||
```
|
||||
cd extensions
|
||||
```
|
||||
|
||||
```
|
||||
LC_ALL=C.UTF-8 \
|
||||
LTE_CONTAINER_NAME=<container name> \
|
||||
LTE_CONTAINER_ROOT_PWD=<password> \
|
||||
molecule test --all
|
||||
```
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user