我是Amazon EC2的新用户.
我想pptpd在EC2 上编译包,但收到以下错误:
[root@ip-10-112-xxx-xxx /]# /var/tmp/rpm-tmp.2eILT0: line 58: /usr/bin/make: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我搜索了整个根目录树,但是make不可用:
[root@ip-10-112-59-187 /]# find . -name "make"
./etc/mail/make
Run Code Online (Sandbox Code Playgroud)
我想知道make最初是否真的安装在Amazon Linux AMI上?如果没有,我该如何安装?
我需要针对每个Linux发行版/版本测试一个软件.我将使用amazon AWS是否有一个AMI列表,我可以将粘贴复制到我的脚本中以自动执行这个繁琐的过程?
我需要在Amazon上运行自定义C++作为Map Reduce,并计划使用Hadoop流式处理.C++映射器可执行文件依赖于许多自定义库,其中一些库构建起来非常耗时.
我希望EMR支持自定义AMI(已经有一个内置).但是,仔细查看文档后,似乎只能在预定义的映像上运行EMR:http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-cli-commands.html.
我错过了什么吗?实际上,如果只支持预定义的AMI,那么运行它的最佳选择是什么?显然,可执行文件是在s3上,但是我可以将它实际捆绑起来,这样它根本不依赖于共享库吗?
谢谢.
我可以很好地构建AMI图像.但他们已停止使用EC2用户数据:
有用户数据:
$ cat /tmp/user_data.sh
#!/bin/bash
touch /tmp/i_have_user_data /root/i_have_user_data
Run Code Online (Sandbox Code Playgroud)
我可以启动一个普通的Ubuntu映像:
aws ec2 run-instances --instance-type m3.medium --image-id ami-eed10e86 --user-data file:///tmp/user_data.sh
Run Code Online (Sandbox Code Playgroud)
它有效:
ubuntu@ip-10-165-90-180:~$ ls /tmp/i_have_user_data
Run Code Online (Sandbox Code Playgroud)
的/ tmp/i_have_user_data
但是,如果我基于那个构建一个AMI,使用Packer:
"builders": [
{
"type": "amazon-ebs",
"region": "us-east-1",
"source_ami": "ami-eed10e86",
"instance_type": "m3.large",
"ssh_username": "ubuntu",
"tags": {
"OS_Version": "Ubuntu",
"Release": "LTS"
}
}
],
Run Code Online (Sandbox Code Playgroud)
...并以与以前完全相同的方式运行,/ tmp中没有任何内容.但是,如果运行ec2metadata,很明显有用户数据:
ramdisk-id: unavailable
reserveration-id: unavailable
security-groups: default
user-data: #!/bin/bash
touch /tmp/i_have_user_data /root/i_have_user_data
Run Code Online (Sandbox Code Playgroud)
我很确定这是一个状态问题,并且删除状态文件将使它完全神奇地工作.或者,有一个技巧可以使云终端新手脚本工作,这可能会被打破.无论如何,我还没有找到.
更新:
我通过将用户数据脚本转换为一个boothook来实现它:
#cloud-boothook
#!/bin/sh
echo "RUNNING USER DATA SCRIPT"
Run Code Online (Sandbox Code Playgroud)
仍在寻找解释他们为何停止工作的原因.Cloud Init的文档越来越好,但还有很长的路要走.
是否可以从ISO创建AMI?
我正在实现一个构建系统,它使用基本iso,修改它,安装东西,然后在.ovf和AMI中输出它.
.ovf的作品.但对于AMI,我能想到的只是它需要预先存在的AMI.它是否正确?
有没有办法使用iso并生成AMI?
谢谢.
我正在尝试与一位正在测试他对我的集群计算应用程序的更改的同事分享我的AMI.
虽然很容易将我的AMI的权限更改为"公共",但我无法在任何地方找到它的清单,包括在我的S3存储桶中.
在EC2控制台中创建的AMI是否缺少此功能?
我创建了一个自定义AMI,其中预装有某些软件和脚本。
我正在尝试通过安装一些软件(包括名为的软件包)来创建自定义AMI ubuntu-desktop。但是,安装此软件包会使所得的AMI无法使用。
精确的步骤以尽量减少再现性:
ami-0f65671a86f061fcd(这是Canonical的Ubuntu Server 18.04 LTS(HVM),SSD卷类型)sudo apt-get -y update sudo apt-get -y install ubuntu-desktopImage > Create Image
预期结果:
实际结果:
从AMI启动的实例中的系统日志显示:
[ 12.125396] cloud-init[691]: Cloud-init v. 18.3-9-g2e62cb8a-0ubuntu1~18.04.2 running 'init' at Fri, 09 Nov 2018 02:15:09 +0000. Up 11.47 seconds.
[ 12.145064] cloud-init[691]: ci-info: +++++++++++++++++++++++++++Net device info++++++++++++++++++++++++++++
[ 12.161038] cloud-init[691]: ci-info: +--------+-------+-----------+-----------+-------+-------------------+
[ 12.180149] cloud-init[691]: ci-info: | Device | Up | Address | Mask | Scope | Hw-Address …
是从Amazon Linux AMI升级到Amazon Linux 2 AMI的简便方法,还是我必须创建一个新实例并再次进行所有服务器设置?
感谢您的反馈意见,
博客文章使用AWS Systems Manager参数存储查询最新的Amazon Linux AMI ID。AWS Compute Blog描述了如何始终在CloudFormation模板中引用发行版的最新版本。
# Use public Systems Manager Parameter
Parameters:
LatestAmiId:
Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>'
Default: '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2'
Resources:
Instance:
Type: 'AWS::EC2::Instance'
Properties:
ImageId: !Ref LatestAmiId
Run Code Online (Sandbox Code Playgroud)
这对于RedHat和CentOS等其他发行版如何工作?将使用什么参数存储路径?