95 lines
3.1 KiB
YAML
95 lines
3.1 KiB
YAML
name: 🏃Run Ansible
|
||
|
||
on:
|
||
workflow_call:
|
||
inputs:
|
||
playbook_path:
|
||
required: true
|
||
type: string
|
||
role_repo:
|
||
required: true
|
||
type: string
|
||
secrets:
|
||
TOKEN:
|
||
required: true
|
||
|
||
jobs:
|
||
install_ansible:
|
||
runs-on: ubuntu-latest
|
||
|
||
steps:
|
||
- name: 🔐Setup SSH for submodules
|
||
run: |
|
||
echo "Key length: ${#SSH_PRIVATE_KEY}"
|
||
mkdir -p $HOME/.ssh
|
||
echo "$SSH_PRIVATE_KEY" | base64 -d > $HOME/.ssh/id_ed25519
|
||
chmod 600 $HOME/.ssh/id_ed25519
|
||
ls -laR
|
||
# ssh-keyscan -t rsa -p 2222 gitlab.mod.home > $HOME/.ssh/known_hosts
|
||
echo "Host *" >> ~/.ssh/config
|
||
echo " StrictHostKeyChecking no" >> ~/.ssh/config
|
||
echo " UserKnownHostsFile /dev/null" >> ~/.ssh/config
|
||
echo "Host gitea.mod.home" >> ~/.ssh/config
|
||
echo " port 2222" >> ~/.ssh/config
|
||
env:
|
||
SSH_PRIVATE_KEY: ${{ secrets.SSHKEY_B64 }}
|
||
|
||
- name: 🔎Checkout Repository
|
||
uses: actions/checkout@v4
|
||
with:
|
||
submodules: recursive
|
||
fetch-depth: 0
|
||
# Python 3 installieren, was für pip und Ansible notwendig ist
|
||
|
||
- name: ⚙️Setup Python
|
||
uses: actions/setup-python@v5
|
||
with:
|
||
python-version: "3.x" # Wählt die neueste Python 3 Version
|
||
|
||
# Abhängigkeiten aktualisieren und Ansible über pip installieren
|
||
- name: ⚙️Install Ansible via pip
|
||
run: |
|
||
python -m pip install --upgrade pip
|
||
pip install ansible
|
||
|
||
# vault file anlegen
|
||
- name: 🔑create vault file
|
||
run: echo "${{ secrets.ANSIBLE_VAULT_KEY }}" > .vault_pass.txt
|
||
|
||
- name: 📋Manuelles Submodule Update
|
||
run: |
|
||
git submodule init
|
||
git submodule update --recursive --init --force
|
||
|
||
- name: ⚙️Install Ansible roles
|
||
run: |
|
||
ansible-galaxy role install -r requirements.yml --roles-path ./roles
|
||
|
||
- name: 🔎Check Ansible roles exists
|
||
run: |
|
||
ansible-galaxy list
|
||
|
||
- name: 🔎 Checkout Triggering Role Repo
|
||
uses: actions/checkout@v4
|
||
with:
|
||
token: ${{ secrets.TOKEN }}
|
||
repository: ${{ inputs.role_repo }}
|
||
path: active_role
|
||
|
||
- name: 🔎Check Ansible Playbook Syntax
|
||
run: |
|
||
ansible-playbook --syntax-check active_role/${{ inputs.playbook_path }}
|
||
|
||
- name: 🏃Run Ansible deploy_valkey.yml.ansible
|
||
run: |
|
||
ansible-playbook -i inventory/raspberries.yaml active_role/${{ inputs.playbook_path }} --vault-password-file .vault_pass.txt -v
|
||
# Beispiel für den Benachrichtigungsschritt
|
||
- name: 📨Telegram Benachrichtigung senden
|
||
uses: chapvic/telegram-notify@master
|
||
if: always() # Stellt sicher, dass die Benachrichtigung immer gesendet wird
|
||
with:
|
||
token: ${{ secrets.TELEGRAM_BOT_TOKEN }} # Ihr Bot-Token Secret
|
||
chat: ${{ secrets.TELEGRAM_CHAT_ID }} # Ihre Chat-ID Secret
|
||
status: ${{ job.status }} # Sendet den Job-Status (success/failure/cancelled)
|
||
title: "Deploy: ${{ inputs.role_repo }}"
|