8 קלח - םישיגנה תודבועו םינתשמ םע דובעל דציכ


.ךרע גציימה חתפמ השעמל אוה ,תובר תונכת תופשב ומכ קוידב ,הנתשמ .ךתעד תא טעמ ץורל ידכ קרו Ansible לש וז הרדסב םינתשמ ונרכזה

?ףקת הנתשמ םש הווהמ המ

.םיחוור ליכהל רומא אלו תואב דימת ליחתהל בייח הנתשמ םש יכ רוכז ,תאז םע .םלוכ וא םהינש לש בוליש וא ןותחת וק ,םירפסמ ,תויתוא ללוכ הנתשמ םש

:םילבוקמ יתלבו םיפקת םינתשמ תומשל תואמגוד המכ לע לכתסנ ואוב

football 
foot_ball
football20 
foot_ball20
foot ball
20 
foot-ball

:םינתשמה יגוסב ןודנ ואוב

םירפס ינתשמ .1

.הסינכ םע ךלש םינתשמה תא בתוכ התאש ינפל vars חתפמה תלימב שמתשה טושפ ,העמשה תרבוחב הנתשמ רידגהל ידכ .םיטושפו םילק יד םה Playbook ינתשמ

.תואכרממ תבכרומה תלתלותמה תלופכה הטלפה ןיב ותוא םקמ ,הנתשמה ךרעל תשגל ידכ

:תולעפה רפסל הטושפ המגוד הנה

- hosts: all
  vars:
    greeting: Hello world! 

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

.גרוהל םיאצומשכ !םלוע םולש העדוהה תא סיפדמ טושפ קחשמה רפס .לעפומ הלעפהה רפס רשאכ !םלוע םולש ךרעב ףלחומ הכרבה הנתשמ ,ליעלש העמשהה רפסב

:גצומכ םינתשמ ךרעמ וא המישר גיצהל לכות ,ףסונב

.ןושארה הנתשמכ 0 סקדניא תועצמאב תולקב וללה םיכרעהמ דחא לכל תשגל ןתינ .תושבי תומש - םינוש םיכרע 5 ליכמ הנתשמה .תושבי ארקנה הנתשמ גיצמ הטמלש קחשמה רפס

.(1 סקדניא) היסא תא הגיצמו תרזחאמ הטמלש קחשמה תרבוח לש המגודה

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

:גצומש יפכ םינתשמה תמישר תא תונבל ןתינ המוד ןפואב

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

.ךרעמב םיכרעה לכ ןיב רובעי הז .with_items לודומב שמתשה ,המישרב םיטירפה לכ תא םושרל ידכ

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

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

.ינולימה הנתשמה אוה Ansible הנתשמ לש רחא גוס

.ינולימה הנתשמה םשל תחתמ שממ חתפמה יכרע דמצ תא ההז טושפ ,ןולימה הנתשמ תא רידגהל ידכ .הלעפהה רפסב ףסונב םיכמתנ ןולימ ינתשמ

hosts: switch_f01

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

.חתפמה ךרע ידמצ םה port -ו id -ש דועב ינולימה הנתשמה אוה vlans ,ליעל המגודב

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

.תלתלותמה הטלפה תא ףיקהל ידכ תואכרמב ךרוצ ןיא ,הנתשמה םע אלו טסקט םע ךרעה תא םיליחתמ ונחנאש ןוויכמ ,port_id רובע

םידחוימ םינתשמ .2

Ansible םתוא רידגהל וא תונשל לוכי וניא שמתשמה ךא ,ה'גני'ג לש הלעפה ירפסבו תוינבתב סחייתהל ןתינ םהילא שארמ םירדגומ םינתשמ לש המישר קפסמ.

.תורבוח רפס עוציב תעב םיפסאנ הלאו הבוגתל תונתינה תודבוע הנוכמ Ansible לש שארמ ורדגוהש םינתשמה תמישר ,יביטקלוק ןפואב

:ןלהל גצומכ Ansible ad-hoc הדוקפב הנקתהה לודומב שמתשה ,Ansible לש םינתשמה לכ לש המישר לבקל ידכ

# ansible -m setup hostname

:גצומש יפכ JSON טמרופב טלפה תא גיצמ הז

# ansible -m setup localhost

:םיללוכ Ansible לש םידחוימ םינתשמל תואמגודהמ קלחש תוארל םילוכי ונא טלפהמ

ansible_architecture
ansible_bios_date
ansible_bios_version
ansible_date_time
ansible_machine
ansible_memefree_mb
ansible_os_family
ansible_selinux

.תואמגוד המכ קר הלא .Ansible לש םידחוימ םינתשמ הברה דוע םנשי

:גצומכ Jinja2 תינבתב הלא םינתשמב שמתשהל ןתינ

<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

.Ansible ידי לע לוהינל םיחראמה לכ תא ליכמה INI טמרופב ץבוק אוה יאלמ .Ansible לש יאלמ ינתשמ ונל שי ,המישרב ,ףוסבל

.הלעפה רפסב וב שמתשהל ךשמהבו תחראמ תכרעמל הנתשמ תוצקהל ולכות יאלמב

[web_servers]

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

:גצומכ קביילפ לש YAML ץבוקב ליעל רומאה תא גצייל ןתינ

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

web_server_2:
        ansible_user=ubuntu
	   http_port=8080

.תרתוימ הרזחמ ענמיהלו תלברוסמ תוחפל התוא ךופהל ידכ יאלמה ץבוקב תרחא הצובק רידגהל ולכות ,םינתשמה םתוא תא תוקלוח חראמה תוכרעמ םא

:המגודל

[web_servers]

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

:כ ליעל רומאה תא תונבל ןתינ

[web_servers]
web_server_1
web_server_2


[web_servers:vars]
ansible_user=centos
http_port=80

:גצומכ רדגוי הז ,לפיילפה לש YAML -ה ץבוקבו

---
   web_servers:
    
     hosts: 
       web_server_1:
	  web_server_2:

     vars: 
        ansible_user=centos
   http_port=80

תוארנ תודבוע

:טלפב תלקתנ חטבש חוטב יד ינא .הנקתהה תמישמ עוציב איה השוע Ansible -ש הנושארה המישמה ,יילפ תורבוח תלעפה תעב

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

.םירכזומ םהמ המכ קר ,הרמוחה עדימו IP -ה תבותכ ,תכרעמה לש תוליעפה ןמז ,תכרעמה ךיראתו ןמז ,BIOS -ה עדימ ,הלעפהה תכרעמ תסרג ,תכרעמה תרוטקטיכרא תא ללוכ הז עדימ .תרבחתה םהילא םיקחורמ םיתמצ לע ע

:הטמל הדוקפב גצומש יפכ הנקתהה לודומב שמתשה טושפ תכרעמ לכ לע תודבועה תא לבקל ידכ

# ansible -m setup hostname

:המגודל

# ansible -m setup database_server

:גצומש יפכ JSON טמרופב םינותנ לש הלודג הצובק סיפדמ הז

.' וכו ןתוא רידגהל דציכו ןיקתהל ךירצ הנכות תוליבח וליא תעדל םילגוסמ םה ,הלעפהה תכרעמל םאתהב ,לשמל ,עצבל תולועפ וליא תכרעמה ילהנמל עייסל תוישומיש ןה שומישה תורב תודבוע

תישיא תומאתומ תודבוע

.ךיא הארנו ךוליה ריבענ ואוב ?הז תא תושעל רשפא ךיא זא .לוכי התא ןכ ?Ansible ידי לע ףוסאל ןתינש ךלשמ תישיא תומאתומ תודבוע רוציל לוכי התאש תעדי םאה

.קחורמה וא להונמה תמוצב etc/ansible/facts.d/ היירפס רוציל אוה ןושארה בלשה

.העמשה תרבוח תלעפה רחאל רזחאמ Ansible -ש תורחאה תודבועה תא תללוכה ,Ansible הרקבה תמוצ לע תלעפומ הלעפהה תרבוח רשאכ JSON ינותנ וריזחי הלא םיצבק . .fact תמויס םע ץבוק רוצ ,וז הי

.העשו ךיראת רזחאמה date_time.fact םשב תישיא םאתומ תודבוע ץבוקל המגוד הנה

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

.תואבה תורושה תא ףסוה

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

.ץבוקהמ אציו רומש

:עוציבה תואשרה תא הצקה תעכ

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

.check_date.yml םשב Ansible הרקבה תמוצב העמשה תרבוח יתרצי תעכ

---

- hosts: webservers

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

.תישיא תומאתומה תודבועה לכ תא ןסחאמ ansible_local. Ansible_local הנתשמל תודבועה ץבוק תא ףסוה

:הדבועה ץבוק לע רומשל ןתינש עדימ רוזחאב הפצו העמשהה תרבוח תא לעפה וישכע

# ansible_playbook check_date.yml

.Ansible תודבועו םינתשמ םע הדובע לע וז הכרדה ףוסל ונתוא איבמ הז