كيفية إدارة الآلات الافتراضية مع وحدة EC2 AWS لـ Ansible

عند إدارة حالات 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 أو أحدث على مضيف التحكم Ansible وجهاز العقدة البعيد. يستخدم هذا البرنامج التعليمي Python v3.8.10 على جهاز Ubuntu.
  • يجب تثبيت وحدتي boto3 بإصدار أعلى من 1.15.0 و botocore بإصدار أعلى من 1.18.0 على مضيف تحكم Ansible وجهاز العقدة البعيدة.

إنشاء أو إعادة تشغيل مثيل EC2 بواسطة أوامر Ad Hoc

إذا كنت تخطط لإنشاء أو إعادة تشغيل مثيل EC2 واحد فقط في حساب AWS ، فإن تشغيل أوامر Ad Hoc سيكون كافيًا. تعتبر الأوامر Ad Hoc وسيلة سريعة وفعالة لتشغيل أمر واحد لإنشاء مثيل EC2 أو تعديل نوع مثيل EC2 في AWS.

سجل الدخول إلى جهاز التحكم Ansible الخاص بك وقم بتشغيل الأمر ansible التالي للاتصال (-m amazon.aws.ec2_instance) بالمضيف (web).

يمر الأمر وسيطة (-a) تخبر Ansible بإعادة تشغيل مثيل AWS EC2 بـ instance_tags=Name=Tag1) في منطقة us-east-2. للمصادقة على الاتصال بحساب AWS ، يجب إضافة تفاصيل aws_access_key و aws_secret_key في الأمر Ad Hoc.

يقوم البرنامج التعليمي بتنفيذ جميع الإجراءات في منطقة 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"

بمجرد اكتمال الأمر ، سترى رسالة CHANGED كما هو موضح أدناه ، والتي تؤكد أن Ansible نجح في إعادة تشغيل مثيل AWS EC2 بنجاح.

Running an Ad Hoc Command to Restart an Amazon EC2 Instance

تشغيل مثيل EC2 باستخدام ملف تشغيل Ansible

لقد تعلمت للتو كيفية تنفيذ أمر Ansible الفوري ، وهو رائع لإجراء مرة واحدة! ولكن ربما تحتاج إلى أداء مهام متعددة. إذا كان الأمر كذلك ، قم بإنشاء ملف تشغيل Ansible سيتم من خلاله تشغيل مثيل EC2 لتنفيذ مهام متعددة.

1. افتح الطرفية في مضيف تحكم Ansible الخاص بك ، ثم قم بتشغيل الأوامر التالية لإنشاء دليل يسمى ~/ansible_aws_ec2_module والتبديل إلى هذا الدليل.

سيحتوي هذا الدليل على الملف التشغيل وجميع الملفات التكوين المطلوبة التي ستستخدمها لاستدعاء وحدة Ansible AWS EC2.

mkdir ~/ansible_aws_ec2_module
cd ~/ansible_aws_ec2_module

2. بعد ذلك ، افتح محرر النص المفضل لديك ، وأنشئ ملفًا يسمى main.yml في الدليل ~/ansible_aws_ec2_module. قم بملء محتويات الملف main.yml بمحتويات ملف YAML التالية.

يحتوي الملف التشغيل أدناه على المهمة التي تبدأ مثيلًا بعنوان IP عام داخل VPC معينة في حساب AWS.

من هذه النقطة في جميع أنحاء البرنامج التعليمي ، استبدل قيم aws_access_key ، aws_secret_key بقيمك الخاصة.

---
- name: Ansible EC2 instance Launch module demo
# تعريف الخادم البعيد الذي سيدير وحدة أنسيبل EC2 الكائنات
  hosts: web
  remote_user: ubuntu # استخدام المستخدم البعيد كـ أوبونتو
  tasks:
		# مهمة بدء مثيل AWS EC2 بعنوان IP عام
    - name: start an instance with a public IP address
      amazon.aws.ec2:
				# تعيين اسم المفتاح 
        key_name: mykey
				# تحديد نوع النسخة، الصورة، معرف الشبكة الظاهرية، تعيين عنوان 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

فيما يلي، يمكنك أن ترى أن بعض المهام تظهر حالة تم تغييرها، مما يشير إلى أن أنسيبل قام بإنشاء المثيل بنجاح وقام بتعديل حالة المهمة لتنفيذ الأمر. بالمقابل، ترى حالة حسن لأن بعض المهام لا تحتاج إلى تغييرات.

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. حدد معرفات الحالة وأعلن القيم في مهمة لتعيين سلوك وحدة Ansible EC2 AWS في إيقاف تشغيل الحالات.

1. أنشئ كتاب سيناريو Ansible بالاسم stop.yml وانسخ/الصق الشفرة أدناه إلى الكتاب سيناريو.

يتوقف الكتاب سيناريو التالي عن تشغيل حالتين (i-0d8c7eb4eb2c643a1 و i-0dbc17a67c0f7577c).

---
- name: Stopping the already Launched EC2 instances using Ansible EC2 Module
# تعريف الخادم البعيد الذي ستديره وحدة Ansible EC2 الكائنات
  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 وإنشاء حجم لأغراض التخزين. في هذه الحالة ، سيؤدي استخدام وحدة Ansible EC2 AWS في كتاب سينجز الغرض.

العلامات هي طريقة ممتازة لتنظيم موارد AWS وإجراء حسابات تكلفة كفؤة للموارد في واجهة تحكم إدارة AWS.

1. قم بإنشاء كتاب Ansible جديد بالاسم advanced.yml واملأ الكتاب بالكود أدناه.

سيقوم الكتاب أدناه بإطلاق مثيل AWS EC2 مع (volumes—> /dev/sdb) ، ومراقبة المثيل باستخدام cloud watch، ووضع العلامة على المثيل بـ 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
				
# إنشاء الأقراص وربطها بمثيل AWS EC2 من النوع io1

        volumes:
          - device_name: /dev/sdb
            volume_type: io1
            iops: 1000
            volume_size: 100
				
# تمكين مراقبة cloud watch

				
# لمثيل AWS EC2 الذي سيتم إطلاقه

        monitoring: yes
				
# وضع العلامة على مثيل AWS EC2 الذي سيتم إطلاقه

        instance_tags:
            Name: Instance1

2. قم الآن بتشغيل الأمر أدناه لتنفيذ الكتاب (advanced.yml) ، والذي سيقوم بإطلاق مثيل AWS EC2 مع العلامة والحجم ومراقبة 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 مثل إعادة التشغيل وإنهاء العملية وإضافة العلامات ، وما إلى ذلك.

الآن بعد أن لديك معرفة سليمة حول وحدة Ansible AWS EC2 ، هل ترغب في جعل وحدة Ansible EC2 AWS جزءًا من روتين إدارة النسخ الخاصة بك؟ ربما ترغب في أتمتة المهمة من خلال إضافة وظيفة cron؟

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