![Cum să detectați cu ușurință locația dintr-o fotografie](/f/ad33774d217a39f639248e797b673a9d.jpg?width=100&height=100)
Am menționat variabile în acest sens Seria Ansible și doar să-ți treci puțin mintea. A variabil, la fel ca în multe limbaje de programare, este în esență o cheie care reprezintă o valoare.
Un nume variabil include litere, cifre, caractere de subliniere sau un amestec de 2 sau toate. Cu toate acestea, rețineți că un nume variabil trebuie să înceapă întotdeauna cu o literă și nu trebuie să conțină spații.
Să aruncăm câteva exemple de nume de variabile valide și inacceptabile:
fotbal foot_ball. football20 foot_ball20.
fotbal. 20 de picioare.
Să discutăm tipurile de variabile:
Playbook variabilele sunt destul de ușoare și simple. Pentru a defini o variabilă într-un carte de joc, pur și simplu utilizați cuvântul cheie vars înainte de a vă scrie variabilele cu indentare.
Pentru a accesa valoarea variabilei, plasați-o între acoladurile duble, încadrate între ghilimele.
Iată un exemplu simplu de carte de joc:
- gazde: toate varurile: Salut: Salut Lume! sarcini: - nume: Ansible Variable Basic Exemplu de depanare: msg: "{{ Salut }}"
În manualul de mai sus, Salut variabila este substituită cu valoarea Salut Lume! când rulează playbook-ul. Playbook-ul imprimă pur și simplu mesajul Salut Lume! când este executat.
În plus, puteți avea o listă sau o serie de variabile așa cum se arată:
Playbook-ul de mai jos prezintă o variabilă numită continente. Variabila deține 5 valori diferite - nume de continent. Fiecare dintre aceste valori poate fi accesată cu ușurință folosind index 0 ca prima variabilă.
Exemplul cărții de redare de mai jos recuperează și se afișează Asia (Index 1).
- hosts: all vars: continents: - Africa - Asia - America de Sud - America de Nord - Europe taskuri: - nume: Variabilă Lista Ansible Exemplu de depanare: msg: "{{continents [1]}}"
Lista variabilelor poate fi structurată în mod similar, așa cum se arată:
vars: Continente: [Africa, Asia, America de Sud, America de Nord, Europa]
Pentru a lista toate elementele din listă, utilizați cu_elemente modul. Aceasta va parcurge toate valorile din matrice.
- hosts: all vars: continents: [Africa, Asia, America de Sud, America de Nord, Europa] task-uri: - nume: Variabile matrice răspunzătoare exemplu debug: msg: "{{ articol }} "with_items: -" {{ continente }}"
Un alt tip de variabilă Ansible este dicţionar variabil.
Dicţionar variabilele sunt acceptate suplimentar în playbook. Pentru a defini variabila dicționar, pur și simplu identificați perechea cheie-valoare chiar sub numele variabilei dicționar.
hosts: switch_f01 vars: http_port: 8080 default_gateway: 10.200.50.1 vlans: id: 10 port: 2.
În exemplul de mai sus, vlanuri este variabila dicționar while id și port sunt perechile cheie-valoare.
hosts: switch_f01 vars: http_port: 8080 default_gateway: vlans: id: 10 port: 20 tasks: name: Configurare gateway implicit system_configs: default_gateway_ip: „{{default_gateway}}“ nume: Port etichetă pe vlan 10 vlan_config: vlan_id: “{{ vlans [‘id’]}} ” port_id: 1/1 / {{vlans [‘port’]}}
Pentru port_id, deoarece începem valoarea cu text și nu cu variabila, ghilimelele nu sunt necesare pentru a înconjura acoladele.
Ansible oferă o listă de variabile predefinite care pot fi menționate în Șabloane și playbook-uri Jinja2 dar nu poate fi modificat sau definit de utilizator.
În mod colectiv, lista variabilelor predefinite Ansible este denumită Fapte răspunzătoare iar acestea sunt adunate când se execută un playbook.
Pentru a obține o listă cu toate variabilele Ansible, utilizați înființat modul în Comandă ad-hoc răspunzătoare 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.
Din rezultat, putem vedea că unele dintre exemplele de variabile speciale Ansible includ:
ansible_architecture. ansible_bios_date. ansible_bios_version. ora_dată_ansibilă. ansible_machine. ansible_memefree_mb. ansible_os_family. ansible_selinux.
Există multe alte variabile speciale Ansible, acestea sunt doar câteva exemple.
Aceste variabile pot fi utilizate într-un Jinja2 șablon așa cum se arată:
Numele de gazdă al acestui server web este {{ansible_hostname}}
Funcționează {{ansible_os_family}}sistem
În sfârșit, pe listă, avem variabile de inventar Ansible. Un inventar este un fișier din INI format care conține toate gazdele care urmează să fie gestionate de Ansible.
În stocuri, puteți atribui o variabilă unui sistem gazdă și ulterior o puteți utiliza într-un playbook.
[web_servers] web_server_1 ansible_user = centos http_port = 80. web_server_2 ansible_user = ubuntu http_port = 8080.
Cele de mai sus pot fi reprezentate într-un playbook YAML fișier așa cum se arată:
web_servers: web_server_1: ansible_user = centos http_port = 80 web_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_servers] web_server_1 ansible_user = centos http_port = 80. web_server_2 ansible_user = centos http_port = 80.
Cele de mai sus pot fi structurate ca:
[web_servere] web_server_1. web_server_2 [web_servers: vars] ansible_user = centos. http_port = 80.
Și în playbook YAML fișier, acesta va fi definit după cum se arată:
web_servers: hosts: web_server_1: web_server_2: vars: ansible_user = centos http_port = 80.
Când rulați cărți de redare, prima sarcină pe care Ansible o face este executarea sarcinii de configurare. Sunt destul de sigur că trebuie să fi dat peste rezultat:
TASK: [Adunarea faptelor] *********
Faptele răspunzătoare nu sunt altceva decât proprietăți de sistem sau informații despre nodurile la distanță la care v-ați conectat. Aceste informații includ arhitectura sistemului, versiunea sistemului de operare, informații despre BIOS, ora și data sistemului, durata de funcționare a sistemului, adresa IP și informații despre hardware pentru a menționa doar câteva.
Pentru a obține datele despre orice sistem, pur și simplu utilizați înființat modul prezentat în comanda de mai jos:
# ansible -m setup hostname.
De exemplu:
# ansible -m setup database_server.
Aceasta imprimă un set mare de date în JSON format așa cum se arată:
Faptele răspunzătoare sunt utile pentru a ajuta administratorii de sistem care operațiuni să efectueze, de exemplu, în funcție de sistemul de operare, ei sunt capabili să știe ce pachete software trebuie instalate și cum trebuie configurate, etc.
Știați, de asemenea, că vă puteți crea propriile fapte personalizate care pot fi adunate de Ansible? Da, poti. Deci, cum te descurci? 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 acest director, creați un fișier (e) cu un .fapt
extensie. Fișierele vor fi returnate JSON date atunci când playbook-ul este rulat pe nodul de control Ansible, care include toate celelalte fapte pe care Ansible le recuperează după o run playbook.
Iată un exemplu de fișier de date personalizat numit data_time.fact care preia data și ora.
# mkdir -p /etc/ansible/facts.d. # vim /etc/ansible/facts.d/date_time.fact.
Adăugați următoarele rânduri în el.
#! / bin / bash. DATA = „data` ecou "{\" data \ ": \" $ {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: Obțineți date de depanare personalizate: msg: Faptul personalizat este {{ansible_local.date_time}}
Adăugați fișierul de informații la ansible_local variabil. ansible_local stochează toate datele personalizate.
Acum rulați playbook-ul și observați Ansible recuperând informații salvate în fișierul de fapt:
# ansible_playbook check_date.yml.
Acest lucru ne aduce la sfârșitul acestui tutorial despre lucrul cu variabile și fapte Ansible.