Puncte:0

Care sunt variabilele comune de menționat într-un fișier yaml de inventar ansible?

drapel uz
  • Încerc să construiesc o conductă pentru a-mi instala produsul.
  • Produsul meu este instalat într-un laborator cu cel puțin 8 mașini (laborator on-prem).
  • Am mai multe laboratoare on-prem, mai multe laboratoare pe cloud
  • Fiecare mașină are un rol, de exemplu: o mașină Center-DB, o mașină Center-Queue sau o mașină Center-App, o mașină Middle și o mașină Client, etc... Deci, unele laboratoare sunt: ​​1 Center - 1 Middle - 1 Client. sau 3 Centre (Aplicație, DB, coadă) - 2 Middles - 3 Clienți
  • Unele dintre mașini au unul serviciu cum ar fi DB, și unele ca: DB, IIS și broker de mesaje
  • Laboratorul se află într-un VLAN securizat, ceea ce înseamnă că, pentru a rula scripturi de la distanță, trebuie să mă conectez la mașină cu IP-ul lor și nu cu FQDN-ul lor și să furnizez acreditările.
  • Acreditări sunt aceleași pentru toate mașinile.
  • În plus, există o opțiune în fișierul de instalare pentru a instala produsul securizat (cu certificat și portul 443) sau nesecurizat.
  • În timpul procesului de instalare, trebuie să copiez mai întâi pe fiecare mașină pe care o are fișiere de instalare specifice, apoi instalați-le cu argumente specifice.

Cu excepția listei de adrese de gazdă și IP din fișierul inventare ansible yaml, este de așteptat să adăugați variabile sau chei, cum ar fi:

  • "acreditări"
  • "protocol",
  • "fisiere",
  • „tip mașină” etc...?

SAU ar trebui să fie plasate într-un fișier diferit, cum ar fi roluri (sarcini). Vă rog, ajutați-mă să decid ce informații merg spre unde. Exemplul meu de fișier yaml este mai jos:

---
cred:
    utilizator: a
    trece: 1
centru:
    dbs:
        - db:
              fqdn: center-db.foo.com
              cn: centru-db
              fisiere:
                  - C:\folder\Server.msi
              ip: 1.1.1.1
    cozi: 
        - coada: 
              fqdn: center-queue.foo.com
              cn: centru-coadă
              fisiere:
                  - C:\folder\Server.msi
              ip: 2.2.2.2
    aplicatii:
        - aplicație:
              fqdn: center-app.foo.com
              cn: center-app
              fisiere:
                  - C:\folder\Server.msi
                  - C:\folder\Center-Client.msi
                  - C:\folder\fișiere
              ip: 3.3.3.3
                  

               clienti:
                  - client:
                        db:
                            cn: Client-DB
                        aplicatie:
                            fqdn: Client-APP.foo.com
                            cn: Client-APP
                            fisiere:
                                - C:\folder\Server.msi
                                - C:\folder\Client-Client.msi
                            ip: 4.4.4.4
Puncte:1
drapel cn

Ansible permite structurarea variabilelor și sarcinilor de inventar în mai multe moduri. Dezvoltați-vă propriile opinii despre unde să puneți lucrurile într-un mod logic, în funcție de ceea ce se așteaptă diferitele pluginuri Ansible.

Laboratorul se află într-un VLAN securizat, ceea ce înseamnă că pentru a rula scripturi de la telecomandă trebuie să mă conectez la mașină cu IP-ul lor și nu cu FQDN-ul lor și furnizați acreditările.

Fals. DNS este posibil pentru orice mediu. Poate delega o zonă hiddai.lab.example.net la un server DNS de laborator de testare, iar gazdele folosesc FQDN-uri în această zonă.

Acestea fiind spuse, ansible_host variabilele pot fi furnizate pentru înlocuirea numelor de gazdă sau a adreselor IP pentru utilizarea pluginurilor de conexiune.

Nu utilizați adrese IP care sunt alocate pentru alți utilizatori. 1.1.1.1 nu este al tău, este Cloudflare DNS. Utilizați fie adresele IP reale, fie rețele de testare a documentației, cum ar fi 192.0.2.0/24 198.51.100.0/24 203.0.113.0/24.

În plus, trebuie să decid dacă produsul meu se va instala în siguranță sau nu în laboratorul meu (ce protocol - HTTPS sau HTTP?)

Întotdeauna sigur, deci HTTPS. Setarea de laborator poate fi mai relaxată pe PKI, CA personal simplu, certificate autosemnate.

Cu excepția listei de gazdă și adrese IP din inventarele ansible yaml fișier, este de așteptat să adăugați variabile sau chei, cum ar fi: „acreditări”, „protocol”, „fișiere”, „tip de mașină”, etc...

Nu, lista de gazde separată de datele de configurare a aplicației la nivel de rol. Acest lucru permite inventare multiple. Dublare minimă a datelor între mai multe laboratoare, stocare și inventare de producție.

Limitați inventarul la ceea ce este necesar pentru conectarea la o gazdă: nume de gazdă, utilizator, poate acreditări, plugin de conexiune. Puneți detaliile aplicației în altă parte, de exemplu group_vars.

    cred:
        utilizator: a
        trece: 1

Vorbind de acreditări, consider o parolă de un caracter inacceptabil de scurtă. Nici măcar nu-l aveți ca exemplu fals. În mod ideal, înlocuiți autentificarea parolei cu ceva mai bun, cum ar fi autentificarea bazată pe cheie sau certificat. Sau cel puțin fraze de acces lungi bazate pe cuvinte, cum ar fi din nefericire-prefă-se-ocupă-sfert.

Căile fișierelor dvs. par să fie Windows. Citit Documentația winrm a lui Ansible și luați în considerare opțiunile dvs. pentru autentificare.

Stocarea creditelor în inventar înseamnă că oricine are fișierul de inventar poate rula comenzi. Securizați fișierul în mod corespunzător. Luați în considerare stocarea creditelor în fișiere cheie separate sau într-un sistem secret pe care îl puteți accesa cu o căutare Ansible.

Fișierul dvs. vars este YAML, dar nu într-o structură Plugin-ul static de inventar YAML al Ansible se asteapta. Poate ceva de genul asta ca inventar/lab.yml Am schimbat unele valori în exemple reale pe RFC-uri de internet.

---
toate:
    copii: 
        ferestre:
            # Grupul care conține doar gazdele Windows permite 
            # Variabile de autentificare și conexiune specifice Windows
            vars:
                utilizator_ansible: a
                ansible_password: din nefericire-pretenție-ocupă-sferturi
                ansible_connection: winrm
                ansible_winrm_transport: credssp
            copii:
                db:
                    # FQDN ca inventory_hostname ar trebui să se rezolve dacă se află în DNS
                    # Ansible scoate eticheta de sus pentru tine ca var special inventory_hostname_short
                    gazde: 
                        center-db.hiddai.lab.example.net:
                            # ansible_host suprascrie la ce să se conecteze
                            # Cum ar fi atunci când nu există DNS
                            gazdă_ansible: 203.0.113.23
            copii:
                coadă:
                    gazde:
                        center-queue.hiddai.lab.example.net:
                            gazdă_ansible: 203.0.113.83

            copii:
                aplicatie:
                    gazde:
                        center-app.hiddai.lab.example.net:
                            gazdă_ansible: 203.0.113.62
                            
            copii:
                client:
                    gazde:
                        client-app.hiddai.lab.example.net:
                            gazdă_ansible: 203.0.113.28
                            db: centru-db

Nu sunt clar ce „centru” este în acest exemplu, produs software, numele implementării, numele clientului? Deoarece inventarul Ansible este de fapt plat pe plan intern, l-am prăbușit. Adăugați-l înapoi ca variabilă sau grup, dacă doriți.

În ceea ce privește datele de configurare a aplicației specifice gazdei, luați în considerare group_vars. Acestea pot fi legate de fișierul dvs. de inventar, cu numele fișierului care se potrivește cu numele grupului.

inventar/group_vars/windows.yml

---
base_dir: „C:\folder\”
files_common: 
  - Server.msi

inventory/group_vars/app.yml

---
files_additional:
  - dosare
  - Center-Client.msi

inventory/group_vars/client.yml

---
files_additional:
  - Client-Client.msi

Rețineți că am inventat câteva variabile pentru fișiere. Fiind numite diferite, le puteți combina mai târziu într-o singură listă, deci {{ files_common + files_additional }}

În mod ideal, scrieți și utilizați roluri Ansible, care au propriile variabile și sarcini. Luați în considerare valorile implicite ale rolului potrivite pentru majoritatea cazurilor de utilizare. De exemplu, sarcinile win_package pentru a instala aceste pachete msi și, implicit, pentru a le descărca de pe un server https. Dar faceți din fișierul pachetului sursă o variabilă, astfel încât să poată fi suprascris.

Și piesele sunt cele care mapează aceste modele de gazdă la roluri. Nu sunt sigur cum să numesc aplicația dvs. având doar nume generice, așa că am prefixat rolurile cu „lucru”. play.yml:

---

gazde: db
roluri:
- lucrudb

gazde: coada
roluri:
- coada de lucruri

gazde: app
roluri:
- thingapp

gazde: client
roluri:
- thingclient

Rulați un astfel de manual cu ansible-playbook play.yml -i inventory/lab.yml

Nu sunt incluse: rolurile. Nu știu ce vrei să realizezi, iar acest răspuns devine puțin lung.

drapel uz
ați menționat că: „În mod ideal, scrieți și utilizați roluri Ansible”. Asta înseamnă că pot evita folderul „group_var” și pot organiza vars-urile în folderul Role\common\vars... SAU acele foldere au obiective complet diferite?
John Mahowald avatar
drapel cn
Rolurile permit reutilizarea. Toate acestea sunt opționale, în funcție de modul în care doriți să structurați lucrurile. Folosiți ambele roluri (cu valorile implicite pentru variabilele sale) cu group_vars (overscriind variabilele de rol pentru anumite grupuri) sau nu folosiți niciunul.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.