将 vagrant 与 Amazon EC2 结合使用
Using vagrant with Amazon EC2
我是 Amazon AWS 和 Vagrant 的新手。
我开了一个 12-moths 免费帐户,我想为我的个人项目测试 EC2。
我需要测试 QGIS Server 软件。
我没有创建一个新实例并从头开始安装所有依赖项,而是使用 this repo,它提供了 QGIS Server 的 Vagrant 图像和所有需要的软件来测试它。
我可能可以在我的个人笔记本电脑上执行此操作,但我不确定如何继续使用 EC2 实例。
看着 this SO answer it seems I can use vagrant-aws 插件来做。
但是,README 还显示:
Of course prior to doing this, you'll need to obtain an AWS-compatible box file for Vagrant.
那是什么意思?
有经验的人可以帮助我了解除了 Vagrant 文件和 Amazon AWS 帐户之外我还需要什么来完成此任务吗?
我需要先创建一个实例还是应该使用 vagrant-aws 插件来创建?
非常感谢。
EDIT1
我想我做了很大的改进。
所以我阅读了大量的文档,最后我得到了一个 Vagrantfile,它是 mitchellh/vagrant-aws and the one from elpaso/qgis3-server-vagrant.
的混合体
然后我应该 运行 vagrant up --provider=aws
但我遇到了一些语法错误。我认为我在 Ruby 方面缺乏知识是我在这里的主要障碍。
这是我修改后的 Vagrantfile
(没有 AWS 的秘密内容):
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Require the AWS provider plugin
require ‘vagrant-aws’
# Creating and configuring the AWS instance
Vagrant.configure(‘2’) do |config|
# Use dummy AWS box
config.vm.box = ‘aws’
# Disk space (free tier ebs is limited to 30!!!)
config.disksize.size = '20GB'
# (taken from https://github.com/elpaso/qgis3-server-vagrant)
config.vm.network "forwarded_port", guest: 80, host: 8080 # nginx fastcgi
config.vm.network "forwarded_port", guest: 81, host: 8081 # apache fastcgi
config.vm.network "forwarded_port", guest: 82, host: 8082 # nginx uwsgi
config.vm.network "forwarded_port", guest: 83, host: 8083 # nginx mapproxy
# Specify configuration of AWS provider
config.vm.provider ‘aws’ do |aws, override|
# Read AWS authentication information from environment variables
aws.access_key_id = ‘MY_ACCESS_ID’
aws.secret_access_key = ‘MY_SECRET_ID’
# Specify SSH keypair to use
aws.keypair_name = ‘MY_KEY’
# Specify region, AMI ID, Instance and security group
aws.region = ‘eu-west-3’
aws.ami = ‘ami-38a01045’
aws.instance_type = ‘t2.micro’
# Specify username and private key path
override.ssh.username = ‘umberto’
override.ssh.private_key_path = ‘path/to/my/key/pair’
end
# Install the required software
config.vm.provision "shell",
path: "provisioning/setup.sh",
args: ENV['SHELL_ARGS']
# Run every time the VM starts
config.vm.provision "shell",
path: "provisioning/job.sh",
args: ENV['SHELL_ARGS'],
run: "always"
end
我得到的错误是:
There is a syntax error in the following Vagrantfile. The syntax error
message is reproduced below for convenience:
/home/umberto/Documents/amazon_aws/qgis3-server-vagrant-AWS/Vagrantfile:35: syntax error, unexpected tIDENTIFIER, expecting keyword_end
aws.region = ‘eu-west-3’
^
/home/umberto/Documents/amazon_aws/qgis3-server-vagrant-AWS/Vagrantfile:36: syntax error, unexpected tIDENTIFIER, expecting keyword_end
aws.ami = ‘ami-38a01045’
^
/home/umberto/Documents/amazon_aws/qgis3-server-vagrant-AWS/Vagrantfile:42: syntax error, unexpected keyword_end, expecting end-of-input
end
^
有一点Ruby知识的人可以帮助我吗?我想我似乎陷入了最后一步......
你有一些 'smart quotes' 而不是单引号。更改所有这些:
’
变成这样:
'
常规双引号应该也可以,只是没有弯引号。
我是 Amazon AWS 和 Vagrant 的新手。
我开了一个 12-moths 免费帐户,我想为我的个人项目测试 EC2。 我需要测试 QGIS Server 软件。
我没有创建一个新实例并从头开始安装所有依赖项,而是使用 this repo,它提供了 QGIS Server 的 Vagrant 图像和所有需要的软件来测试它。
我可能可以在我的个人笔记本电脑上执行此操作,但我不确定如何继续使用 EC2 实例。
看着 this SO answer it seems I can use vagrant-aws 插件来做。
但是,README 还显示:
Of course prior to doing this, you'll need to obtain an AWS-compatible box file for Vagrant.
那是什么意思?
有经验的人可以帮助我了解除了 Vagrant 文件和 Amazon AWS 帐户之外我还需要什么来完成此任务吗?
我需要先创建一个实例还是应该使用 vagrant-aws 插件来创建?
非常感谢。
EDIT1
我想我做了很大的改进。
所以我阅读了大量的文档,最后我得到了一个 Vagrantfile,它是 mitchellh/vagrant-aws and the one from elpaso/qgis3-server-vagrant.
的混合体然后我应该 运行 vagrant up --provider=aws
但我遇到了一些语法错误。我认为我在 Ruby 方面缺乏知识是我在这里的主要障碍。
这是我修改后的 Vagrantfile
(没有 AWS 的秘密内容):
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Require the AWS provider plugin
require ‘vagrant-aws’
# Creating and configuring the AWS instance
Vagrant.configure(‘2’) do |config|
# Use dummy AWS box
config.vm.box = ‘aws’
# Disk space (free tier ebs is limited to 30!!!)
config.disksize.size = '20GB'
# (taken from https://github.com/elpaso/qgis3-server-vagrant)
config.vm.network "forwarded_port", guest: 80, host: 8080 # nginx fastcgi
config.vm.network "forwarded_port", guest: 81, host: 8081 # apache fastcgi
config.vm.network "forwarded_port", guest: 82, host: 8082 # nginx uwsgi
config.vm.network "forwarded_port", guest: 83, host: 8083 # nginx mapproxy
# Specify configuration of AWS provider
config.vm.provider ‘aws’ do |aws, override|
# Read AWS authentication information from environment variables
aws.access_key_id = ‘MY_ACCESS_ID’
aws.secret_access_key = ‘MY_SECRET_ID’
# Specify SSH keypair to use
aws.keypair_name = ‘MY_KEY’
# Specify region, AMI ID, Instance and security group
aws.region = ‘eu-west-3’
aws.ami = ‘ami-38a01045’
aws.instance_type = ‘t2.micro’
# Specify username and private key path
override.ssh.username = ‘umberto’
override.ssh.private_key_path = ‘path/to/my/key/pair’
end
# Install the required software
config.vm.provision "shell",
path: "provisioning/setup.sh",
args: ENV['SHELL_ARGS']
# Run every time the VM starts
config.vm.provision "shell",
path: "provisioning/job.sh",
args: ENV['SHELL_ARGS'],
run: "always"
end
我得到的错误是:
There is a syntax error in the following Vagrantfile. The syntax error
message is reproduced below for convenience:
/home/umberto/Documents/amazon_aws/qgis3-server-vagrant-AWS/Vagrantfile:35: syntax error, unexpected tIDENTIFIER, expecting keyword_end
aws.region = ‘eu-west-3’
^
/home/umberto/Documents/amazon_aws/qgis3-server-vagrant-AWS/Vagrantfile:36: syntax error, unexpected tIDENTIFIER, expecting keyword_end
aws.ami = ‘ami-38a01045’
^
/home/umberto/Documents/amazon_aws/qgis3-server-vagrant-AWS/Vagrantfile:42: syntax error, unexpected keyword_end, expecting end-of-input
end
^
有一点Ruby知识的人可以帮助我吗?我想我似乎陷入了最后一步......
你有一些 'smart quotes' 而不是单引号。更改所有这些:
’
变成这样:
'
常规双引号应该也可以,只是没有弯引号。