cum să lucrați cu variabile și fapte Ansible – Partea 8

am menționat variabile în această serie Ansible și doar pentru a vă împrospăta puțin mintea. O variabilă, la fel ca în multe limbaje de programare, este în esență o cheie care reprezintă o valoare.

ce constituie un nume de variabilă Valid?

un nume de variabilă include litere, numere, subliniere sau un amestec de 2 sau toate. Cu toate acestea, rețineți că un nume de variabilă trebuie să înceapă întotdeauna cu o literă și nu trebuie să conțină spații.

să aruncăm o privire câteva exemple de nume de variabile valide și inacceptabile:

Exemple de nume de variabile valide:

football foot_ballfootball20 foot_ball20

Exemple de nume de variabile nevalide:

foot ball20 foot-ball

să discutăm tipurile de variabile:

variabile Playbook

variabile Playbook sunt destul de ușor și simplu. Pentru a defini o variabilă într-un playbook, pur și simplu utilizați cuvântul cheie vars înainte de a scrie variabilele cu indentare.

pentru a accesa valoarea variabilei, așezați-o între brațele duble ondulate închise cu ghilimele.

Iată un exemplu simplu de playbook:

- hosts: all vars: greeting: Hello world! tasks: - name: Ansible Basic Variable Example debug: msg: "{{ greeting }}"

în playbook-ul de mai sus, variabila de salut este înlocuită de valoarea Hello world! atunci când playbook este rulat. Playbook imprimă pur și simplu mesajul Hello world! când a fost executat.

variabile Playbook în Ansible

în plus, puteți avea o listă sau o serie de variabile așa cum se arată:

playbook de mai jos prezintă o variabilă numită continente. Variabila deține 5 valori diferite-nume de continent. Fiecare dintre aceste valori pot fi accesate cu ușurință folosind indexul 0 ca prima variabilă.

exemplul manualului de mai jos preia și afișează Asia (indexul 1).

matrice de variabile în Ansible

lista variabilelor poate fi structurată în mod similar așa cum se arată:

vars: Continents: 

pentru a lista toate elementele din listă, utilizați modulul with_items. Aceasta va trece prin toate valorile din matrice.

enumerați variabilele matrice Ansibile

un alt tip de variabilă Ansibilă este variabila dicționar.

variabilele dicționarului sunt acceptate suplimentar în playbook. Pentru a defini variabila dicționar, pur și simplu ident perechea cheie-valoare chiar sub numele variabilei dicționar.

hosts: switch_f01vars: http_port: 8080 default_gateway: 10.200.50.1 vlans: id: 10 port: 2

în exemplul de mai sus, VLAN-urile sunt variabila dicționar, în timp ce id-ul și portul sunt perechile cheie-valoare.

pentru port_id, deoarece începem valoarea cu text și nu cu variabila, ghilimelele nu sunt necesare pentru a înconjura bretelele ondulate.

variabile speciale

Ansible oferă o listă de variabile predefinite la care se poate face referire în șabloanele și manualele de joc Jinja2, dar care nu pot fi modificate sau definite de utilizator.

în mod colectiv, lista variabilelor predefinite Ansibile este denumită fapte Ansibile și acestea sunt adunate atunci când se execută o carte de joc.

pentru a obține o listă a tuturor variabilelor Ansible, utilizați modulul de configurare din comanda Ansible ad-hoc așa cum se arată mai jos:

# ansible -m setup hostname

Aceasta afișează ieșirea în format JSON așa cum se arată:

# ansible -m setup localhost
enumerați variabilele Ansibile

din Ieșire, putem vedea că unele dintre exemplele de variabile speciale Ansibile includ:

există multe alte variabile speciale Ansibile acestea sunt doar câteva exemple.

aceste variabile pot fi utilizate într-un șablon Jinja2 așa cum se arată:

variabile de inventar

în cele din urmă, pe listă, avem variabile de inventar Ansible. Un inventar este un fișier în format INI care conține toate gazdele care urmează să fie gestionate de Ansible.

în stocuri, puteți atribui o variabilă unui sistem gazdă și o puteți utiliza ulterior într-un manual de redare.

web_server_1 ansible_user=centos http_port=80web_server_2 ansible_user=ubuntu http_port=8080

cele de mai sus pot fi reprezentate într-un fișier YAML playbook așa cum se arată:

--- web_servers: web_server_1: ansible_user=centos http_port=80web_server_2: ansible_user=ubuntu http_port=8080

dacă sistemele gazdă împărtășesc aceleași variabile, puteți defini un alt grup în fișierul de inventar pentru a-l face mai puțin greoi și pentru a evita repetarea inutilă.

de exemplu:

web_server_1 ansible_user=centos http_port=80web_server_2 ansible_user=centos http_port=80

cele de mai sus pot fi structurate ca:

web_server_1web_server_2ansible_user=centoshttp_port=80

și în fișierul YAML PlayBook, acest lucru va fi definit așa cum se arată:

--- web_servers: hosts: web_server_1: web_server_2: vars: ansible_user=centos http_port=80

Ansible Facts

când rulează playbooks, prima sarcină pe care Ansible o face este executarea sarcinii de configurare. Sunt destul de sigur că trebuie să fi venit peste ieșire:

TASK: *********

faptele posibile nu sunt altceva decât Proprietăți de sistem sau bucăți de informații despre nodurile la distanță la care v-ați conectat. Aceste informații includ arhitectura sistemului, versiunea sistemului de operare, informațiile BIOS, ora și data sistemului, timpul de funcționare al sistemului, adresa IP și informațiile hardware pentru a menționa doar câteva.

pentru a obține faptele despre orice sistem pur și simplu utilizați modulul de configurare așa cum se arată în comanda de mai jos:

# ansible -m setup hostname

de exemplu:

# ansible -m setup database_server

aceasta imprimă un set mare de date în format JSON așa cum se arată:

Ansible get System Facts

Ansible facts sunt utile pentru a ajuta administratorii de sistem ce operațiuni să efectueze, de exemplu, în funcție de sistemul de operare, sunt capabili să știe ce pachete software trebuie instalate și cum trebuie configurate etc.

fapte personalizate

știați, de asemenea, că vă puteți crea propriile fapte personalizate care pot fi adunate de Ansible? Ba da, poți. Deci, cum te duci despre asta? Să schimbăm vitezele și să vedem cum.

primul pas este crearea unui /etc/ansible/facts.D Director pe nodul gestionat sau la distanță.

în interiorul acestui director, creați un fișier(E) cu o extensie .fact. Acest fișier(E) va returna date JSON atunci când playbook este rulat pe nodul de control Ansible, care include alte fapte care Ansible preia după o rulare playbook.

Iată un exemplu de fișier fapt personalizat numit date_time.fapt care preia data și ora.

# mkdir -p /etc/ansible/facts.d# vim /etc/ansible/facts.d/date_time.fact

adăugați următoarele linii în ea.

#!/bin/bashDATE=`date`echo "{\"date\" : \"${DATE}\"}"

Salvați și ieșiți din fișier.

acum atribuiți permisiunile de executare:

# chmod +x /etc/ansible/facts.d/date_time.fact

acum, am creat un playbook pe nodul de control Ansible numit check_date.yml.

---- hosts: webservers tasks: - name: Get custom facts debug: msg: The custom fact is {{ansible_local.date_time}}

Adăugați fișierul fact la variabila ansible_local. Ansible_local stochează toate faptele personalizate.

acum rulați playbook și să respecte Ansible regăsirea informațiilor salvate pe fișierul fapt:

# ansible_playbook check_date.yml
creați fapte personalizate Ansible
concluzie

acest lucru ne aduce la sfârșitul acestui tutorial despre lucrul cu variabile și fapte Ansible.

Lasă un răspuns

Adresa ta de email nu va fi publicată.

Previous post STEPHEN SCHWARTZ – compozitor bun rău
Next post 7 moduri în care copiii dvs. ar putea ocoli Software-ul de Control Parental