在EC2中启动到我们VPC的实例需要HTTP_PROXY和合作伙伴才能访问位于VPC之外的任何东西。
现在我遇到了一个问题(使用数据pipe道),在这里我无法控制为cloud-config传入的用户数据。 鉴于没有设置代理,我可以在cloud-init用户脚本中看到wget挂起(尝试连接)。
在/etc/environment设置了环境variables,看起来这不是在运行级别3(这使用一个积极的古老的Amazon Linux 2013.03 , ps axf表明它是从runlevel 3调用,但我不得不承认我不熟悉各种init守护进程及其与cloud-init的交互):
1354 ? S 0:00 \_ /bin/bash /etc/rc3.d/S99cloud-init-user-scripts start 1355 ? S 0:00 \_ /usr/bin/python2.6 /usr/bin/cloud-init-run-module once-per-instance user-scripts execute run-parts /var/lib/cloud/data/scripts 1356 ? S 0:00 \_ /bin/bash /usr/bin/run-parts /var/lib/cloud/data/scripts 1360 ? S 0:00 \_ /bin/bash /var/lib/cloud/data/scripts/part-000 1362 ? S 0:00 \_ wget -O remote-runner-install -N http://datapipeline-ap-southeast-2.s3.amazonaws.com/ap-southeast-2/bootstrap-actions/latest/TaskRu... \ \ This works in a login shell as I've set the variables in /etc/environment
在这里设置这些variables似乎不起作用:
我如何设置在cloud-init 运行时使用的代理?
目前没有好的方法来在运行时将代理添加到云初始化。 在launchpad / cloud-init上有一个关于它的开放bug。
在注释中提到了解决方法,但是它们都是固有的特定于应用程序的(例如yum或apt ),在其configuration中设置代理variables。