Ansible voor software van buiten de repository, werkwijze?

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • aawe mwan
  • Registratie: December 2002
  • Laatst online: 21-09 20:59

aawe mwan

Wat ook leuk is:

Topicstarter
Ik wil mijn Ubuntu 20.04 computer installeren via Ansible.
Helaas krijg je dan te maken met een noodzakelijk kwaad: software die niet in de repository staat.

Soms kan je volstaan met het toevoegen van een PPA en het van daaruit installeren (Chrome).
Soms is het een .deb bestand dat je kunt downloaden en dan met dpkg kunt installeren.
Soms is het een executable bestand dat je kunt downloaden en dan uitvoeren met root rechten.
Soms is het een .jar bestand dat je alleen maar hoeft te downloaden.

Dat downloaden kan niet vanaf een vaste locatie, maar je moet het bestand gaan zoeken op de website van de leverancier, normaal gesproken krijgt een nieuwe versie een nieuwe bestandsnaam en soms wordt de nieuwe versie zelfs in een andere folder geplaatst dus lang verhaal kort: de URL verandert regelmatig.

Laat ik Ansible op de websites zoeken wat op dat moment de nieuwste versie is (website scraper bouwen in Ansible/bash)? Of kan ik beter de bestanden met de hand downloaden en klaarzetten voor Ansible?

Mijn vraag is dus: wat is in de praktijk een handige werkwijze, of best practice hiervoor?

[ Voor 3% gewijzigd door aawe mwan op 07-06-2020 20:46 ]

„Ik kan ook ICT, want heel moeilijk is dit niet”

Alle reacties


Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
En zijn er ook repositories die misschien niet het pakket hebben voor je distro versie.

Je moet dus altijd je scripts/ansible aanpassen/updaten naar gelang versies.
Misschien wil je wel niet de nieuwste versie als je het uitrolt naar 10+ computers.

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • Thralas
  • Registratie: December 2002
  • Laatst online: 21-09 21:46
aawe mwan schreef op zondag 7 juni 2020 @ 20:41:
Laat ik Ansible op de websites zoeken wat op dat moment de nieuwste versie is (website scraper bouwen in Ansible/bash)? Of kan ik beter de bestanden met de hand downloaden en klaarzetten voor Ansible?

Mijn vraag is dus: wat is in de praktijk een handige werkwijze, of best practice hiervoor?
Lijkt me simpel. Je wilt je Ansible config natuurlijk mooi declaratief houden:

code:
1
2
3
4
5
- name: latest version of foo
  myscraper:
    name: foo
    path: /tmp/bar
    state: latest


Vervolgens schrijf je een ansible module myscraper (in python) die het scrapen en (eventueel) downloaden voor je doet. Vanaf daar verder met je package manager / execute, whatever.

Acties:
  • 0 Henk 'm!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 20-09 20:54

Douweegbertje

Wat kinderachtig.. godverdomme

Kosten & baten ding.

Wat @Thralas zegt is natuurlijk wel leuk. Echter ben ik ook weer voorzichtig voor allemaal custom meuk voor elke afwijking die er is. Dan zou ik vooral kijken hoevaak ik iets moet updaten en wat de consequentie is voor zo'n scraper. Veranderd de download dermate dat de scraper wel echt van hele goede kwaliteit moet zijn wil ik dit consistent 100% in orde krijgen. Anders zit je straks meer tijd te stoppen om constant je scrape aan te passen dan dat je gewoon even simpel de binairy in je playbook kon gooien.

Echte praktijk voorbeelden?

- Bij een vage package die lastig te downloaden is maar niet vaak/geen updates heeft: Direct in het playbook plaatsen en middels de playbook naar de server zetten en zo installeren

- Bij een packge (of meerdere) die regelmatig updates hebben maar de aanlevering niet toerijkend is: Hier heb ik dan 4 opties;

1: Als alleen het versionnummer anders is in de url/naam: een fetch doen vanuit de playbook met de version als variable
2: Manueel de package in het playbook zetten
3: Manueel zelf de package in een "package manager" i.e. artificatory plaatsen
4: Geautomatiseerd de package in een "package manager" i.e. artificatory plaatsen

Het voordeel van #4 is dat je niet je ansible breekt op het moment dat er iets fout ging met het 'scrapen' als je dit ontsluit van je ansible script. Ik ben daarnaast ook meer fan van om ergens de "state" te bewaren dan dat mijn scripts vrij triviaal iets moeten downloaden op xxxx-aantal servers. Voor robuustheid & snelheid zou ik dat dan echt op een centrale & robuuste plek plaatsen.
Voor simpele dingen gooi ik het gewoon in het playbook en zal er een handmatige update + download moeten gebeuren.

Acties:
  • 0 Henk 'm!

  • init6
  • Registratie: Mei 2012
  • Niet online
https://docs.ansible.com/...dules/get_url_module.html
Deze?

ah, de url wijzigd...

Hebben ze niet een latest oid?

Als ze dat niet hebben of doen, tja je zou de versie in een variable kunnen gooien en daarmee het process makkelijker maken.

[ Voor 60% gewijzigd door init6 op 08-06-2020 10:52 ]


Acties:
  • 0 Henk 'm!

  • aawe mwan
  • Registratie: December 2002
  • Laatst online: 21-09 20:59

aawe mwan

Wat ook leuk is:

Topicstarter
De software waar het over gaat krijgt behoorlijk vaak updates (meer dan ik had verwacht); grote kans dat er een of meer nieuwe versies verschenen zijn bij de volgende keer dat ik het playbook draai.

Maar ik wil ook graag een stabiel systeem, dus ik zit niet te wachten op een nieuwe versie die misschien niet meer werkt (of net zo erg: die een compleet andere UI heeft) en zeker niet precies op zo'n moment dat het voor mij noodzakelijk was om alles te herinstalleren.

Verder vind ik het eigenlijk ook geen geruststellend idee dat mijn computer "iets" gaat downloaden van een website en dat dan met root rechten gaat uitvoeren, zonder dat ik er zelf naar gekeken heb.

Dus ik denk dat ik het wel weet: ik ga de bestanden zelf downloaden en dan klaarzetten in het playbook. Ansible mag dan de nieuwste versie zoeken tussen de bestanden die klaarstaan.

„Ik kan ook ICT, want heel moeilijk is dit niet”


Acties:
  • 0 Henk 'm!

  • NielsFL
  • Registratie: Februari 2020
  • Niet online
Ik zet dat soort software in een eigen repo. Er zijn verschillende tools die dat vrij eenvoudig maken.

Je kan het updaten van dergelijke software alsnog automatiseren met ansible of andere scripts, maar dan met je repo als target, niet direct de servers.

Op die manier sta je minder snel voor verassingen. Bovendien kunnen servers dan (eventueel automatisch) updaten zonder dat je het playbook opnieuw moet draaien.
Pagina: 1