Otu esi arụ ọrụ na mgbanwe mgbanwe na eziokwu - Nkebi nke 8


Anyị ekwupụtala mgbanwe dị iche iche n'usoro ihe omume a na-ekwe omume na naanị iji mee ka uche gị dị ntakịrị. Agbanwe, dị ka n'ọtụtụ asụsụ mmemme, bụ isi igodo na-anọchite anya uru.

Kedu ihe bụ aha mgbanwe bara uru?

Aha na-agbanwe agbanwe gụnyere mkpụrụedemede, ọnụọgụ, akara ma ọ bụ ngwakọta nke abụọ ma ọ bụ ha niile. Otú ọ dị, buru n'uche na aha agbanwe agbanwe ga-amalite mgbe niile site na mkpụrụedemede ma ghara inwe oghere.

Ka anyị lee atụ ole na ole nke aha mgbanwe dị mma na nke anaghị anabata:

football 
foot_ball
football20 
foot_ball20
foot ball
20 
foot-ball

Ka anyị tụlee ụdị mgbanwe:

1. Akwụkwọ egwuregwu mgbanwe

Ntụgharị akwụkwọ egwuregwu dị mfe ma kwụ ọtọ. Iji kọwapụta mgbanwe n'ime akwụkwọ egwuregwu, naanị jiri akara okwu vars tupu ị dee mgbanwe gị na ntinye.

Iji nweta uru nke mgbanwe ahụ, dobe ya n'etiti ihe nkwado okpukpu abụọ ejiri akara ngụkọ mechie.

Nke a bụ ọmụmaatụ akwụkwọ egwuregwu dị mfe:

- hosts: all
  vars:
    greeting: Hello world! 

  tasks:
  - name: Ansible Basic Variable Example
    debug:
      msg: "{{ greeting }}"

N'akwụkwọ egwuregwu dị n'elu, a na-eji uru ndewo ụwa dochie mgbanwe ekele! mgbe akwụkwọ egwuregwu na-agba ọsọ. Akwụkwọ egwuregwu na-ebipụta ozi ndewo ụwa! mgbe e gburu ya.

Na mgbakwunye, ị nwere ike ịnwe ndepụta ma ọ bụ ọtụtụ mgbanwe dị ka egosiri:

Akwụkwọ egwuregwu dị n'okpuru na-egosi mgbanwe a na-akpọ kọntinent. Ngbanwe ahụ na-ejide ụkpụrụ 5 dị iche iche - aha kọntinent. Enwere ike ịnweta nke ọ bụla n'ime ụkpụrụ ndị a n'ụzọ dị mfe site na iji index 0 dị ka mgbanwe mbụ.

Ihe atụ nke akwụkwọ egwuregwu dị n'okpuru na-eweghachite ma gosipụta Asia (Index 1).

- hosts: all
  vars:
    continents:
      - Africa
      - Asia
      - South America
      - North America
      - Europe
      
  tasks:
  - name: Ansible List variable Example
    debug:
      msg: "{{ continents [1] }}"

Enwere ike ịhazi ndepụta mgbanwe dị ka egosiri:

vars:
    Continents: [Africa, Asia, South America, North America, Europe]

Iji depụta ihe niile dị na listi ahụ, jiri modul with_items. Nke a ga-edobe ụkpụrụ niile dị n'usoro.

- hosts: all
  vars:
    continents: [Africa, Asia, South America, North America, Europe]

  tasks:
  - name: Ansible array variables example
    debug: 
      msg: "{{ item }}"
    with_items:
      - "{{ continents }}"

Ụdị ọzọ nke mgbanwe nwere ike ime bụ mgbanwe ọkọwa okwu.

A na-akwadokwa mgbanwe ọkọwa okwu n'akwụkwọ egwuregwu. Iji kọwapụta mgbanwe ọkọwa okwu, naanị chọpụta ụzọ igodo-uru dị n'okpuru aha mgbanwe ọkọwa okwu.

hosts: switch_f01

vars:
   http_port: 8080
   default_gateway: 10.200.50.1
   vlans:
       id: 10
       port: 2

N'ọmụmaatụ dị n'elu, vlans bụ mgbanwe ọkọwa okwu ebe id na ọdụ ụgbọ mmiri bụ ụzọ ụzọ igodo-uru.

hosts: switch_f01

vars:
   http_port: 8080
   default_gateway: 
   vlans:
      id: 10
      port: 20

 tasks:
   name: Configure default gateway
   system_configs:
   default_gateway_ip: “{{ default_gateway  }}“


   name: Label port on vlan 10
   vlan_config:
	vlan_id: “{{ vlans[‘id’]  }}“
     port_id: 1/1/ {{ vlans[‘port’]  }}

Maka port_id, ebe ọ bụ na anyị na-eji ederede na-amalite uru ahụ, ọ bụghị mgbanwe, akara ngụkọ adịghị mkpa iji gbaa mgbanaka mgbanaka gburugburu.

2. Pụrụ iche mgbanwe

Ansible na-enye ndepụta mgbanwe ndị eburu ụzọ akọwa nke enwere ike idetu ya na ndebiri Jinja2 na akwụkwọ egwuregwu mana onye ọrụ enweghị ike ịgbanwe ma ọ bụ kọwaa ya.

N'ịchịkọta, a na-akpọ ndepụta mgbanwe ndị nwere ike ịkọwapụta dị ka eziokwu nwere ike ime ma a na-achịkọta ihe ndị a mgbe a na-egbu akwụkwọ egwuregwu.

Iji nweta ndepụta nke mgbanwe niile enwere ike, jiri modul ntọala na iwu ad-hoc enwere ike dị ka egosiri n'okpuru:

# ansible -m setup hostname

Nke a na-egosiputa mmepụta n'ụdị JSON dị ka egosiri:

# ansible -m setup localhost

Site na mmepụta, anyị nwere ike ịhụ na ụfọdụ n'ime ihe atụ nke mgbanwe pụrụ iche nwere ike ịgụnye:

ansible_architecture
ansible_bios_date
ansible_bios_version
ansible_date_time
ansible_machine
ansible_memefree_mb
ansible_os_family
ansible_selinux

Enwere ọtụtụ mgbanwe pụrụ iche nwere ike ime, ndị a bụ naanị ọmụmaatụ ole na ole.

Enwere ike iji mgbanwe ndị a na template Jinja2 dị ka egosiri:

<html>
<center>
   <h1> The hostname of this webserver is {{ ansible_hostname }}</h1>
   <h3> It is running on {{ ansible_os_family}}system </h3>
</center>
</html>

3. Ngbanwe ngwa ahịa

N'ikpeazụ, na ndepụta ahụ, anyị nwere mgbanwe ngwa ahịa nwere ike ime. Ndepụta ngwa ahịa bụ faịlụ n'ụdị INI nwere ndị ọbịa niile nke onye nwere ike jikwaa.

N'ime ngwa ahịa, ị nwere ike kenye mgbanwe na sistemụ nnabata wee jiri ya na akwụkwọ egwuregwu.

[web_servers]

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

Enwere ike ịnọchite anya nke a dị n'elu na faịlụ YAML akwụkwọ egwu dịka egosiri:

---
   web_servers:
     web_server_1:
        ansible_user=centos
	   http_port=80

web_server_2:
        ansible_user=ubuntu
	   http_port=8080

Ọ bụrụ na sistemụ nnabata na-ekerịta otu mgbanwe ahụ, ị nwere ike kọwapụta otu ọzọ na faịlụ ngwa ahịa iji mee ka ọ ghara ịdị njọ ma zere ikwugharị na-enweghị isi.

Ọmụmaatụ:

[web_servers]

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

Enwere ike ịhazi nke dị n'elu dị ka:

[web_servers]
web_server_1
web_server_2


[web_servers:vars]
ansible_user=centos
http_port=80

Na n'akwụkwọ egwuregwu YAML faịlụ, a ga-akọwapụta nke a dịka egosiri:

---
   web_servers:
    
     hosts: 
       web_server_1:
	  web_server_2:

     vars: 
        ansible_user=centos
   http_port=80

Eziokwu nwere ike ime

Mgbe ị na-agba akwụkwọ egwu egwu, ọrụ mbụ nke nwere ike ime bụ ịrụ ọrụ nhazi. Eji m n'aka na ị ga-ahụrịrị nsonaazụ ahụ:

TASK:  [Gathering facts] *********

Eziokwu ndị nwere ike ime abụghị ihe ọ bụla ma ọ bụghị ihe onwunwe sistemụ ma ọ bụ iberibe ozi gbasara ọnụ ọnụ ndị dịpụrụ adịpụ nke ị jikọọ na ya. Ozi a gụnyere nhazi sistemu, ụdị OS, ozi BIOS, oge sistemụ na ụbọchị, oge sistemụ, adreesị IP na ozi ngwaike ịkpọtụ naanị ole na ole.

Iji nweta eziokwu gbasara sistemụ ọ bụla naanị jiri modul ntọala dị ka egosiri na iwu dị n'okpuru:

# ansible -m setup hostname

Ọmụmaatụ:

# ansible -m setup database_server

Nke a na-ebipụta nnukwu data n'ụdị JSON dị ka egosiri:

Eziokwu ndị nwere ike ịnyere aka n'inyere ndị na-ahụ maka sistemụ aka na-arụ ọrụ ha ga-arụ, dịka ọmụmaatụ, dabere na sistemụ arụmọrụ, ha na-enwe ike ịma ngwugwu sọftụwia kwesịrị ịwụnye, yana otu a ga-esi hazie ya, wdg.

Eziokwu Omenala

Ị makwa na ị nwere ike ịmepụta eziokwu omenala nke gị nke Ansible nwere ike ịnakọta? Ee, ị nwere ike. Yabụ kedu ka ị ga-esi mee ya? Ka anyị gbanwee ngwa ngwa ma hụ ka ọ si.

Nzọụkwụ mbụ bụ imepụta ndekọ /etc/ansible/facts.d n'ọnụ ọnụ jisiri ma ọ bụ nke dịpụrụ adịpụ.

N'ime akwụkwọ ndekọ aha a, mepụta faịlụ nwere ndọtị .fact. Faịlụ a ga-eweghachite data JSON mgbe akwụkwọ egwu na-agba na oghere njikwa enwere ike, nke gụnyere eziokwu ndị ọzọ enwere ike iweghachite mgbe akwụkwọ egwuregwu gachara.

Nke a bụ ọmụmaatụ faịlụ eziokwu omenala akpọrọ date_time.fact nke na-ewepụta ụbọchị na oge.

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

Tinye ahịrị ndị a na ya.

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

Chekwaa wee pụọ na faịlụ ahụ.

Ugbu a kenye ikike ime ihe:

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

Ugbu a, emepụtara m akwụkwọ egwuregwu na ọnụ njikwa nwere ike ịkpọ check_date.yml.

---

- hosts: webservers

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

Tinye eziokwu faịlụ na ansible_local variable. Ansible_local na-echekwa eziokwu omenala niile.

Ugbu a megharịa akwụkwọ egwu egwu wee hụ ozi eweghachi nwere ike ịchekwa na faịlụ eziokwu:

# ansible_playbook check_date.yml

Nke a na-ewetara anyị ngwụcha nkuzi a maka ịrụ ọrụ na mgbanwe na eziokwu nwere ike ime.