Get Started [deprecated]#

Prerequisites#

  • Debian-based Linux (Debian or its derivatives, WSL, …)

  • python3 (>3.8)

  • python3-venv

  • python3-pip

  • python3-dev

  • git

  • direnv

  • make

  • docker

  • bash or zsh

Already on Debian?

sudo apt-get install python3 python3-dev python3-venv python3-pip git direnv make bash lsb-release

and follow the official guide to install Docker.

Configure direnv

Mind about hooking direnv to your prefered shell.

Setup workspace#

  • Clone the galaxie-forge project and place you terminal into the repository root directory:

git clone https://codeberg.org/RTNP/galaxie-forge.git
cd galaxie-forge
  • Install requirements:

echo
echo "--- Installation des paquets apt nécessaires"
sudo apt update 
sudo apt-get install python3 python3-dev python3-venv python3-pip git direnv make bash curl lsb-release unzip
echo "--- Branchement de direnv dans la configuration bash de l'utilisateur"
echo 'eval "$(direnv hook bash)"' >> ~/.bashrc
echo "--- Rechargement de la configuration bash de l'utilisateur"
source ~/.bashrc
  • Allow direnv to load/unload the workspace environment and build your local dependencies:

direnv allow
make prepare

Validate workspace#

  • Run the following commands:

which ansible

The outputs should give you a path like /absolute/path/to/your/clone/.direnv/...

CONGRATULATIONS

You are ready to work with the project.

Dépendances locales#

make prepare

Résolution locale#

Modifier votre fichier hosts en ajoutant les entrées suivantes :

  • 127.0.0.1   gitea.local.ici

  • 127.0.0.1   concourse.local.ici

Installation#

Pour déployer la stack complète, tapez la commande :

make up

Pour arrêter la stack complète.

make down

Cette commande arrête et supprime les containers docker.

Variables#

Le jeu de variables fournit respect le standard documenté d’Ansible. Le format utilisé est le YAML et les noms des variables sont le plus explicite possible.

Les variables sont imposées par un groupe ansible appelé file_generator Elles sont rassemblées dans le fichier ansible/group_vars/files_generator/main.yml

---
__data_dir: "{{ lookup('env', 'PWD') }}/data"
__root_dir: "{{ lookup('env', 'PWD') }}"
glxdev_root_dir: "{{ __root_dir | realpath }}"
glxdev_data_dir: "{{ __data_dir | realpath }}"
glxdev_gitea_dir: "{{ glxdev_data_dir }}/gitea"
glxdev_postgresql_dir: "{{ glxdev_data_dir }}/postgresql"
glxdev_concourse_dir: "{{ glxdev_data_dir }}/concourse"
glxdev_directories:
  - "{{ glxdev_data_dir }}"
  - "{{ glxdev_gitea_dir }}"
  - "{{ glxdev_postgresql_dir }}"
  - "{{ glxdev_concourse_dir }}"

glxdev_gitea_docker_compose_file: "{{ glxdev_root_dir }}/docker-compose-gitea.yml"
glxdev_postgresql_docker_compose_file: "{{ glxdev_root_dir }}/docker-compose-postgresql.yml"
glxdev_concourse_web_compose_file: "{{ glxdev_root_dir }}/docker-compose-concourse.yml"

glxdev_network_name: "glxdev"
glxdev_network_subnet: 172.26.0.0/24
glxdev_network_gateway: 172.26.0.1

# Pour la génération du certificat auto-signé utilisé par la registry
glxdev_domain_name: "local.ici"
glxdev_common_name: "gitea.{{ glxdev_domain_name }}"
glxdev_organization_name: "Galaxie"
glxdev_subject_alt_name:
  - "DNS:local.ici"

# Informations du gittea
glxdev_gitea_server_name: "gitea"
glxdev_gitea_image: "gitea/gitea:1.17.3"
glxdev_gitea_container_name: "{{ glxdev_gitea_server_name }}.{{ glxdev_domain_name }}"
glxdev_gitea_docker_network_ipv4_address: "172.26.0.42"
glxdev_gitea_web_port: "3000"
glxdev_gitea_ssh_port: "222"

# Informations du postgresql
glxdev_postgresql_server_name: "postgresql"
glxdev_postgresql_image: "codeberg.org/rtnp/postgresql-multi-databases:latest"
glxdev_postgresql_container_name: "{{ glxdev_postgresql_server_name }}.{{ glxdev_domain_name }}"
glxdev_postgresql_network_ipv4_address: "172.26.0.43"
glxdev_postgresql_port: "5432"
glxdev_postgresql_gitea_db: "gitea"
glxdev_postgresql_gitea_password: "gitea"
glxdev_postgresql_gitea_user: "gitea"
glxdev_postgresql_concourse_user: "concourse"
glxdev_postgresql_concourse_pass: "concourse"
glxdev_postgresql_concourse_db: "concourse"

# Informations de Concourse Web
glxdev_concourse_web_service_name: "concourse-web"
glxdev_concourse_web_container_name: "{{ glxdev_concourse_web_service_name }}.{{ glxdev_domain_name }}"
glxdev_concourse_image: "concourse/concourse"
glxdev_concourse_image_version: "7.9.0"
glxdev_concourse_web_host_port: "4042"
glxdev_concourse_web_network_ipv4_address: "172.26.0.44"
glxdev_concourse_web_directory_generated_keys: "{{ glxdev_concourse_dir }}/keys"
glxdev_concourse_web_external_url: "http://localhost:{{ glxdev_concourse_web_host_port }}"
glxdev_concourse_web_local_user: "test"
glxdev_concourse_web_local_password: "test"
glxdev_concourse_web_session_signing_key: "/concourse-keys/session_signing_key"
glxdev_concourse_web_tsa_host_key: "/concourse-keys/tsa_host_key"
glxdev_concourse_web_worker_key: "/concourse-keys/worker_key"
glxdev_concourse_web_authorized_worker_keys: "/concourse-keys/authorized_worker_keys"
glxdev_concourse_web_runtime: "containerd"
glxdev_concourse_download_cli_version: "7.9.0"
glxdev_concourse_download_cli_url: "https://github.com/concourse/concourse/releases/download/v{{ glxdev_concourse_download_cli_version }}/concourse-{{ glxdev_concourse_download_cli_version }}-linux-amd64.tgz"

# Information de Concourse worker
glxdev_concourse_worker_service_name: "concourse-worker"
glxdev_concourse_worker_container_name: "{{ glxdev_concourse_worker_service_name }}.{{ glxdev_domain_name }}"
glxdev_concourse_worker_local_state_dir: "{{ glxdev_concourse_dir }}/worker_state"
glxdev_concourse_worker_work_dir: "/opt/concourse/worker"
glxdev_concourse_worker_tsa_host: "{{ glxdev_concourse_web_network_ipv4_address }}:2222"
glxdev_concourse_worker_containerd_dns: "9.9.9.9"
glxdev_concourse_worker_network_ipv4_address: "172.26.0.45"

Notes TODO#

  • install de fly via .envrc

  • fly login -t local -c http://concourse.local.ici:4042/ -u admin -p admin

compute+storage (debian)

inventory avec ping ansible -b qui marche sur une machine qui a accès à internet

setup glx clans (clan_host+stystem_base+container+vault/pg/gittea/concourse)