هل يمكننا تعيين أسماء مضيفين سهلة التذكر لمثيلات EC2؟

StackOverflow https://stackoverflow.com/questions/603351

  •  03-07-2019
  •  | 
  •  

سؤال

أقوم بتشغيل اثنين من مثيلات Fedora القياسية على EC2.أشعر أن أسماء المضيفين العامة للمثيلات التي خصصتها أمازون غريبة جدًا ويصعب تذكرها.أرغب في تغييرها إلى شيء قصير (مثل الأحمر/الأزرق/الأخضر/إلخ).

هل هناك أي عيب في القيام بذلك؟وكيف أقوم بإعداده بحيث يستمر بعد إعادة التشغيل؟

شكرًا.

هل كانت مفيدة؟

المحلول

قبل أن تبدأ، حاول الركض hostname و hostname --fqdn ولاحظ ما هي الردود.

يمكنك التعديل /etc/hostname وقم بتعيين اسم المضيف، والذي سيظل موجودًا بعد إعادة التشغيل.يمكنك فرض "إعادة تحميل" اسم المضيف باستخدام hostname -F /etc/hostname لقراءة تلك القيمة في اسم المضيف.سوف تتغير مطالبة bash بعد تسجيل الخروج وتسجيل الدخول.

تحذير / ملاحظة:
نعم، من الجيد أن يتم تعيين اسم المضيف في موجه bash على شيء أكثر فائدة من ip-123-123-123-123 لكنني قررت ترك اسم المضيف (على الأقل في الوقت الحالي) لأنه يبدو أن الكثير من الأشياء تعتمد حقًا على تعيين اسم المضيف في مثيلات ec2 بطريقة قياسية.بعد التحرير /etc/hostname وتغيير اسم المضيف إلى webserver يبدو أن الكثير من الخدمات تفشل بسبب عدم حل اسم المضيف، ولن يبدأ Apache.التالي قمت بتحريره /etc/hosts وأضاف في

127.0.0.1 webserver

كالخط الثاني.سيبدأ Apache بعد ذلك ولكنه اشتكى من عدم تمكنه من العثور على FQDN.وأكدت أن تشغيل hostname --fqdn لم تعد تعمل.

بعد ذلك استشرت man hostname وعلمت أنه بينما يمكنك ضبط hostname يبدو أن FQDN هو ما يتم إرجاعه عبر بحث DNS.

النطاق المؤهل بالكامل

لا يمكنك تغيير FQDN (كما تم إرجاعه بواسطة hostname --fqdn) أو اسم مجال DNS (كما تم إرجاعه بواسطة dnsdomainname) باستخدام هذا الأمر.FQDN الخاص بالنظام هو الاسم الذي يُرجعه المحلل (3) لاسم المضيف.

من الناحية الفنية:FQDN هو الاسم الذي يُرجعه getaddrinfo(3) لاسم المضيف الذي تم إرجاعه بواسطة gethostname(2).اسم مجال DNS هو الجزء الذي يلي النقطة الأولى.

لذلك يعتمد الأمر على كيفية تغييره (عادةً في /etc/host.conf).عادةً (إذا تم تحليل ملف المضيفين قبل DNS أو NIS) يمكنك تغييره في /etc/hosts.

أعتقد أنه قد يكون من الممكن ضبط النظام/خداع النظام لإرجاع FQDN، شيء من هذا القبيل ip-123-123-123-123.ec2.internal على الرغم من أن اسم المضيف هو webserver ولكن في هذه المرحلة، بدأ الأمر يبدو وكأنه مشكلة أكثر مما يستحق، وبالنسبة لي، فإن الحصول على مطالبة bash أفضل قد يسبب الكثير من مشكلات البرامج والتكوين في المستقبل ولذلك قررت الاستسلام.

تعلمت أيضًا أن الكثير من مثيلات Amazon ec2 تستخدم شيئًا يسمى cloud-init:

cloud-init هي حزمة Ubuntu التي تتعامل مع التهيئة المبكرة لمثيل السحابة.تم تثبيته في Ubuntu Cloud Images وأيضًا في صور Ubuntu الرسمية المتوفرة على EC2.

بعض الأشياء التي يقوم بتكوينها هي:

  • تحديد لغة افتراضية
  • تحديد اسم المضيف
  • إنشاء مفاتيح ssh الخاصة
  • إضافة مفاتيح ssh إلى .ssh/authorized_keys للمستخدم حتى يتمكنوا من تسجيل الدخول
  • إعداد نقاط التثبيت المؤقتة

يمكن تكوين سلوك cloud-init عبر بيانات المستخدم.يمكن للمستخدم تقديم بيانات المستخدم في وقت إطلاق المثيل.يتم ذلك عبر وسيطة --user-data أو --user-data-file لمثيلات ec2-run-instances

لقد وجدت هذا أيضا والذي يتحدث عن كيفية تكوين اسم المضيف باستخدام cloud-init:

في مثيلات EBS، سينتهي الأمر بإيقاف التشغيل والبدء لاحقًا بعنوان IP مختلف.

في حالة عدم قيام المستخدم بتعديل /etc/hostname من قيمته الأصلية (المصنفة بواسطة "اسم المضيف المحلي" للبيانات الوصفية)، فسيقوم cloud-init مرة أخرى بتعيين اسم المضيف وتحديث /etc/hostname.

في حالة قيام المستخدم بتعديل /etc/hostname، فسيظل تحت إدارة المستخدم.

بالإضافة إلى ذلك، إذا كان /etc/cloud/cloud.cfg يحتوي على قيمة 'preserve_hostname' مضبوطة على قيمة True، فلن يتم لمس /etc/hostname أبدًا.

والأمر المثير للاهتمام هو أنه إذا لم تقم بتغيير اسم المضيف، فإن حزمة cloud-init ستبقيه محدثًا لك.

إذا كان لدى شخص آخر حل بديل أو يمكنه معالجة بعض المشكلات المذكورة والمساعدة في طمأنة أنه لن يحدث أي شيء في مثيلات ec2 بسبب تغيير اسم المضيف، سأكون سعيدًا بسماع ذلك.

نصائح أخرى

وهناك طريقة أخرى هي مجرد تعديل ~/.bashrc وأرفقت PS1 مع كنية الجهاز.

وتحرير: ربما أكثر بشكل صحيح، على مستوى الجهاز، على سبيل المثال، على AWS لينكس AMI (مثال) (لصق هذا إلى وحدة التحكم أو إضافة إلى حسابك تعسفية تثبيت .sh):

cat << EOF | sudo tee /etc/profile.d/ps1.sh
if [ "$PS1" ]; then
  PS1="[\u@myinst1:\l \t \! \W]\\$ "
fi
EOF

وتحرير /etc/sysconfig/network كجذر.

واستبدال

HOSTNAME=localhost.localdomain

مع

HOSTNAME=hostname.DOMAIN_NAME

وبعد ذلك، إما إعادة تشغيل الكمبيوتر أو تشغيل /etc/init.d/network restart خادم ثم يجب الإبلاغ عن اسمها كما FQDN.

من <لأ href = "http://www.ducea.com/2006/08/07/how-to-change-the-hostname-of-a-linux-system/" يختلط = "نوفولو noreferrer" > هذا الموقع :

<اقتباس فقرة>   

وتغيير اسم المضيف على نظام تشغيل

     

في أي نظام لينكس يمكنك تغيير اسم المضيف لها مع hostname الأوامر (يفاجأ؟) ...   وهنا بعض الأعراف سريعة من اسم المضيف سطر الأوامر:

$> hostname
     

وبدون أي معلمة أنه سيتم إخراج اسم المضيف الحالي للنظام.

$> hostname --fqd
     

وأنه سيتم إخراج اسم المجال المؤهل بالكامل (أو FQDN) من النظام.

$> hostname NEW_NAME
     

وسيحدد اسم المضيف للنظام لNEW_NAME.

ويمكنك أيضا تحرير /etc/hostname (على الأقل على أوبونتو).

لتأكد من أنه يبقى بعد إعادة تشغيل الكمبيوتر في AWS، إما إضافة الأمر في /etc/rc.local بحيث يتم تشغيله عند بدء تشغيل الجهاز.

وهناك أيضا وسيلة ل مجموعة اسم المضيف ديناميكيا عبر USER_DATA :

<اقتباس فقرة>
USER_DATA=`/usr/bin/curl -s http://169.254.169.254/latest/user-data`
HOSTNAME=`echo $USER_DATA`
IPV4=`/usr/bin/curl -s http://169.254.169.254/latest/meta-data/public-ipv4`
hostname $HOSTNAME
echo $HOSTNAME > /etc/hostname

لتغيير اسم مضيف النظام إلى اسم DNS عام

اتبع هذا الإجراء إذا كان لديك بالفعل اسم DNS عام مسجل

  1. افتح ال /etc/sysconfig/network ملف التكوين في محرر النصوص المفضل لديك وقم بتغيير إدخال HOSTNAME ليعكس اسم المجال المؤهل بالكامل (مثل webserver.mydomain.com).

    HOSTNAME=webserver.mydomain.com
    
  2. أعد تشغيل المثيل لالتقاط اسم المضيف الجديد.

    [ec2-user ~]$ sudo reboot
    
  3. قم بتسجيل الدخول إلى المثيل الخاص بك وتحقق من تحديث اسم المضيف.يجب أن يُظهر الموجه اسم المضيف الجديد (حتى أول ".") ويجب أن يُظهر أمر hostname اسم المجال المؤهل بالكامل.

    [ec2-user@webserver ~]$ hostname
    webserver.mydomain.com
    

لتغيير اسم مضيف النظام بدون اسم DNS عام

  1. افتح ال /etc/sysconfig/network ملف التكوين في محرر النصوص المفضل لديك وقم بتغيير إدخال HOSTNAME ليعكس اسم مضيف النظام المطلوب (مثل خادم الويب).

    HOSTNAME=webserver.localdomain
    
  2. افتح ال /etc/hosts قم بملف في محرر النصوص المفضل لديك وأضف إدخالاً يبدأ بـ 127.0.1.1 (على أنظمة DHCP) أو عنوان eth0 (على أنظمة IP الثابتة) لمطابقة المثال أدناه، مع استبدال اسم المضيف الخاص بك.(يجب ترك 127.0.0.1 كخط المضيف المحلي.)

    127.0.0.1   localhost localhost.localdomain
    127.0.1.1   webserver.example.com webserver
    
  3. أعد تشغيل المثيل لالتقاط اسم المضيف الجديد.

    [ec2-user ~]$ sudo reboot
    
  4. قم بتسجيل الدخول إلى المثيل الخاص بك وتحقق من تحديث اسم المضيف.يجب أن يُظهر الموجه اسم المضيف الجديد (حتى أول ".") ويجب أن يُظهر أمر hostname اسم المجال المؤهل بالكامل.

    [ec2-user@webserver ~]$ hostname
    webserver.localdomain
    

ملحوظة:يمكنك أيضًا تغيير موجه الصدفة دون التأثير على اسم المضيف.تشير إلى وثائق AWS هذه.

وبالتأكيد، يمكنك أن تفعل ذلك إذا كان لديك اسم النطاق الخاص بك (إعداد CNAME للإشارة إلى اسم المضيف الأمازون). خلاف ذلك، وأنت تمسك الى حد كبير مع واحد أنها تعطيك (أو IP مطاطا، إذا قمت بتعيين واحد من تلك التي تصل).

عملت

والحل /etc/rc.local بالنسبة لي لاسم المضيف الأساسي ولكن لا تعطيني FQDN.

في بلدي لينكس AMI (لقطة من المثيل الآخر) .. أي من الصيغة أعلاه عملت. ثم، أنا ببساطة تغير الحقل HOSTNAME في ملف: /etc/init.d/modifyhostname وقام اعادة التشغيل العادي

ستحتاج إلى القيام بأشياء متعددة لتعيين اسم المضيف:

  1. hostname newname - يحدد اسم المضيف، ولكنه متقلب
  2. تحرير /etc/hostname - يضبط اسم المضيف لعملية إعادة التشغيل التالية
  3. تحرير /etc/hosts - لمنع Sudo من الشكوى

لقد قمت بتجميعها معًا في برنامج نصي وقمت بتحميلها كجوهر:https://Gist.github.com/mnebuerquo/5443532036af8b48995547e2817dba85

إذا كنت لا تريد الفوضى مع مزود DNS الخاص بك، يمكنك استخدام الأسماء المستعارة للحالات الخاصة بك. وفوجئت حقا أن أمازون لم توفر وسيلة لإعطاء اسم مستعار لمثيل EC2 عند خروجهم مع في AWS بالإدارة ، ولكن في غضون ذلك، هل يمكن استخدام RightScale خدمة مجانية إذا كنت تريد ميزة الاسم المستعار - أسهل بكثير من تذكر تلك معرفات المثال الأمازون.

sudo hostname *yourdesiredhostnamehere*

sudo /etc/init.d/networking restart

وبعد ذلك تم تغيير اسم المضيف. في خدمة بلدي جميع الخدمات الأخرى مثل أعمال اباتشي ولواحق. الخادم هو أوبونتو 12.04 LTS

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top