cloud-init 运行时或之前的代理设置

cloud-init 运行时或之前的代理设置

在 EC2 中启动到我们的 VPC 中的实例需要HTTP_PROXY合作伙伴设置为访问位于 VPC 之外的任何内容。

现在我遇到了一个问题(使用数据管道),我无法控制传入 cloud-config 的用户数据。由于未设置代理,我可以看到 wget 在 cloud-init 用户脚本期间挂起(尝试连接)。

设置环境变量后,/etc/environment似乎在运行级别 3 无法读取它(这使用了一个非常古老的Amazon Linux 2013.03,并ps axf表明它是从运行级别 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

在这里设置这些变量似乎不起作用:

  • /etc/环境
  • /etc/sysconfig/cloudinit

如何设置 cloud-init 期间使用的代理运行

答案1

目前还没有好的方法可以在运行时向 cloud init 添加代理。有一个未解决的错误在 launchpad/cloud-init 上

评论中提到了解决方法,但它们本质上都是特定于应用程序的(例如,yumapt),在其配置中设置代理变量。

答案2

在 openstack 中创建 ubuntu 实例时 cloud-init 的用户数据示例:

#cloud-config
write_files:
  - path: /etc/apt/apt.conf.d/00-proxy
    permissions: 0640
    owner: root
    content: |
      Acquire::http { Proxy "http://example.com:8080"; };
      Acquire::https { Proxy "http://example.com:8080"; };
      Acquire::http::Pipeline-Depth "23";
      Acquire::Languages "none";
   
package_upgrade: true

packages:
  - wget
  - sysstat
  - screen

相关内容