Amazon-Web-Services
cloud-init 執行時/之前的代理設置
在 EC2 中啟動到我們的 VPC 中的實例需要
HTTP_PROXY
設置合作夥伴以訪問位於 VPC 之外的任何內容。現在我遇到了一個問題(使用數據管道),我無法控制為 cloud-config 傳入的使用者數據。鑑於未設置代理,我可以在 cloud-init 使用者腳本期間看到 wget 掛起(嘗試連接)。
在其中設置環境變數
/etc/environment
似乎不是在執行級別 3 讀取的(這使用了一個非常古老的Amazon Linux 2013.03
,並ps axf
表明它是從執行級別 3 呼叫的,但我不得不承認我不熟悉各種 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執行時使用的代理?
目前沒有在執行時向 cloud init 添加代理的好方法。在 launchpad/cloud-init 上有一個關於它的開放錯誤。
評論中提到了一些變通方法,但它們本質上都是特定於應用程序的(例如 for
yum
orapt
),在其配置中設置代理變數。
在 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