首页 > 解决方案 > 在 Amazon EC2 中使用 vagrant

问题描述

我是亚马逊 AWS 和 Vagrant 的新手。

我开了一个 12 个月的免费帐户,我想为我的个人项目测试 EC2。我需要测试QGIS Server软件。

我没有创建一个新实例并从头开始安装所有依赖项,而是使用这个 repo,它提供了 QGIS Server 的 Vagrant 图像和所有需要的软件来测试它。

我可能可以在我的个人笔记本电脑上执行此操作,但我不确定如何继续使用 EC2 实例。

看着这个 SO 答案,我似乎可以使用vagrant-aws插件来做到这一点。

但是,它的自述文件还显示:

当然,在执行此操作之前,您需要为 Vagrant 获取与 AWS 兼容的 box 文件。

那应该是什么意思?

任何有经验的人都可以帮助我了解除了 Vagrant 文件和 Amazon AWS 账户之外我还需要什么来完成这项任务吗?

我需要先创建一个实例还是应该使用 vagrant-aws 插件来创建?

提前谢谢了。

编辑1

我认为我取得了巨大的进步。

所以我阅读了大量的文档,最后我得到了一个 Vagrantfile,它是mitchellh/vagrant-awselpaso/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知识的人可以帮助我吗?我想我被困在最后一步了......

标签: rubyamazon-web-servicesamazon-ec2vagrant

解决方案


您有一些“智能引号”而不是单引号。更改所有这些:

变成这样:

'

常规双引号也应该起作用,只是没有智能引号。


推荐阅读