我正在构建一个新的Docker镜像,我希望安装NVM,这样我就可以管理nodejs.
阅读有关如何安装NVM的文档,他们提到您需要获取.bashrc文件才能开始使用NVM.
我试图在Dockerfile中设置它,但到目前为止构建失败并出现错误:
"bash:nvm:命令未找到"
以下是我的Dockerfile中的相关行:
ADD files/nvm_install.sh /root/
RUN chmod a+x /root/nvm_install.sh
RUN bash -c "/root/nvm_install.sh"
RUN bash -l -c "source /root/.bashrc"
RUN cd /root
RUN bash -l -c "nvm install 0.10.31"
Run Code Online (Sandbox Code Playgroud)
以下是尝试构建的输出:
docker build -t nginx_dock.
Step 0 : FROM ubuntu
---> 826544226fdc
Step 1 : MAINTAINER dficociello
---> Using cache
---> da3bc340fbb3
Step 2 : RUN apt-get update
---> Using cache
---> 6b6b611feb4f
Step 3 : RUN apt-get install nginx curl -y
---> Using cache
---> 159eb0b16d23
Step …
Run Code Online (Sandbox Code Playgroud) 所以我正在尝试使用Packer创建AWS映像并通过user_data_file指定一些用户数据.实例启动时需要运行此文件的内容,因为每次实例都是唯一的.我不能把它加入AMI.
使用打包器我有以下内容:
{
"variables": {
"ami_name": ""
},
"builders": [
{
"type": "amazon-ebs",
"region": "us-east-1",
"source_ami": "ami-c8580bdf",
"instance_type": "t2.micro",
"ssh_username": "ubuntu",
"ami_name": "{{ user `ami_name` }}-{{ isotime | clean_ami_name }}",
"user_data_file": "user_data.sh",
"tags": {
"os_version": "ubuntu",
"built_by": "packer",
"build_on": "{{ isotime | clean_ami_name }}",
"Name": "{{ user `ami_name` }}"
}
}],
"provisioners": [
{
"type": "ansible",
"playbook_file": "playbook.yml",
"user": "ubuntu"
}]
}
Run Code Online (Sandbox Code Playgroud)
我的user_data shell脚本的内容只是通过在供应商步骤中运行的ansible脚本安装的软件包的几个基本配置行.观察Packer的输出我可以确认ansible脚本全部运行.
Packer完成并创建AMI,但永远不会执行用户数据.结果图像中不存在任何记录.没有/userdata.log文件并且/var/lib/cloud/instance/user-data.txt
是空的我觉得我错过了一些基本的东西,因为这应该是一个非常简单的事情与Packer.
我目前正在通过 Packer 构建 AMI,没有问题,但我正在将 AWS 凭证放入我的脚本中,这不是我想要的。阅读 Packer 文档时,他们指定如果没有找到凭证,它可以使用 AWS 角色。
我已经创建了策略和角色,但我不清楚如何告诉 Packer 使用这个角色。我是否必须将 ARN 作为变量传入?
有什么想法吗?
在阅读Terraform上的文档时,它说有3种方法可以找到AWS信用:
我想让我的设置只使用凭据文件.我已检查环境变量是否已清除,并且我已将Terraform中的相关变量留空.
当我这样做并运行'Terraform Plan'时,我得到错误:
没有为AWS Provider找到有效的凭据源.
我甚至尝试将我的凭证文件的位置添加到我的提供程序块中,这也没有帮助:
provider "aws" {
region = "${var.region}"
profile = "${var.profile}"
shared_credentials_file = "/Users/david/.aws/credentials"
profile = "testing"
}
Run Code Online (Sandbox Code Playgroud)
是否有一些东西我想让Terraform读取这个文件并且不需要环境变量?