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 תודבועו םינתשמ םע הדובע לע וז הכרדה ףוסל ונתוא איבמ הז