【问题标题】:Pre-Deploy Script on ElasticBeanstalk在 ElasticBeanstalk 上预部署脚本
【发布时间】:2018-01-25 00:39:39
【问题描述】:

我正在将一个 Rails 应用程序部署到 AWS。其中一个 gem 有依赖关系,需要在部署期间运行 bundle install 之前在服务器上安装某些文件。在我的.ebextensions 文件中,我有以下内容

01-oracle_sdk:
    sources:
      /usr/lib: https://s3-us-west-2.amazonaws.com/xyz/instantclient-sdk-linux.x64-12.2.0.1.0.zip
  02-oracle-basic:
    sources:
      /usr/lib: https://s3-us-west-2.amazonaws.com/xyz/instantclient-basic-linux.x64-12.2.0.1.0.zip
  03-oracle_sql_plus:
    sources:
      /usr/lib: https://s3-us-west-2.amazonaws.com/xyz/instantclient-sqlplus-linux.x64-12.2.0.1.0.zip
  04-container_commands:
    00_oracle_dir:
      command: "export LD_LIBRARY_PATH=/usr/lib/instantclient_12_1"

据我所知,这些都没有在部署前运行。尝试安装 gem 时失败,因为该目录不存在。当我 SSH 进入实例时,LD_LIBRARY_PATH 没有设置,source 命令没有下载和解压缩任何 zip 文件。

1) 我的语法是否正确 2) 如何让这些命令执行 PRE 部署/捆绑安装?

【问题讨论】:

    标签: ruby-on-rails amazon-web-services amazon-elastic-beanstalk


    【解决方案1】:

    EB 有一个特定文件夹,您可以在其中执行脚本以运行预部署。我在我的.ebextensions 中创建了一个.config 文件,其中包含我希望在部署前执行的bash 命令。它会在"/opt/elasticbeanstalk/hooks/appdeploy/pre/ 中创建一个运行的文件

    001_script.config

    files:
      "/opt/elasticbeanstalk/hooks/appdeploy/pre/001_oracle.sh":
        mode: "000755"
        owner: root
        group: root
        content: |
          #!/usr/bin/env bash
          bash commands you want executed here
          ...
          ...
    

    【讨论】:

      【解决方案2】:

      首先,.ebextensions 是一个目录,而不是一个文件。在该目录中,您需要创建一个扩展名为 .config 的文件。

      此外,YAML 对空格非常敏感,因此您需要与间距保持一致。

      试试这个(不过,我不能 100% 确定 sources 可以接收多个文件 - 您可能需要创建三个单独的 .config 文件...)

      .ebextensions/01-oracle.config

      sources:
        /usr/lib: https://s3-us-west-2.amazonaws.com/xyz/instantclient-sdk-linux.x64-12.2.0.1.0.zip
        /usr/lib: https://s3-us-west-2.amazonaws.com/xyz/instantclient-basic-linux.x64-12.2.0.1.0.zip
        /usr/lib: https://s3-us-west-2.amazonaws.com/xyz/instantclient-sqlplus-linux.x64-12.2.0.1.0.zip
      

      最后,这样设置LD_LIBRARY_PATH变量是行不通的;它将在部署期间设置,但不会持续存在。您可以使用eb setenv 从命令行设置环境变量,也可以从 ElasticBeanstalk 控制台上的“配置”选项卡设置环境变量。

      更多信息可以在in the documentation找到。

      【讨论】:

        猜你喜欢
        • 2017-05-24
        • 1970-01-01
        • 2017-08-02
        • 1970-01-01
        • 2022-09-25
        • 2017-11-02
        • 2016-06-30
        • 2019-06-25
        • 2016-02-24
        相关资源
        最近更新 更多