Skip to content
Menu
msandor honlapja
  • Bemutatkozás
msandor honlapja

Semaphore UI: egy pöpec DevOps cucc

Posted on 2025.09.15.2025.09.15.

Mire való ez a szoftver?

Ez egy letisztult webes felület az ansible és a terraform (opentofu/terragrunt) programokhoz. Minden kódot git repókból fog leszedni, a szükséges jelszavakat, kulcsokat, titkokat megfelelő módon tudja tárolni.

Sokkal fontosabb, hogy igazán akkor tud hasznos lenni, ha egy csapat használja. Ráadásul a felhasználóinak nem kell értenie se a Linuxhoz, se a parancssorhoz 🙂

Nekik csak rá kell kattintani a play gombra 😀

A felhasználók lehetnek helyiek, vagy központi címtárban létezők (LDAP). Sok hasznos funkciót támogat, ám azok csak a fizetős változatban érhetőek el. Így én maradok az ingyenes, nyílt forráskódú változat bemutatásánál.

Kezdjük a telepítéssel

Lehet klasszikusan telepíteni (repóból), dockerben, vagy helm-el Kubernetesbe. Én a dockeres változatot fogom bemutatni. Az oldalon össze lehet kattintani rengeteg opciót, ám én úgy tapasztaltam, hogy semmi értelme, mert nem fog működni. Vagy bugos, vagy csak a fizetős változatnál működik, nem is érdekel. Hozz létre a projektre egy új mappát (pl.: ~/docker/semaphore), abban pedig egy docker-compose.yml fájlt az alábbi tartalommal:

Copy CodeCopiedUse a different Browser
services:
  semaphore:
    container_name: semaphore
    image: semaphoreui/semaphore:v2.16.29-ansible2.16.5
    network_mode: host
    environment:
      - SEMAPHORE_DB_DIALECT=mysql
      - SEMAPHORE_DB_HOST=192.168.5.213
      - SEMAPHORE_DB_NAME=semaphore
      - SEMAPHORE_DB_USER=semaphore
      - SEMAPHORE_DB_PASS=titkosjelszo
      - SEMAPHORE_SCHEDULE_TIMEZONE=Europe/Budapest
    volumes:
      - semaphore_data:/var/lib/semaphore
      - semaphore_config:/etc/semaphore
      - semaphore_tmp:/tmp/semaphore
volumes:
  semaphore_data:
  semaphore_config:
  semaphore_tmp:

A legfontosabb tudnivalók:

4. sor: ha nincs régi szervered, pl RHEL 8, akkor működni fog a legújabb ansible-el is, ebben az esetben legyen a tag latest

5. sor: elhagyható, nálam azért kell, mert ugyanezen a gépen fut a teszt Proxmoxom is, és csak így „lát” bele a semaphore a virbr0 hálózatba

7.-11. sor: az adatbázis szerver adatai, írd át a sajátod szerint, ja és hozd létre a felhasználót és a DB-t

Az első számú probléma, hogy nem hozza létre az admin felhasználót (hiába is adnád meg változókkal), ezért miután elindítottad a konténert add ki ezt a két parancsot:

Copy CodeCopiedUse a different Browser
docker exec semaphore semaphore user add --name 'Márkus Sándor' --login msandor --email semaphore@msandor.hu --password semaphore --admin
docker exec semaphore semaphore user add --name 'Teszt Elek' --login elek --email elek@msandor.hu --password semaphore

Az első létrehoz egy admin jogú felhasználót (msandor), a másik pedig egy mezei usert (elek). Eleket már GUI-ból is létrehozhattuk volna, de ha már úgy is itt vagyunk…

Ennyi a telepítés, nézzük meg alaposabban a cuccot

Nyissuk meg a semaphore ui weboldalt:

Belépés után egy puritán felületet fogunk látni:

  1. világos/sötét téma, én imádom a sötétet
  2. nyelv választás, magyar nincs
  3. ha a nevedre kattintasz, további lehetőségeket fogsz találni

Fentről lefelé:

  • verzió szám
  • runners/futtatók, hasonló a gitlab/gitea runnersre, de ennél opcionális
  • a futó taszkokat láthatod
  • API Tokens, ezzel nem foglalkozunk
  • Users: adja magát
  • Edit Account: saját magunkat tudjuk szerkeszteni
  • Sign Out: kilépés

Térjünk vissza a nyitó lapra és hozzunk létre egy demo projektet:

Mindjárt jobban fog kinézni a nyitó lapunk:

Kapunk egy publikus git repót:

A Key Store-ban egy jelszóval, amit nem lehet megnézni, legfeljebb felülírni:

Néhány ansible inventoryt:

És a lényeg, a Taszkok:

Nézzünk meg alaposabban egy taszkot, kattintsunk a play gombra a legfelsőnél:

Minden futtatáskor feljön egy kis ablak, ahol lehet 1-2 dolgot finomhangolni, most csak simán kattintsunk a RUN-ra:

Aki olvasta a korábbi Terraformról szóló cikkemet, annak ismerős lesz az itt felbukkanó ablak:

Ez felel meg a terraform/tofu plan parancsnak, a zöld gomb folytatja a telepítést (demó módban nem csinál semmit, nyugi), a sárga és piros gombok megszakítják a folyamatot. Válasszuk a zöldet (terraform/tofu apply):

  1. sikeresen lefutott
  2. ki lehet nagyítani az ablakot (érdemes)
  3. új tabon megmutatja a logokat sallangok nélkül
  4. ezzel lehet bezárni az ablakot

Bezárás után látszik, hogy az 1. taszkunk sikeresen lefutott:

Fentről lefelé indítsátok el az összeset, az utolsó powershell híján nem fog működni:

Nézzük meg alaposabban az 1. taszkot. Kattintsunk az Apply infrastructure (OpenTofu) linkre:

  1. újra futtathatjuk
  2. törölhetjük a taszkot
  3. megnézhetjük a korábbi futás logját
  4. szerkesztő ablak:
  1. a taszk neve
  2. ha almappába tettük a terraform/opentofu fájlokat
  3. munkaterület (fizetős opció)
  4. git repó
  5. változó csoport (itt most üres, változó nélkül)
  6. a Build nézet alá kerül a taszk

Nézzünk meg egy ansible taszkot ugyanígy:

  1. a taszk neve
  2. az ansible playbook fájlneve
  3. inventory
  4. git repó
  5. változó csoport (itt is üres tartalommal)
  6. a Tools nézet alá kerül a taszk

Jut eszembe, a nézetek amolyan csoportosítások, a ceruzára kattintva tudjuk őket menedzselni:

  1. a hamburgerrel tudjuk a sorrendet megváltoztatni
  2. csak akkor jelenik meg az új menüpont, ha rákattintunk a zöld pipára!
  3. ezzel tudjuk törölni

Végül nézzük meg a Dashboard -> settings menüpontot:

Itt átnevezhetjük a projektünket, lementhetjük (érzékeny adatok nélkül), törölhetjük a gyorsítótárat, és magát a projektet.

Én inkább létrehozok egy rendes projektet:

Vaaaaagy, inkább visszatöltöm mentésből:

Itt is figyelmeztet arra, hogy 3 kulcsot frissítenem kell, mielőtt használni kezdem. Menjünk is a Key Store-ba:

Az a 3 csak 2, mivel a None default kulcs, nincs értéke, ezt válasszuk azokon a helyeken, ahol nincs jelszó. A valódi kulcsokat töltsük ki (2):

Bocs a kitakarásért, de ez az igazi titkos ssh kulcsom 🙂

Végül a felhasználónkhoz tartozó jelszót (3):

5 ansible taszkot hoztam létre:

Az envteszt bemutatja, hogy Variable groups menüpontban felvett változókat hogyan lehet felhasználni egy ansible playbookban:

Ez pedig a playbookja:

A ping all host nem ICMP pinget jelent, hanem ansible pinget:

Ez pedig a playbookja:

Az upgrade Linux servers nem igényel bemutatást, frissíti az Operációs rendszereket 🙂 Ez a playbook két családhoz jó: Red Hat és Debian. Azaz jó lesz RHEL-hez, Debianhoz, Fedorához, Almához, Rockyhoz, Ubuntuhoz, stb.

A who am I (msandor) minden hoszton lefuttatja a whoami parancsot. Aki azt várja, hogy minden hoszt msandor-t ad vissza, az téved:

Ennek az a magyarázata, hogy két hosztomhoz root-ként kell csatlakozni:

Végezetül a who am I (root) minden hoszton lefuttatja a whoami parancsot, ám itt már sudo-val, nem meglepő módon mindenhol root felhasználó lesz a megfejtés 😉

Aki szeretné utánam csinálni, innen töltse le az export-ot:

Ha az inventory-t testre szabod, és saját git repóra cseréled az enyémet:

akkor meg fogod érteni, hogy hogyan tudsz változókat használni a playbookokban, ami taszkonként változtatható, fogsz tudni normál felhasználóval és root-ként (-b) is playbookokat futtatni. Bármelyik taszkodhoz fogsz tudni időzített feladatot létrehozni.

Csináljunk egy másik projektet az OpenTofuhoz

Az ehhez szükséges export fájlt innen töltheted le:

Itt is téved, ehhez a projekthez nem szükséges se jelszó, se kulcs, mivel a git repó nyilvános, a PVE teszt fürthöz való token része a repónak.

Természetesen, ezek működő fájlok, de ebben a formában csak nálam. Neked le kell töltened, testre kell szabni (IP címek, token, stb), majd fel kell töltened a saját git szerveredre. És annak a linkjét kell berakni a projekt repójához.

Mit lehet még megemlíteni?

Ha az elején létrehozott elek nevű teszt felhasználót hozzáadom egy projekthez, mint taszk futtató:

Azt elfelejti exportálni 🙁

Ettől még ez egy hasznos funkció. Tételezzük fel, hogy a munkahelyen szeretnénk használni a semaphore ui-t. Legyen 1-2 admin, ők tudják létrehozni és módosítani a taszkokat, projekteket, jelszavakat, kulcsokat, stb, de biztonságosabb, ha a napi használathoz normál felhasználóval (task runner jog) dolgoznak, pláne azok, akik nem is adminok a cégnél. Így elkerülhető, hogy illetéktelenek módosítsanak valamit a szoftveren belül. Ám van egy hátsó kapu! Ne felejtsük el, hogy minden kód git repóban van, aki oda tud committolni, az befolyással lesz a semaphore-ui-ra is!

Csináltam egy időzített feladatot is, bár most nincs engedélyezve:

Mondanom se kell, de ha importálod a mentésem, az inventory-t testre kell szabnod, különben semmi sem fog működni! Magyarul töltsd le a git repót, aktualizáld, és töltsd fel a saját git szerveredre.

Jut eszembe, azt állítja magáról a semaphore ui, hogy képes bash/powershell/python szkripteket is futtatni, na ez jó nagy kamu. Mert, bár képes futtatni, de csak localhoston, így pedig nem sok haszna van. Docker esetén a localhost magát a konténert jelenti, azaz még kevesebb értelme van 🙂

Szerencsére az ansible ebben is tud segíteni, lásd a whoami taszkokat.

Szóval én ki is kapcsoltam:

Vélemény, hozzászólás? Válasz megszakítása

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

Kategóriák

  • ansible
  • ArgoCD
  • DevOps
  • docker
  • e-mail
  • git
  • hardware
  • hibakeresés
  • kubernetes
  • ldap
  • Linux
  • MariaDB
  • OpenWrt
  • Proxmox
  • security
  • SNMP
  • Synology
  • Terraform/OpenTofu
  • teszt
  • Unifi
  • UPS
  • vagrant
  • Virtualbox
  • zabbix
©2025 msandor honlapja | WordPress Theme by Superb WordPress Themes

Adatkezelési tájékoztató || Hibát talált az oldalon? Írja meg nekem. || Impresszum || Powered by WordPress

Oldalunk cookie-kat ("sütiket") használ. Ezen fájlok információkat szolgáltatnak számunkra a felhasználó oldallátogatási szokásairól a legjobb felhasználói élmény nyújtása érdekében, de nem tárolnak személyes információkat, adatokat. Szolgáltatásaink igénybe vételével Ön beleegyezik a cookie-k használatába. Kérjük, hogy kattintson az Elfogadom gombra, amennyiben böngészni szeretné weboldalunkat.ElfogadomAdatvédelmi irányelvek