Frage

Ich bin mit ein paar standard-Fedora-Instanzen auf EC2.Ich fühle den öffentlichen Hostnamen des zugeordneten Instanzen von Amazon sind zu seltsam und schwer zu merken.Ich möchte Sie zu ändern, um etwas zu kurz (z.B. rot/blau/grün/etc).

Ist es irgendwelche ziehen wieder in dies zu tun?Und wie kann ich es einrichten, so dass er weiterhin nach jedem Neustart?

Vielen Dank.

War es hilfreich?

Lösung

Bevor Sie beginnen, versuchen Sie laufen hostname und hostname --fqdn und zur Kenntnis nehmen, was die Antworten sind.

Sie können /etc/hostname bearbeiten und einen Hostnamen festgelegt, die nach dem Neustart wird dableiben. Sie können den Hostnamen erzwingen „reloaded“ unter Verwendung hostname -F /etc/hostname werden diesen Wert in den Host-Namen zu lesen. Die Bash-Eingabeaufforderung wird sich ändern, nachdem Sie abmelden und anmelden.

Warnung / Hinweis :
Ja, ist es schön, die Hostnamen in der Bash-Eingabeaufforderung, um etwas nützlicher als ip-123-123-123-123 gesetzt haben, aber ich habe mich (zumindest vorerst) zu verlassen entschieden, weil es wie eine Menge Dinge wirklich auf, die die Hostnamen auf EC2 zählen scheint Instanzen in üblichen Weise festgelegt. Nach der Bearbeitung /etc/hostname und Ändern des Hostnamen viele der Dienste zu webserver scheint zu scheitern, weil der Hostname nicht auflösen würde, und Apache beginnen würde, nicht. Als nächstes bearbeiten ich /etc/hosts und hinzugefügt

127.0.0.1 webserver

als die zweite Zeile. Apache würde dann beginnen, aber darüber beschwert, dass sie nicht den FQDN finden können. Ich bestätigte, dass die Ausführung hostname --fqdn nicht mehr gearbeitet.

Als nächst ich man hostname konsultiert und erfuhr, dass, während Sie die hostname einstellen es scheint, dass der FQDN ist das, was über einen DNS-Lookup zurückgegeben.

  

der FQDN

     

Sie können nicht den FQDN oder den DNS-Domänennamen (von dnsdomainname als zurück) (wie durch den Hostnamen --fqdn zurückgegeben) ändern sich mit diesem Befehl. Der FQDN des Systems ist der Name, der Resolver (3) für den Hostnamen zurückgibt.

     

Technisch: Der FQDN ist der Name getaddrinfo (3) für den Hostnamen von gethostname (2) zurück kehrt. Der DNS-Domänenname ist der Teil nach dem ersten Punkt.

     

Daher hängt es von der Konfiguration (in der Regel in /etc/host.conf), wie Sie es ändern können. Normalerweise (wenn die Host-Datei, bevor DNS oder NIS analysiert wird) Sie können es ändern in / etc / hosts.

Ich denke, es möglich sein könnte, das System / täuscht das System in Rückkehr der FQDN, so etwas wie ip-123-123-123-123.ec2.internal zu setzen, auch wenn der Host-Name webserver ist aber an diesem Punkt begann es wie mehr Mühe scheinen als es wert war, und dass für mir eine schönere bash-Eingabeaufforderung zu haben, könnte eine Menge Software und Konfigurationsprobleme auf der Straße führen und so entschied ich mich, aufzugeben.

Ich habe auch gelernt, dass eine Menge von Amazon EC2-Instanzen etwas cloud-init genannt verwenden:

  

cloud-init ist das Ubuntu-Paket, das Anfang der Initialisierung einer Cloud-Instanz behandelt. Es ist in dem Ubuntu Cloud-Images installiert und auch in den offiziellen Ubuntu Bilder auf EC2 zur Verfügung.

     

Einige der Dinge, die es konfiguriert sind:

     
      
  • eine Standard-Locale Einstellung
  •   
  • Einstellung Hostname
  •   
  • erzeugen ssh private Schlüssel
  •   
  • Hinzufügen von SSH-Schlüssel des Benutzers .ssh / authorized_keys so können sie sich anmelden
  •   
  • Einrichten ephemeren Mount-Punkte
  •   
     

cloud-init Verhalten kann über die Benutzerdaten konfiguriert werden. Benutzerdaten können vom Anwender Instanz Startzeit angegeben werden. Dies geschieht über das --user-Daten oder --user-data-Datei Argument getan EC2-run-Instanzen

Ich fand auch diese , die darüber spricht, wie der Hostname ist konfiguriert mit Cloud-init:

  

Auf EBS Fällen eine Abschaltung und später Start wären mit einer anderen IP-Adresse am Ende.

     

In dem Fall, dass der Benutzer nicht geändert hat / etc / hostname von seinem ursprünglichen Wert (ausgesät von Metadaten des ‚local-Hostnamen‘), dann cloud-init wird wieder über den Host-Namen und Update / etc / hostname.

     

In dem Fall, dass der Benutzer geändert hat / etc / hostname, wird es bleibt Benutzer verwaltet.

     

Außerdem, wenn / etc / Wolke / Wolke.cfg enthält ‚preserve_hostname‘ Wert auf einen Wert True gesetzt ist, dann / etc / hostname wird nicht immer berührt werden.

Das Interessante Gerichte zum Mitnehmen ist, dass, wenn Sie die Cloud-Init-Paket, um es für Sie auf dem Laufenden halten nicht den Hostnamen ändern.

Wenn jemand eine Abhilfe hat oder können einige der genannten Themen befassen und dazu beitragen, dass nichts zu beruhigen wird auf EC2-Instanzen brechen wegen der Hostnamen zu ändern ich glücklich sein würde, es zu hören.

Andere Tipps

Eine andere Möglichkeit ist, einfach ~/.bashrc und prepend PS1 mit dem Spitznamen der Maschine zu bearbeiten.

Edit: vielleicht richtiger, Maschinenbreite, z.B. auf dem AWS Linux AMI (ein Beispiel) (fügen Sie dies in der Konsole oder fügen Sie zu Ihrem beliebigen installieren .sh):

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

Bearbeiten /etc/sysconfig/network als root an.

Ersetzen

HOSTNAME=localhost.localdomain

mit

HOSTNAME=hostname.DOMAIN_NAME

Dann wird entweder neu starten oder laufen /etc/init.d/network restart Der Server sollte seinen Namen als FQDN melden.

Von diese Seite :

  

Ändern Sie den Hostnamen auf einem laufenden System

     

Auf jedem Linux-System können Sie die Hostnamen mit dem Befehl hostname ändern (überrascht?) ...   Hier sind einige schnelle Verwendungen der Befehlszeile Host-Name:

$> hostname
     

ohne Parameter gibt er den aktuellen Hostnamen des Systems.

$> hostname --fqd
     

gibt er die vollständig qualifizierten Domänennamen (oder Namen) des Systems.

$> hostname NEW_NAME
     

den Hostnamen des Systems auf NEW_NAME.

Sie können auch bearbeiten /etc/hostname (zumindest auf Ubuntu).

Um sicherzustellen, dass es bleibt nach einem Neustart in AWS, entweder den Befehl in /etc/rc.local hinzufügen, damit es, wenn die Maschine startet läuft.

Es gibt auch eine Möglichkeit, href="http://ternarylabs.com/2010/09/15/automatically-configure-hostname-for-new-ec2-instances/" zum gesetzt der Hostname dynamisch über 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

Um die System-Hostnamen zu einem öffentlichen DNS-Namen zu ändern

Gehen Sie folgendermaßen vor, wenn Sie bereits einen öffentlichen DNS-Namen registriert haben

  1. die /etc/sysconfig/network Konfigurationsdatei in Ihrem bevorzugten Texteditor öffnen und den HOST Eintrag ändern Sie die vollständig qualifizierten Domänennamen (wie webserver.mydomain.com) zu reflektieren.

    HOSTNAME=webserver.mydomain.com
    
  2. die Instanz Starten Sie den neuen Hostnamen aufzunehmen.

    [ec2-user ~]$ sudo reboot
    
  3. Melden Sie sich bei Ihrem Beispiel und stellen Sie sicher, dass der Host-Name aktualisiert wurde. Ihre prompte sollte die neuen Hostnamen zeigen (bis zum ersten „“) und der Host-Namen Befehl sollte die vollständig qualifizierten Domänennamen an.

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

Um die System-Hostnamen ohne öffentlichen DNS-Namen zu ändern

  1. Öffnen Sie die /etc/sysconfig/network Konfigurationsdatei in Ihrem bevorzugten Texteditor und den HOST Eintrag ändern, um die gewünschte System-Hostnamen (zB Webserver) zu reflektieren.

    HOSTNAME=webserver.localdomain
    
  2. Öffnen Sie die /etc/hosts Datei in Ihrem bevorzugten Texteditor und einen Eintrag mit 127.0.1.1 (auf DHCP-Systemen), beginnend hinzufügen oder eth0 Adresse (auf statische IP-Systeme) unter dem Beispiel übereinstimmen, Ihren eigenen Hostnamen ersetzt wird. (127.0.0.1 sollte als localhost Linie bleiben.)

    127.0.0.1   localhost localhost.localdomain
    127.0.1.1   webserver.example.com webserver
    
  3. die Instanz Starten Sie den neuen Hostnamen aufzunehmen.

    [ec2-user ~]$ sudo reboot
    
  4. Melden Sie sich bei Ihrem Beispiel und stellen Sie sicher, dass der Host-Name aktualisiert wurde. Ihre prompte sollte die neuen Hostnamen zeigen (bis zum ersten „“) und der Host-Namen Befehl sollte die vollständig qualifizierten Domänennamen an.

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

Hinweis: Sie können auch die Shell-Eingabeaufforderung ändern, ohne die Hostnamen zu beeinflussen. Siehe dieser AWS Dokumentation .

Sicher, Sie können das tun, wenn Sie Ihre eigene Domain (Setup einen CNAME auf den Amazon-Hostnamen-zu-Punkt). Sonst bist du ziemlich viel mit dem einen stecken sie geben Ihnen (oder einer Elastic IP, wenn Sie einer von denen einrichten).

Die /etc/rc.local Lösung funktionierte für mich für einen einfachen Hostnamen aber nicht geben Sie mir einen FQDN.

In meinem Linux AMI (eine Momentaufnahme der anderen Instanz) .. keines der oben genannten Formel gearbeitet. Dann änderte ich einfach HOST Feld in der Datei. /Etc/init.d/modifyhostname und hat einen normalen Neustart

Sie müssen mehrere Dinge tun, die Hostnamen setzen:

  1. hostname newname - setzt den Host-Namen, ist aber flüchtig
  2. edit / etc / hostname - setzt den Hostnamen für den nächsten Neustart
  3. Datei / etc / hosts - halten sudo von beschweren

Ich habe diese zusammen in ein Skript und hochgeladen es als Kern: https://gist.github.com/mnebuerquo/5443532036af8b48995547e2817dba85

Wenn Sie nicht wollen, um Durcheinander mit Ihrem DNS-Anbieter, Sie könnte verwenden Sie Aliase für Ihre Instanzen.Ich war wirklich überrascht, dass Amazon nicht bieten eine Möglichkeit zu geben, einen alias für eine EC2-Instanz, wenn Sie kam mit dem AWS Management Console, aber in der Zwischenzeit, könnten Sie nutzen die freie RightScale service wenn Sie möchten, dass der alias-Funktion - viel einfacher, als die Erinnerung an diejenigen, die Amazon-Instanz-IDs.

sudo hostname *yourdesiredhostnamehere*

sudo /etc/init.d/networking restart

dann wird der Hostname geändert. Auf meinem Server alle anderen Dienste wie Apache und Postfix funktioniert. Server ist Ubuntu 12.04 LTS

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top