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.