我有一个启动配置和自动缩放组设置。启动配置使用我已经创建的AMI,基于Ubuntu 14.04,安装Nginx,Git,并将我的静态文件存储为Nginx的/ usr / share / nginx / html /目录中的Git仓库。
问题:我的nginx / html目录中的静态文件只有我创建时在AMI中加载的文件的新文件。
为了解决这个问题,我尝试在启动配置中添加“用户数据”字段。该字段定义为:
#! /bin/bash
cd /usr/share/nginx/html/
git pull origin master
<my git repo's password>
但是当我检查实例是否有最新版本的repo时,我发现它没有。我的脚本出了点问题,我不确定是什么。
我已经测试过通过SSH将这些命令逐个输入到EC2实例中,并且它完全按预期工作。
为什么这不适用于用户数据字段?
注意:我已经验证了'bash'文件确实存在于/ bin / bash中。
答案 0 :(得分:1)
您需要使用repo url
传递存储库的用户名和密码示例示例:
#! /bin/bash
cd /usr/share/nginx/html/
git clone https://username:password@yourRepoURL.git
答案 1 :(得分:0)
问题绝对存在于bash脚本中。它包含的所有内容都由bash执行,因此它实际上会尝试将您的密码作为命令执行。
有多种方法可以在脚本中为Git提供密码。例如,请参阅此问题:How to provide username and password when run "git clone git@remote.git"?
这主要取决于你需要它的安全性。也许它足以在Git的配置中使用纯文本密码(如果你为该文件设置限制模式,它不会那么糟糕,它类似于使用私有没有密码的密钥)。
答案 2 :(得分:0)
我问过这个问题已经有一段时间了 - 从那以后我学到了很多东西。
您可以将用户名和密码作为网址的一部分传递,但这是不好的形式,就好像您与任何人共享代码或让任何人访问您的脚本,然后他们就会知道您的帐户凭据。
执行此操作的最佳方法是将服务器设置为通过SSH连接到您的Git仓库 - 我相信这是行业最佳实践,因为它更安全且无密码。