monolithprojects.github_actions_runner
Exécuteur d'Actions GitHub
Ce rôle déploie, redéploie, désinstalle et enregistre/désenregistre un Exécuteur d'Actions GitHub local sur des systèmes Linux et macOS (voir liste de compatibilité). Il prend en charge les Exécuteurs d'Entreprises, d'Organisations et de Dépôts.
Installation du Rôle
requirements.yml
roles:
- name: monolithprojects.github_actions_runner
version: 1.21.1
src: https://github.com/MonolithProjects/ansible-github_actions_runner
Exigences
Le système doit avoir accès à l'API GitHub.
Le rôle nécessite un Token d'Accès Personnel pour accéder à GitHub. Le token peut être défini comme une variable d'environnement
PERSONAL_ACCESS_TOKEN
.
Remarque
Le token doit avoir la portéerepo
(lors de la création d'un exécuteur de dépôt), la portéeadmin:org
(lors de la création d'un exécuteur pour une organisation), la portéemanage_runners:enterprise
(lors de la création d'un exécuteur d'entreprise). Un Token d'Accès Personnel pour un compte GitHub peut être créé ici.
Avertissement
Ne jamais stocker votre token d'accès personnel dans le dépôt GitHub. Utilisez Secrets GitHub ou un autre service de secrets.
L'utilisateur de l'exécuteur doit être pré-créé. Rôle recommandé :
monolithprojects.user_management
Les systèmes CentOS nécessitent le dépôt EPEL. Rôle recommandé :
robertdebock.epel
Architecture CPU prise en charge
- ARM, ARM64 (l'installation des dépendances n'est pas couverte par ce rôle)
- AMD64, x86_64
Systèmes d'exploitation pris en charge
- Red Hat Enterprise Linux 7
- CentOS 7
- Rocky Linux 8+
- Fedora 29+
- Debian 9+
- Ubuntu 16.04+
- MacOS High Sierra +
Testé chaque semaine sur :
- Debian 11
- Fedora 39
- Rocky Linux 9
- Ubuntu 20, 22
Variables du Rôle
Ceci est une copie de defaults/main.yml
---
# Utilisateur de l'exécuteur - utilisateur sous lequel le service de l'exécuteur local fonctionne
runner_user: "{{ lookup('env', 'USER') }}"
# Répertoire où l'exécuteur local sera installé
runner_dir: /opt/actions-runner
# Version de l'Exécuteur d'Actions GitHub
runner_version: "latest"
# État dans lequel sera le service de l'exécuteur après le traitement du rôle (démarré, arrêté, absent)
runner_state: "started"
# Si trouvé sur le serveur, supprimer le service d'exécuteur existant et l'installer à nouveau
reinstall_runner: false
# Ne pas afficher les journaux Ansible qui peuvent contenir des données sensibles (token d'enregistrement)
hide_sensitive_logs: true
# Adresse GitHub
github_url: "https://github.com"
# API GitHub
github_api_url: "https://api.github.com"
# Nombre d'exécuteurs à lister par page
github_api_runners_per_page: 100
# Token d'Accès Personnel pour votre compte GitHub
access_token: "{{ lookup('env', 'PERSONAL_ACCESS_TOKEN') }}"
# Est-ce l'exécuteur d'une organisation ou non ?
runner_org: false
# Étiquettes à appliquer à l'exécuteur
runner_labels: []
# Groupe auquel ajouter l'exécuteur d'organisation
runner_group: ""
# Dépôt de l'Exécuteur d'Actions GitHub (changez-le si vous souhaitez utiliser un fork d'Actions Runner personnalisé)
runner_download_repository: "actions/runner"
# Arguments supplémentaires à passer à `config.sh`.
# Plusieurs arguments doivent être déclarés en une seule chaîne (c'est-à-dire "--ephemeral --my_special_fork")
runner_extra_config_args: ""
# Nom à attribuer à cet exécuteur dans GitHub (Nom d'hôte système par défaut)
runner_name: "{{ ansible_facts.hostname }}"
# Définissez sur faux lors de la provision d'exécuteurs pour plusieurs dépôts dans une seule exécution
all_runners_in_same_repo: true
# Utilisateur du dépôt GitHub ou propriétaire de l'organisation utilisé pour l'enregistrement de l'Exécuteur
# github_account: "youruser"
# Nom du propriétaire du dépôt GitHub (si autre que github_account)
# github_owner: "yourorg"
# Nom du dépôt GitHub
# github_repo: "yourrepo"
# Nom de l'entreprise GitHub
# github_enterprise: "yourenterprise"
# Configuration d'un fichier .env personnalisé
# custom_env: |
# http_proxy=YOUR_URL_HERE
# ftp_proxy=YOUR_URL_HERE
# HTTPS_PROXY=YOUR_URL_HERE
# https_proxy=YOUR_URL_HERE
# no_proxy=localhost,127.0.0.1,127.0.0.2
# HTTP_PROXY=
Exemples de Playbooks
Dans cet exemple, le rôle Ansible installera (ou mettra à jour) le service de l'Exécuteur d'Actions GitHub (dernière version disponible). L'exécuteur sera enregistré pour le dépôt GitHub my_awesome_repo. Le service d'exécuteur sera en état actif et fonctionnera sous le même utilisateur que celui utilisé par Ansible pour la connexion ssh (ansible).
---
- name: Installer l'Exécuteur d'Actions GitHub
hosts: all
user: ansible
become: yes
vars:
- github_account: github-access-user
- github_repo: my_awesome_repo
roles:
- role: monolithprojects.github_actions_runner
Même exemple que ci-dessus, mais l'exécuteur sera ajouté à une organisation et déployé sur GitHub Enterprise Server.
---
- name: Installer l'Exécuteur d'Actions GitHub
hosts: all
user: ansible
become: yes
vars:
- github_account: my_awesome_org
- runner_org: yes
- runner_on_ghes: yes
roles:
- role: monolithprojects.github_actions_runner
Si vous avez une licence GitHub Enterprise Cloud et que vous souhaitez gérer tous les exécutants auto-hébergés de l'entreprise :
---
- name: Installer l'Exécuteur d'Actions GitHub
hosts: all
user: automation
become: yes
vars:
- github_enterprise: my_awesome_enterprise
- runner_org: no
roles:
- role: monolithprojects.github_actions_runner
Dans cet exemple, le rôle Ansible déploiera (ou mettra à jour) le service de l'Exécuteur d'Actions GitHub (version 2.165.2) et enregistrera l'exécuteur pour le dépôt GitHub. Le service d'exécuteur fonctionnera sous l'utilisateur runner-user
. L'exécuteur sera enregistré avec deux étiquettes.
Le service d'exécuteur sera arrêté et désactivé. L'exécuteur utilisera des variables d'environnement personnalisées (à partir d'un fichier nommé .env
dans le répertoire de l'application d'exécuteur auto-hébergé).
---
- name: Arrêter l'Exécuteur d'Actions GitHub
hosts: all
become: yes
vars:
- runner_version: "2.165.2"
- runner_user: runner-user
- github_account: github-access-user
- github_repo: my_awesome_repo
- runner_state: "stopped"
- runner_labels:
- production
- west
- custom_env: |
HTTP_PROXY=http://proxy.local:8080
http_proxy=http://proxy.local:8080
HTTPS_PROXY=http://proxy.local:8080
https_proxy=http://proxy.local:8080
no_proxy=localhost,127.0.0.1,127.0.0.2
roles:
- role: monolithprojects.github_actions_runner
Dans cet exemple, le rôle Ansible désinstallera le service d'exécuteur et le désenregistrera du dépôt GitHub.
---
- name: Désinstaller l'Exécuteur d'Actions GitHub
hosts: all
become: yes
vars:
- github_account: github-access-user
- github_repo: my_awesome_repo
- runner_state: "absent"
roles:
- role: monolithprojects.github_actions_runner
Tests avec Molecule
Molecule est un framework de test pour Ansible. Cette section est pour les contributeurs de code.
Prérequis
- Python
- Docker
- Ansible
- Molecule
Installation
- Installez Python, Docker et Ansible si ce n'est pas déjà fait.
- Installez Molecule et son pilote Docker avec pip :
pip install molecule[docker]
Voici un exemple de la structure d'un README pour expliquer comment tester le rôle Ansible monolithprojects.github_actions_runner
avec Molecule :
# monolithprojects.github_actions_runner
Ceci est un rôle Ansible pour configurer les exécuteurs d'Actions GitHub.
## Tests avec Molecule
[Molecule](https://molecule.readthedocs.io/) est un cadre de test pour Ansible que nous utilisons pour tester le rôle `monolithprojects.github_actions_runner`.
### Prérequis
- Python
- Docker
- Ansible
- Molecule
### Installation
1. Installez Python, Docker et Ansible si ce n'est pas déjà fait.
2. Installez Molecule et son pilote Docker avec pip :
```bash
pip install molecule[docker]
Exécution des Tests
- Allez dans le répertoire du rôle :
cd path/to/monolithprojects.github_actions_runner
- Définissez les variables d'environnement :
export PERSONAL_ACCESS_TOKEN=your_github_pat # Votre Token d'Accès Personnel pour GitHub
export GITHUB_ACCOUNT=your_account # Votre Compte GitHub
export GITHUB_REPO=your_repository # Dépôt GitHub où vous souhaitez configurer l'Exécuteur
- Exécutez Molecule :
molecule test
Cela exécutera le test de molécule, créera un conteneur Docker, exécutera le rôle contre celui-ci, effectuera tous les tests default
associés (voir le répertoire molecule/default), puis détruira le conteneur.
Pour plus d'informations sur l'utilisation de Molecule, consultez la documentation de Molecule.
Licence
MIT
Informations sur l'Auteur
Créé en 2020 par Michal Muransky ```
Deploy Github Actions private runner
ansible-galaxy install monolithprojects.github_actions_runner