Bii o ṣe le ṣiṣẹ pẹlu Awọn oniyipada ati Awọn Otitọ-ọrọ - Apá 8


A ti mẹnuba awọn oniyipada ninu jara Ansible yii ati lati kan jog lokan rẹ diẹ. Oniyipada kan, gẹgẹ bi ọpọlọpọ awọn ede siseto, jẹ pataki bọtini ti o duro fun iye kan.

Kini O jẹ Orukọ Oniyipada Yiyi?

Orukọ oniyipada kan pẹlu awọn lẹta, awọn nọmba, awọn iṣẹ abẹ tabi adalu boya 2 tabi gbogbo wọn. Sibẹsibẹ, jẹri ni lokan pe orukọ iyipada kan gbọdọ bẹrẹ nigbagbogbo pẹlu lẹta ati pe ko yẹ ki o ni awọn alafo.

Jẹ ki a wo awọn apẹẹrẹ diẹ ti awọn orukọ oniyipada to wulo ati itẹwẹgba:

football 
foot_ball
football20 
foot_ball20
foot ball
20 
foot-ball

Jẹ ki a jiroro awọn oriṣi oniyipada:

1. Awọn oniyipada Playbook

Awọn oniyipada Playbook jẹ ohun rọrun ati titọ. Lati ṣalaye oniyipada kan ninu iwe-iṣere, kan lo awọn vars koko ki o to kọ awọn oniyipada rẹ pẹlu itọsi.

Lati wọle si iye ti oniyipada naa, gbe si aarin awọn àmúró iyipo meji ti o wa pẹlu awọn ami atokọ.

Eyi ni apẹẹrẹ iwe orin ti o rọrun:

- hosts: all
  vars:
    greeting: Hello world! 

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

Ninu iwe-idaraya ti o wa loke, oniyipada ikini ti rọpo nipasẹ iye Kaabo agbaye! nigbati iwe-ejo ti n sise. Iwe-idaraya naa n tẹjade ifiranṣẹ Kaabo agbaye! nigba pipa.

Ni afikun, o le ni atokọ kan tabi ọpọlọpọ awọn oniyipada bi o ṣe han:

Iwe orin ti o wa ni isalẹ fihan oniyipada kan ti a pe ni awọn kọntin. Oniyipada naa ni awọn iye oriṣiriṣi 5 - awọn orukọ ilẹ-aye. Ọkọọkan ninu awọn iye wọnyi le ni irọrun wọle nipasẹ lilo itọka 0 bi oniyipada akọkọ.

Apẹẹrẹ ti iwe-idaraya ti o wa ni isalẹ gba ati ṣafihan Asia (Atọka 1).

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

Atokọ oniyipada le bakanna ni eleto bi o ti han:

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

Lati ṣe atokọ gbogbo awọn ohun kan lori atokọ, lo module with_items. Eyi yoo ṣe lupu nipasẹ gbogbo awọn iye inu orun.

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

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

Iru omiiran Oniyipada ni iyipada iwe-itumọ.

Awọn oniyipada Dictionary ni atilẹyin ni afikun ni iwe-orin. Lati ṣalaye oniyipada iwe-itumọ, jiroro ni ṣe idanimọ iye iye bọtini ni isalẹ orukọ oniyipada iwe-itumọ.

hosts: switch_f01

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

Ninu apẹẹrẹ loke, awọn vlans jẹ iyipada iwe-itumọ lakoko id ati ibudo jẹ awọn orisii iye-bọtini.

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’]  }}

Fun port_id, niwọn igba ti a n bẹrẹ iye pẹlu ọrọ kii ṣe oniyipada, awọn ami atokọ ko ṣe pataki lati yi awọn àmúró diduro.

2. Awọn oniyipada pataki

Ansible pese atokọ ti awọn oniyipada ti a ti pinnu tẹlẹ ti o le ṣe itọkasi ni awọn awoṣe Jinja2 ati awọn iwe-iṣere ṣugbọn ko le yipada tabi ṣalaye nipasẹ olumulo.

Ni akojọpọ, atokọ ti awọn oniyipada tẹlẹ ti a ṣalaye tọka si tọka si awọn otitọ to daju ati pe awọn wọnyi ni a kojọ nigbati o ba ṣiṣẹ iwe-orin kan.

Lati gba atokọ ti gbogbo awọn oniyipada Ansible, lo modulu iṣeto ni aṣẹ Ans-ad-hoc bi a ṣe han ni isalẹ:

# ansible -m setup hostname

Eyi ṣe afihan iṣẹjade ni ọna JSON bi o ṣe han:

# ansible -m setup localhost

Lati iṣẹjade, a le rii pe diẹ ninu awọn apẹẹrẹ ti awọn oniyipada pataki Ansible pẹlu:

ansible_architecture
ansible_bios_date
ansible_bios_version
ansible_date_time
ansible_machine
ansible_memefree_mb
ansible_os_family
ansible_selinux

Ọpọlọpọ awọn oniyipada pataki Ansible miiran wọnyi wa ni awọn apẹẹrẹ diẹ.

Awọn oniyipada wọnyi le ṣee lo ninu awoṣe Jinja2 bi o ṣe han:

<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. Awọn oniyipada Ọja

Ni ikẹhin, lori atokọ naa, a ni Awọn oniyipada akojopo Ansible. Akojọpọ jẹ faili kan ni ọna kika INI ti o ni gbogbo awọn ọmọ-ogun lati ṣakoso nipasẹ Ansible.

Ninu awọn akojo-ọja, o le fi oniyipada kan si eto alejo ati lo nigbamii ninu iwe-idaraya kan.

[web_servers]

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

Eyi ti o wa loke le ṣe aṣoju ni faili YAML iwe-orin bi o ti han:

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

web_server_2:
        ansible_user=ubuntu
	   http_port=8080

Ti awọn eto ile-iṣẹ ba pin awọn oniyipada kanna, o le ṣalaye ẹgbẹ miiran ninu faili akojọ-ọja lati jẹ ki o dinku ju ati yago fun atunwi ti ko ni dandan.

Fun apere:

[web_servers]

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

A le ṣe agbekalẹ loke bi:

[web_servers]
web_server_1
web_server_2


[web_servers:vars]
ansible_user=centos
http_port=80

Ati ninu faili YAML iwe-iṣere, eyi yoo ṣalaye bi o ti han:

---
   web_servers:
    
     hosts: 
       web_server_1:
	  web_server_2:

     vars: 
        ansible_user=centos
   http_port=80

Awọn Otitọ Gidi

Nigbati o ba n ṣiṣẹ awọn iwe-idaraya, iṣẹ-ṣiṣe akọkọ ti Ansible ṣe ni ipaniyan ti iṣẹ iṣeto. O da mi loju pe o gbọdọ ti wa kọja iṣẹjade:

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

Awọn otitọ to daju kii ṣe nkankan bikoṣe awọn ohun-ini eto tabi awọn ege alaye nipa awọn apa latọna jijin ti o ti sopọ si. Alaye yii pẹlu faaji Eto, ẹya OS, alaye BIOS, akoko eto ati ọjọ, igbesoke eto, adiresi IP, ati alaye hardware lati sọ diẹ diẹ.

Lati gba awọn otitọ nipa eyikeyi eto nirọrun lo module iṣeto bi o ti han ninu aṣẹ ni isalẹ:

# ansible -m setup hostname

Fun apere:

# ansible -m setup database_server

Eyi tẹ jade data nla ni ọna JSON bi o ṣe han:

Awọn otitọ to daju jẹ ọwọ ni iranlọwọ awọn alakoso eto eyiti awọn iṣẹ lati ṣe, fun apẹẹrẹ, da lori ẹrọ ṣiṣe, wọn ni anfani lati mọ iru awọn idii sọfitiwia ti o nilo lati fi sori ẹrọ, ati bi wọn ṣe le tunto, ati bẹbẹ lọ.

Awọn Otitọ Aṣa

Njẹ o tun mọ pe o le ṣẹda awọn otitọ aṣa tirẹ ti o le ṣajọ nipasẹ Ansible? Beeni o le se. Nitorina bawo ni o ṣe le ṣe nipa rẹ? Jẹ ki a yipada awọn jia ki o wo bi.

Igbesẹ akọkọ ni lati ṣẹda itọsọna /etc/ansible/facts.d lori iṣakoso tabi oju ipade latọna jijin.

Ninu inu itọsọna yii, ṣẹda faili kan (s) pẹlu itẹsiwaju .fact . Faili (s) yii yoo da data JSON pada nigbati iwe-iṣere ṣiṣẹ lori oju ipade iṣakoso Ansible, eyiti o wa pẹlu awọn otitọ miiran ti Ansible gba pada lẹyin ṣiṣe iwe-idaraya kan.

Eyi ni apẹẹrẹ ti faili otitọ aṣa ti a pe ni date_time.fact ti o gba ọjọ ati akoko.

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

Ṣafikun awọn ila wọnyi ninu rẹ.

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

Fipamọ ki o jade kuro ni faili naa.

Bayi fi awọn igbanilaaye ṣiṣẹ:

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

Nisisiyi, Mo ṣẹda iwe-idaraya lori oju ipade iṣakoso Ansible ti a pe ni check_date.yml.

---

- hosts: webservers

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

Fi faili otitọ si oniyipada ansible_local. Awọn ile itaja ansible_local wa gbogbo awọn otitọ aṣa.

Bayi ṣiṣe iwe-orin ki o ṣe akiyesi alaye gbigba alaye Ansible ti o fipamọ sori faili otitọ naa:

# ansible_playbook check_date.yml

Eyi mu wa de opin ikẹkọ yii lori ṣiṣẹ pẹlu Awọn oniyipada Ansitọ ati awọn otitọ.