2016-09-09 7 views
0

Ich experimentiere mit dem Erstellen einer EC2-Instanz zum Hosten eines Perforce-Servers. Meine Instanz wird mit den folgenden Benutzerdaten konfiguriert:AWS EC2-Benutzerdaten werden nicht korrekt dekodiert

#!/bin/bash 

# Add a newline to the ec2-user prompt string 
echo PS1=\"\\n\$PS1\" >> /home/ec2-user/.bashrc 

# Update all packages 
yum update –y 

# Install Perforce packages 
# The RHEL/7 part of the baseurl should be replaced with 
# the latest RHEL version that both Amazon and Perforce support 
rpm –import https://package.perforce.com/perforce.pubkey 
cd /etc/yum.repos.d/ 
echo [perforce] > perforce.repo 
echo name=Perforce >> perforce.repo 
echo baseurl=http://package.perforce.com/yum/rhel/7/x86_64 >> perforce.repo 
echo enabled=1 >> perforce.repo 
echo gpgcheck=1 >> perforce.repo 
yum install –y helix-p4d 

# Make directories for the server, owned by new “perforce” user 
cd /opt/perforce/servers/ 
mkdir danware 
cd danware 
mkdir danware-db danware-chkpts journal 
chown –R perforce:perforce danware 

Ich habe jede der oben genannten Befehle getestet, und weiß, dass sie funktionieren, wenn manuell in dieser Reihenfolge ausgeführt. Ein Aspekt des Amazon Base64 Enkodierungs-/Dekodiersystems scheint jedoch in die Quere zu kommen. Wenn ich nach dem Start von "Actions> Instance Settings> View/Change User Data" von der EC2 Console gehe (und alle Systemchecks übergebe), sehe ich die folgenden Benutzerdaten. Beachten Sie, dass fast jeder Bindestrich "-" durch ein seltsames "a" -Zeichen ersetzt wurde.

enter image description here

Aber ich bin nicht sicher, dass dies das Problem ist, da die Protokolldatei bei /var/log/cloud-init-output.log mir die folgenden Ausgabe gibt (I ersetzt einig mir wiederholenden Text mit [...] um Platz zu sparen). Beachten Sie die Zeile Failed running /var/lib/cloud/instance/scripts/part-001 Ich habe überprüft, dass diese Teil-001-Datei tatsächlich die korrekt angezeigten Bindestrich-Zeichen hat.

[...] 
Cloud-init v. 0.7.6 running 'modules:final' at Fri, 09 Sep 2016 06:23:39 +0000. Up 86.66 seconds. 
Loaded plugins: priorities, update-motd, upgrade-helper 
No Match for argument: –y 
No packages marked for update 
RPM version 4.11.2 
Copyright (C) 1998-2002 - Red Hat, Inc. 
This program may be freely redistributed under the terms of the GNU GPL 

Usage: rpm [-aKfgpqVcdLilsiv?] [-a|--all] [-f|--file] [-g|--group] [...] 
Loaded plugins: priorities, update-motd, upgrade-helper 
Resolving Dependencies 
--> Running transaction check 
---> [...] 

Dependencies Resolved 

================================================================================ 
Package     Arch  Version    Repository  Size 
================================================================================ 
Installing: 
helix-p4d    x86_64  2016.1-1429894  perforce  24 k 
Installing for dependencies: 
helix-cli    x86_64  2016.1-1429894  perforce  8.8 k 
helix-cli-base   x86_64  2016.1-1429894  perforce  1.4 M 
helix-p4d-base   x86_64  2016.1-1429894  perforce  3.1 k 
helix-p4d-base-16.1  x86_64  2016.1-1429894  perforce  2.4 M 
helix-p4dctl    x86_64  2016.1-1429894  perforce  1.2 M 

Transaction Summary 
================================================================================ 
Install 1 Package (+5 Dependent packages) 

Total download size: 5.0 M 
Installed size: 13 M 
Is this ok [y/d/N]: Exiting on user command 
Your transaction was saved, rerun it with: 
yum load-transaction /tmp/yum_save_tx.2016-09-09.06-23.dRP_r2.yumtx 
/var/lib/cloud/instance/scripts/part-001: line 22: cd: /opt/perforce/servers/: No such file or directory 
chown: invalid user: ‘–R’ 
Sep 09 06:23:41 cloud-init[2517]: util.py[WARNING]: Failed running /var/lib/cloud/instance/scripts/part-001 [1] 
Sep 09 06:23:41 cloud-init[2517]: cc_scripts_user.py[WARNING]: Failed to run module scripts-user (scripts in /var/lib/cloud/instance/scripts) 
Sep 09 06:23:41 cloud-init[2517]: util.py[WARNING]: Running module scripts-user (<module 'cloudinit.config.cc_scripts_user' from '/usr/lib/python2.7/dist-packages/cloudinit/config/cc_scripts_user.pyc'>) failed 
Cloud-init v. 0.7.6 finished at Fri, 09 Sep 2016 06:23:41 +0000. Datasource DataSourceEc2. Up 88.53 seconds 

Noch ärgerlicher, ging ich davon aus, dass die frühe No Match for argument: –y Linie aus der Protokolldatei auf die yum update -y Linie von meinen Benutzerdaten bezog. Sicher genug, nur das Beispiel Benutzerdaten Skript von der EC2 documentation Seite, die auch yum update -y verwendet, läuft mir diesen gleichen Fehler/Warnung! Amazons eigenes Beispielskript funktioniert nicht !? Kann also jemand antworten, warum A) AWS den Benutzerdatencode nicht korrekt anzeigt und B) warum meine Benutzerdaten die oben gezeigten Fehler ergeben? Die Hilfe wird sehr geschätzt!

+0

Es könnte Zeichencodierung Problem sein. Versuchen Sie, die Benutzerdaten unter aws-cli – hjpotter92

+0

@ hjpotter92 einzustellen. Wäre es wirklich ein Zeichencodierungsproblem, wenn die Datei/var/lib/cloud/instance/scripts/part-001 genau mit den Benutzerdaten übereinstimmt, die ich über die AWS Console eingegeben habe ? – Rabadash8820

Antwort

2

Für Linien wie

yum update –y 

Das Zeichen, das Sie verwenden ein "EN DASH U + 2013"

Die üblichen Zeichen für einen Bindestrich ist "HYPHEN-MINUS U + 002D"

Fix Ihre Quell-Benutzerdaten „Bindestrich minus“ zu verwenden, und eine andere

ich gehen durch Schnitt n Einfügen in diesem Online-Website, um die Zeichencodes überprüft http://www.fileformat.info/info/unicode/char/search.htm?q=-&preview=entity

Sie wissen nicht, wenn Sie den Unterschied sehen können, aber das ist Ihr Bindestrich

yum update –y 

und dies ist ein „Bindestrich minus“

yum update -y 
+0

Wow, das war's, hervorragende Arbeit @Vorsprung! Ich sehe jetzt den Unterschied zwischen diesen Bindestrich-Zeichen, aber woher weißt du, welches Recht und welches falsch war? Im Nachhinein denke ich, dass der eigentliche Grund meines Problems darin lag, dass ich das Benutzerdatenskript in Microsoft Word (als Teil eines größeren Dokuments) aufschrieb, bevor ich schließlich aus Angst vor dem Kodierungsproblem in Notepad ++ kopierte. Natürlich hat nur das Kopieren und Einfügen die Zeichencodes nicht korrigiert. Offenbar verwendet Word den Bindestrich für einen Bindestrich am ENDE eines Wortes, aber Bindestrich-Minus für EINEN INNEN ein Wort! – Rabadash8820

Verwandte Themen