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ọ.