איך לנהל מכונות וירטואליות עם מודול Ansible EC2 של AWS

כשאתה ניהל כעבר מקררי Amazon Web Service (AWS) EC2, לחיצה סביב לממשק הניהול עובדת טוב. אך ככל שהתשתיות שלך גדלה, ניהול המקררים לוקח זמן רב והופך למורכב. האם ישנה דרך יותר טובה לנהל מקררים? כן! מודול AWS Ansible EC2 יכול לעזור.

במדריך זה, תלמד כיצד מודול ה- Ansible ל- AWS EC2 נותן לך אחיזה חזקה לניהול מקררי AWS EC2 באמצעות גישה המבוססת על דוגמאות.

המשך לקרוא והתחל!

דרישות מוקדמות

מדובר במדריך הכולל הוראות שלב אחר שלב. אם ברצונך למשוך, וודא שיש לך את הדברים הבאים במקום:

  • מארח של Ansible – מדריך זה משתמש ב- Ansible v2.11.7 על מחשב עם Ubuntu 20.04.3 LTS.

וודא שהמשתמש IAM מוגדר לגישה פרוגרמטית ושאתה משייך אותו למדיניות הקיימת של AmazonEC2FullAccess.

  • קובץ מלאי ופחות או יותר מארחים מוגדרים להפעלת פקודות ופלייבוקים של Ansible. המחשב המרוחק הלינוקסי נקרא myserver, ובמדריך זה אנו משתמשים בקבוצת מלאי בשם web.
  • Python v3.6 או גרסה מתקדמת יותר מותקנת על המחשב השלט שלך ועל המכונה המרוחקת. במדריך זה אנו משתמשים ב-Python v3.8.10 על מכונת Ubuntu.
  • מודולי Python boto3 בגרסה גדולה מ-1.15.0 ו-botocore בגרסה גדולה מ-1.18.0 צריכים להיות מותקנים על מארח הבקרת Ansible ועל מכונת הקודם.

יצירת או אתחול מחדש של מופע EC2 עם פקודות Ad Hoc

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

התחבר לבקר ה-Ansible שלך והפעל את הפקודת ansible להתחברות (-m amazon.aws.ec2_instance) למארח (web).

הפקודה מעבירה ארגומנט (-a) שאומר ל-Ansible לאתחל מחדש את מופע EC2 של AWS עם instance_tags=Name=Tag1) באזור us-east-2. כדי לאמת את החיבור לחשבון ה-AWS, אתה מוסיף את פרטי ה-aws_access_key וה-aws_secret_key בפקודה זמנית.

המדריך מבצע את כל הפעולות באזור us-east-2, אך אתה יכול לבצע את אותן פעולות בכל אזור ב- AWS שבחרת.

ansible web -m amazon.aws.ec2 -a " state=restarted instance_tags=Name=Tag1 aws_access_key=AKIAVWOJMI5I2DPXXXX aws_secret_key=F9PaprqnPUn/XXXXXXXXXXXX region=us-east-2"

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

Running an Ad Hoc Command to Restart an Amazon EC2 Instance

הפעלת מופע EC2 עם קובץ ה־Ansible Playbook

למדת כעת כיצד לבצע פקודה אד הוק של Ansible, שזו אפשרות מצוינת לפעולה חד-פעמית! אך אולי תרצה לבצע מספר משימות. אם כן, צור קובץ ה־Ansible playbook שיפעיל מופע EC2 כדי לבצע מספר משימות.

1. פתח את הטרמינל במארח ה־Ansible controller שלך, ואז הפעל את הפקודות הבאות כדי ליצור ספרייה בשם ~/ansible_aws_ec2_module ולהחליף אליה.

הספרייה הזו תכיל את ה־playbook ואת כל קבצי התצורה הנדרשים שתשתמש בהם כדי להפעיל את מודול ה־Ansible AWS EC2.

mkdir ~/ansible_aws_ec2_module
cd ~/ansible_aws_ec2_module

2. לאחר מכן, פתח את עורך הטקסט המועדף עליך, צור קובץ בשם main.yml בתיקיית ~/ansible_aws_ec2_module. מלא את קובץ ה־main.yml בתוכן הבא של playbook YAML.

הקובץ הבא מכיל את המשימה שמפעילה מופע עם כתובת IP ציבורית בתוך VPC מסוימת בחשבון AWS.

מנקודה זו ועד סוף המדריך, החלף את ערכי aws_access_key, aws_secret_key עם שלך.

---
- name: Ansible EC2 instance Launch module demo
# הגדרת שרת רחוק בו מודול ה-EC2 של Ansible ינהל את האובייקטים
  hosts: web
  remote_user: ubuntu # שימוש במשתמש רחוק בשם ubuntu
  tasks:
		# משימה להתחלת מופע AWS EC2 עם כתובת IP ציבורית
    - name: start an instance with a public IP address
      amazon.aws.ec2:
				# הגדרת שם המפתח
        key_name: mykey
				# הגדרת סוג המופע, תמונה, זיהוי תת-רשת VPC, הקצאת כתובת IP ציבורית, אזור AWS
        instance_type: t2.micro
        image: ami-0b9064170e32bde34
        wait: yes
        count: 1
        vpc_subnet_id: subnet-0dc9af4c75ad3e2ee
        assign_public_ip: yes
        aws_region: us-east-2
        aws_access_key: AKIAVWOJMI5XXXXXXXX
        aws_secret_key: F9PaprqnPUn/NP8lzQXXXXXXXXXXXXXXXXXX

3. הפעל את הפקודה להפעלת הפלייבוק (main.yml). הפלייבוק מבצע אזרחות ליצירת מופע חדש באזור us-east-2 עם סוג המופע t2.micro.

ansible-playbook main.yml

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

Executing a Playbook

4. עכשיו, פתח את הדפדפן המועדף עליך והתחבר ל־לוח בקרה של AWS.

5. לבסוף, לחץ על סרגל החיפוש בראש הלוח בקרה, חפש את EC2, ולחץ על פריט התפריט EC2. בעקבות זאת, הדפדפן שלך מופנה לעמוד ה-EC2.

Searching the EC2 service in the AWS account

בעמוד ה-EC2, תראה את המופע שנוצר כעת, כפי שמוצג למטה.

newly created instance

עצירת מספר מופעי AWS EC2

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

1. צור סקריפט Ansible בשם stop.yml והעתק/הדבק את הקוד לתוך הסקריפט.

הסקריפט מעציר שתי מכונות (i-0d8c7eb4eb2c643a1 ו-i-0dbc17a67c0f7577c).

---
- name: Stopping the already Launched EC2 instances using Ansible EC2 Module
# הגדרת השרת המרוחק שבו ינהל מודול EC2 של Ansible את העצמים
  hosts: web
  gather_facts: false
  # שימוש במשתמש מרוחק כ-ubuntu
  remote_user: ubuntu 
  vars:
    instance_ids:
      - 'i-0d8c7eb4eb2c643a1'
      - 'i-0dbc17a67c0f7577c'
    region: us-east-2
  tasks:
    - name: Stopping the already launched AWS EC2 instances
      amazon.aws.ec2:
        instance_ids: '{{ instance_ids }}'
        region: '{{ region }}'
        state: stopped
        wait: True
        vpc_subnet_id: subnet-0dc9af4c75ad3e2ee
        assign_public_ip: yes
        aws_access_key: AKIAVWOJMI5XXXXXXXX
        aws_secret_key: F9PaprqnPUn/NP8lzQXXXXXXXXXXXXXXXXXX

אם אתה מעדיף לסיים את המכונות במקום לעצור אותם, שנה את ערך ה-state ל-absent.

2. הפעל את הפקודה הבאה כדי לבצע את הסקריפט (stop.yml), שיעצור את המכונות שצוינו בסקריפט. ansible-playbook stop.yml

ansible-playbook stop.yml
Executing the Ansible playbook using the ansible-playbook command.

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

Viewing Stopped Instances

יצירת מכונה עם תג, אחסון וניטור של Cloud Watch

אולי יש לך צורך להפעיל את ההתקנה שלך עם רכיבים מתקדמים יותר כמו תיוג, מעקב עם אזהרות CloudWatch, ו- יצירת נפח לאחסון. במקרה כזה, שימוש במודול EC2 של Ansible ב-playbook יעשה את התעוד.

תגיות הן דרך מצוינת לארגן משאבי AWS ולבצע חישובי עלויות יעילים ב- AWS Management Console.

1. צור Playbook חדש שנקרא advanced.yml ומלא אותו עם הקוד למטה.

ה-Playbook למטה ישים בתוך AWS EC2 עם (volumes—> /dev/sdb, מעקב ותיוג של המקרה עם Instance1).

---
- name: Adding Tag, Volumes, and cloud Watch Monitoring to an an instance
  hosts: web
  remote_user: ubuntu
  tasks:
    - name: Adding Tag, Volumes, and cloud Watch Monitoring to an an instance
      amazon.aws.ec2:
        instance_type: t2.micro
        image: ami-0b9064170e32bde34
        vpc_subnet_id: subnet-0dc9af4c75ad3e2ee
        region: us-east-2
        aws_access_key: AKIAVWOJMI5I2DXXXX
        aws_secret_key: F9PaprqnPUn/NP8lzQ5lWjXXXXXXXXXXXXXXXx
				
# יצירת נפחים וצירוף למקרה EC2 של AWS מסוג io1
        volumes:
          - device_name: /dev/sdb
            volume_type: io1
            iops: 1000
            volume_size: 100
				
# הפעלת מעקב CloudWatch
				
# של מקרה EC2 שישורף
        monitoring: yes
				
# תיוג של מקרה EC2 שישורף
        instance_tags:
            Name: Instance1

2. כעת הרץ את הפקודה למטה כדי להפעיל את ה-Playbook (advanced.yml), שישים לתוך מקרה EC2 של AWS עם תיוג, נפח ומעקב CloudWatch. ansible-playbook advanced.yml

ansible-playbook advanced.yml
Executing the Ansible Playbook to Create an Instance with Tag, Volume, and Cloud Watch Monitoring

3. לחץ על לשונית האחסון של המקרה שברצונך לוודא בלוח בקרת AWS EC2. מתחת ל־התקני בלוק, לחץ על מזהה הנפח מהרשימה כדי לראות את המידע המפורט של המקרה.

Verifying the volume created in the AWS account for the AWS EC2 instance.

4. לבסוף, לחץ על לשונית התגים בדף מידע סיכום של המקרה. תראה את התג שהגדרת למקרה בתסריט (שלב אחד), כמו בדוגמה למטה.

Verifying the tags in the AWS account for the AWS EC2 instance.

סיכום

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

עכשיו שיש לך מודעות טובות למודול ה־AWS EC2 של Ansible, האם אתה מוכן לכלול את מודול EC2 של Ansible כחלק מהתהליך שלך לניהול מקרים? אולי תרצה לאוטומטיזציה את המשימה על ידי הוספת עבודה קרונית?

Source:
https://adamtheautomator.com/ansible-ec2/