Jinsi ya Kufanya Kazi kwa Vigezo Vinavyofaa na Ukweli - Sehemu ya 8
Tumetaja vigeu katika mfululizo huu wa Ansible na ili tu kuchezesha akili yako kidogo. Tofauti, kama ilivyo katika lugha nyingi za programu, kimsingi ni ufunguo unaowakilisha thamani.
Nini Hujumuisha Jina Sahihi la Kigeu?
Jina badilifu linajumuisha herufi, nambari, mistari chini au mchanganyiko wa 2 au zote. Hata hivyo, kumbuka kwamba jina la kutofautiana lazima daima lianze na barua na haipaswi kuwa na nafasi.
Wacha tuangalie mifano michache ya majina ya kutofautisha halali na yasiyokubalika:
football foot_ball football20 foot_ball20
foot ball 20 foot-ball
Wacha tujadili aina tofauti:
1. Vigezo vya Kitabu cha kucheza
Vigezo vya Playbook ni rahisi sana na moja kwa moja. Ili kufafanua lahaja katika kitabu cha kucheza, tumia tu neno msingi vars kabla ya kuandika vigeu vyako kwa ujongezaji.
Ili kufikia thamani ya kutofautiana, kuiweka kati ya braces mbili za curly zilizofungwa na alama za nukuu.
Hapa kuna mfano rahisi wa kitabu cha kucheza:
- hosts: all vars: greeting: Hello world! tasks: - name: Ansible Basic Variable Example debug: msg: "{{ greeting }}"
Katika kitabu cha kucheza kilicho hapo juu, kigezo cha salamu kinabadilishwa na thamani ya Hello world! wakati kitabu cha kucheza kinaendeshwa. Kitabu cha kucheza huchapisha kwa urahisi ujumbe Hello world! inapotekelezwa.
Kwa kuongeza, unaweza kuwa na orodha au safu ya anuwai kama inavyoonyeshwa:
Kitabu cha kucheza hapa chini kinaonyesha kigezo kinachoitwa mabara. Tofauti inashikilia maadili 5 tofauti - majina ya bara. Kila moja ya maadili haya yanaweza kupatikana kwa urahisi kwa kutumia index 0 kama kigezo cha kwanza.
Mfano wa kitabu cha kucheza hapa chini hurejesha na kuonyesha Asia (Fahirisi 1).
- hosts: all vars: continents: - Africa - Asia - South America - North America - Europe tasks: - name: Ansible List variable Example debug: msg: "{{ continents [1] }}"
Orodha ya kutofautisha inaweza pia kupangwa kama inavyoonyeshwa:
vars: Continents: [Africa, Asia, South America, North America, Europe]
Ili kuorodhesha vipengee vyote kwenye orodha, tumia moduli ya with_items. Hii itapitia maadili yote kwenye safu.
- hosts: all vars: continents: [Africa, Asia, South America, North America, Europe] tasks: - name: Ansible array variables example debug: msg: "{{ item }}" with_items: - "{{ continents }}"
Aina nyingine ya kutofautiana kwa Ansible ni kutofautiana kwa kamusi.
Vigezo vya kamusi vinaauniwa pia katika kitabu cha kucheza. Ili kufafanua utofauti wa kamusi, tambua kwa urahisi jozi ya thamani ya ufunguo chini ya jina la kutofautisha la kamusi.
hosts: switch_f01 vars: http_port: 8080 default_gateway: 10.200.50.1 vlans: id: 10 port: 2
Katika mfano ulio hapo juu, vlans ni kigezo cha kamusi wakati kitambulisho na bandari ni jozi za thamani-msingi.
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’] }}
Kwa port_id, kwa kuwa tunaanza thamani kwa maandishi na sio kutofautisha, alama za nukuu sio lazima kuzunguka viunga vilivyopinda.
2. Vigezo Maalum
Ansible hutoa orodha ya vigeu vilivyoainishwa awali ambavyo vinaweza kurejelewa katika violezo na vitabu vya kucheza vya Jinja2 lakini haviwezi kubadilishwa au kubainishwa na mtumiaji.
Kwa pamoja, orodha ya viambajengo vilivyobainishwa awali vinarejelewa kama Mambo Yanayofaa na haya hukusanywa wakati kitabu cha kucheza kinapotekelezwa.
Ili kupata orodha ya anuwai zote Zinazofaa, tumia moduli ya usanidi katika Ansible ad-hoc amri kama inavyoonyeshwa hapa chini:
# ansible -m setup hostname
Hii inaonyesha matokeo katika umbizo la JSON kama inavyoonyeshwa:
# ansible -m setup localhost
Kutoka kwa matokeo, tunaweza kuona kwamba baadhi ya mifano ya Vigezo maalum vya Ansible ni pamoja na:
ansible_architecture ansible_bios_date ansible_bios_version ansible_date_time ansible_machine ansible_memefree_mb ansible_os_family ansible_selinux
Kuna vigezo vingine vingi vya Ansible hii ni mifano michache tu.
Vigezo hivi vinaweza kutumika katika kiolezo cha Jinja2 kama inavyoonyeshwa:
<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. Vigezo vya Mali
Mwishowe, kwenye orodha, tunayo anuwai za hesabu zinazofaa. Orodha ni faili katika umbizo la INI ambalo lina seva pangishi zote zinazopaswa kusimamiwa na Ansible.
Katika orodha, unaweza kugawa kigezo kwa mfumo wa mwenyeji na baadaye uitumie kwenye kitabu cha kucheza.
[web_servers] web_server_1 ansible_user=centos http_port=80 web_server_2 ansible_user=ubuntu http_port=8080
Yaliyo hapo juu yanaweza kuwakilishwa katika kitabu cha kucheza faili ya YAML kama inavyoonyeshwa:
--- web_servers: web_server_1: ansible_user=centos http_port=80 web_server_2: ansible_user=ubuntu http_port=8080
Ikiwa mifumo ya seva pangishi inashiriki vigezo sawa, unaweza kufafanua kundi lingine katika faili ya hesabu ili kuifanya iwe ya shida na kuepuka marudio yasiyo ya lazima.
Kwa mfano:
[web_servers] web_server_1 ansible_user=centos http_port=80 web_server_2 ansible_user=centos http_port=80
Yaliyomo hapo juu yanaweza kupangwa kama ifuatavyo:
[web_servers] web_server_1 web_server_2 [web_servers:vars] ansible_user=centos http_port=80
Na katika kitabu cha kucheza faili ya YAML, hii itafafanuliwa kama inavyoonyeshwa:
--- web_servers: hosts: web_server_1: web_server_2: vars: ansible_user=centos http_port=80
Mambo Yanayofaa
Wakati wa kuendesha vitabu vya kucheza, kazi ya kwanza ambayo Ansible hufanya ni utekelezaji wa kazi ya usanidi. Nina hakika kuwa lazima umepata matokeo:
TASK: [Gathering facts] *********
Ukweli unaowezekana sio chochote ila sifa za mfumo au vipande vya habari kuhusu nodi za mbali ambazo umeunganisha. Maelezo haya yanajumuisha usanifu wa Mfumo, toleo la Mfumo wa Uendeshaji, maelezo ya BIOS, saa na tarehe ya mfumo, saa ya juu ya mfumo, anwani ya IP, na maelezo ya maunzi kutaja machache tu.
Ili kupata ukweli juu ya mfumo wowote tumia tu moduli ya usanidi kama inavyoonyeshwa kwenye amri hapa chini:
# ansible -m setup hostname
Kwa mfano:
# ansible -m setup database_server
Hii inachapisha seti kubwa ya data katika umbizo la JSON kama inavyoonyeshwa:
Mambo yanayoeleweka yanafaa katika kuwasaidia wasimamizi wa mfumo ambao shughuli za kufanya, kwa mfano, kulingana na mfumo wa uendeshaji, wanaweza kujua ni vifurushi vipi vya programu vinavyohitaji kusakinishwa, na jinsi vinapaswa kusanidiwa, nk.
Desturi Ukweli
Je, unajua pia kwamba unaweza kuunda ukweli wako binafsi ambao unaweza kukusanywa na Ansible? Ndio unaweza. Kwa hivyo unaifanyaje? Hebu tubadilishe gia tuone jinsi gani.
Hatua ya kwanza ni kuunda saraka /etc/ansible/facts.d kwenye nodi inayosimamiwa au ya mbali.
Ndani ya saraka hii, tengeneza faili ukitumia kiendelezi cha .fact
. Faili hizi zitarejesha data ya JSON wakati kitabu cha kucheza kinaendeshwa kwenye nodi ya udhibiti Inayowezekana, ambayo inajumuisha mambo mengine ambayo Ansible hupata baada ya kitabu cha kucheza kukimbia.
Huu hapa ni mfano wa faili maalum ya ukweli inayoitwa date_time.fact ambayo hurejesha tarehe na saa.
# mkdir -p /etc/ansible/facts.d # vim /etc/ansible/facts.d/date_time.fact
Ongeza mistari ifuatayo ndani yake.
#!/bin/bash DATE=`date` echo "{\"date\" : \"${DATE}\"}"
Hifadhi na uondoke faili.
Sasa toa ruhusa za kutekeleza:
# chmod +x /etc/ansible/facts.d/date_time.fact
Sasa, nimeunda kitabu cha kucheza kwenye nodi ya kudhibiti Ansible inayoitwa check_date.yml.
--- - hosts: webservers tasks: - name: Get custom facts debug: msg: The custom fact is {{ansible_local.date_time}}
Ongeza faili ya ukweli kwa kigezo cha ansible_local. Ansible_local huhifadhi ukweli wote maalum.
Sasa endesha kitabu cha kucheza na uangalie Ansible retrieping information iliyohifadhiwa kwenye faili ya ukweli:
# ansible_playbook check_date.yml
Hii inatuleta hadi mwisho wa somo hili la kufanya kazi na viambajengo vinavyofaa na ukweli.