19

我希望我可以对 .ebextensions 配置使用条件,但我不知道如何使用它,我目前的情况是:

.ebextensions 配置内容之一是创建一个文件夹,实际上必须创建的文件夹只有一次,因为如果我第二次或更多次部署应用程序,我会遇到错误,并且错误说“文件夹已经存在” .

所以我需要给出条件,如果文件夹已经存在,则不需要再次运行创建文件夹的命令。

如果有人对如何实现这一目标有任何见解或方向,我将不胜感激。谢谢!

4

2 回答 2

34

.ebextensions 配置文件允许通过在命令上使用test:指令来有条件地执行命令。然后该命令仅在测试为真时运行(返回 0)。

示例.ebextensions/create_dir.config文件:

commands:
  01_create_dir:
    test: test ! -d "${DIR}"
    command: mkdir "${DIR}"

如果目录不存在,另一个示例(实际在 EB 上测试)有条件地运行脚本:

commands:
  01_intall_foo:
    test: test ! -d /home/ec2-user/foo
    command: "/home/ec2-user/install-foo.sh"
    cwd: "/home/ec2-user/"

AWS 的稀疏文档在这里:

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-commands

PS。如果您只需要有条件地创建目录,则可以不带条件地执行此操作,使用-p选项mkdir来有条件地创建目录,如下所示:

commands:
  01_create_dir:
    command: mkdir -p "${DIR}"
于 2014-12-10T19:44:44.397 回答
11

我认为唯一的方法是使用 shell 条件:

commands:
  make-directory:
    command: |
      if [ ! -f "${DIR}" ]; then
        mkdir "${DIR}"
      fi

请参阅jcabi-beanstalk-maven-plugin中的更大示例。

于 2013-06-18T13:00:37.603 回答