2016-09-09 7 views
0

Я экспериментирую с созданием экземпляра EC2 для размещения сервера Perforce. Мой экземпляр конфигурируется со следующими данными пользователя:Пользовательские данные AWS EC2 неправильно декодируются

#!/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 

Я проверил каждый из указанных выше команд, и знать, что они работают, когда выполняются вручную в указанном порядке. Однако некоторые аспекты системы кодирования/декодирования base64 в Amazon, похоже, мешают. Когда после запуска (и передачи всех системных проверок) я перехожу к «Действиям> Настройки экземпляра> Просмотр/изменение данных пользователя» из консоли EC2, я вижу следующие пользовательские данные. Обратите внимание, что почти каждый дефис «-» заменен каким-то странным символом «a».

enter image description here

Однако, я не уверен, что это проблема, потому что файл журнала в /var/log/cloud-init-output.log дает мне следующий вывод (я заменил некоторые повторяющиеся текст с [...], чтобы сэкономить место). Обратите внимание на строку, которая говорит Failed running /var/lib/cloud/instance/scripts/part-001. Я проверил, что на этом файле part-001 на самом деле есть имеют правильно отображаемые символы дефиса.

[...] 
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 

Даже больше раздражает, я предположил, что ранняя No Match for argument: –y строка из файла журнала имел в виду yum update -y линии моих данных пользователя. Разумеется, просто запустив пример сценария пользовательских данных на странице EC2 documentation, который также использует yum update -y, дает мне такую ​​же ошибку/предупреждение! Сценарий собственного примера Amazon не работает !? Так может ли кто-нибудь ответить, почему A) AWS неправильно отображает код пользовательских данных, а B) почему мои данные пользователя дают ошибки, показанные выше? Помощь очень ценится!

+0

Это может быть характер проблема кодирования. Попробуйте установить пользовательские данные из aws-cli – hjpotter92

+0

@ hjpotter92. Действительно ли это была проблема кодирования символов, если файл/var/lib/cloud/instance/scripts/part-001 точно соответствует пользовательским данным, введенным через консоль AWS ? – Rabadash8820

ответ

2

Для линий, таких как

yum update –y 

символ, который вы используете это "EN DASH U + 2013"

Обычный символ для дефиса "HYPHEN-МИНУС U + 002D"

Fix ваш источник данных пользователя, чтобы использовать «дефис минус» и еще раз попытать

Я проверил коды символов от разреза п вставки в этом интернет-сайте http://www.fileformat.info/info/unicode/char/search.htm?q=-&preview=entity

Не знаю, если вы можете увидеть разницу, но это ваш дефис

yum update –y 

и это «дефис минус»

yum update -y 
+0

Ничего себе, это сделали, отличная работа @Vorsprung! Теперь я вижу разницу между этими символами дефиса, но как вы узнали, какой из них был прав, а что было неправильно? Оглядываясь назад, я думаю, что реальный корень моей проблемы состоял в том, что я начал с записи сценария пользовательских данных в Microsoft Word (как часть более крупного документа), прежде чем в конечном итоге копировать в Notepad ++ из опасения, что некоторые проблемы с кодировкой происходят. Очевидно, что только копирование в скобки не исправляло коды символов. По-видимому, Word использует en-dash для дефиса в END слова, но дефис-минус для одного INSIDE слова! – Rabadash8820

Смежные вопросы