我正在創建一個雲信息模板,該模板創建一些資源,如EC2實例autoscaling group
和launchConfiguration
。 通過launchConfiguration
資源的userData
財產,我試圖安裝Cloudwatch agent
如下:無法通過Amazon ECS優化的AMI上的雲信息安裝cloudwatch代理
"UserData":{ "Fn::Base64" : {
"Fn::Join" : ["", [
"#!/bin/bash -xe\n",
"yum -y install aws-cfn-bootstrap\n",
"/opt/aws/bin/cfn-init -v",
" --stack ", { "Ref": "AWS::StackName" },
" --resource LaunchCongig",
" --region ", { "Ref" : "AWS::Region" },"\n",
"yum -y install wget\n",
"# Get the CloudWatch Logs agent\n",
"wget https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py\n",
"# Install the CloudWatch Logs agent\n",
"python ./awslogs-agent-setup.py -n -r ", { "Ref" : "AWS::Region" }, " -c /etc/cwlogs.cfg || error_exit 'Failed to run CloudWatch Logs agent setup'\n",
"service awslogs start"
]]}
SSH連接實例後,我檢查了文件/var/log/cloud-init-output.log
,看看是否一切都很好,但這裏是我得到了什麼:
+ wget https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py
--2017-02-17 14:36:10-- https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py
Resolving s3.amazonaws.com (s3.amazonaws.com)... 52.216.226.59
Connecting to s3.amazonaws.com (s3.amazonaws.com)|52.216.226.59|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 47998 (47K) [text/x-python]
Saving to: ‘awslogs-agent-setup.py’
0K .......... .......... .......... .......... ...... 100% 196K=0.2s
2017-02-17 14:36:10 (196 KB/s) - ‘awslogs-agent-setup.py’ saved [47998/47998]
+ python ./awslogs-agent-setup.py -n -r eu-west-1 -c /etc/cwlogs.cfg
Step 1 of 5: Installing pip ...Traceback (most recent call last):
File "./awslogs-agent-setup.py", line 1144, in <module>
main()
File "./awslogs-agent-setup.py", line 1140, in main
setup.setup_artifacts()
File "./awslogs-agent-setup.py", line 693, in setup_artifacts
self.install_pip()
File "./awslogs-agent-setup.py", line 600, in install_pip
fail("Could not install pip. Please try again or see " + AGENT_SETUP_LOG_FILE + " for more details")
TypeError: fail() takes exactly 2 arguments (1 given)
+ error_exit 'Failed to run CloudWatch Logs agent setup'
/var/lib/cloud/instance/scripts/part-001: line 8: error_exit: command not found
Feb 17 14:36:12 cloud-init[2798]: util.py[WARNING]: Failed running /var/lib/cloud/instance/scripts/part-001 [127]
Feb 17 14:36:12 cloud-init[2798]: cc_scripts_user.py[WARNING]: Failed to run module scripts-user (scripts in /var/lib/cloud/instance/scripts)
Feb 17 14:36:12 cloud-init[2798]: util.py[WARNING]: Running module scripts-user (<module 'cloudinit.config.cc_scripts_user' from '/usr/lib/python2.7/dist-packages/cloudinit/config/cc_scripts_user.pyc'>) failed
Cloud-init v. 0.7.6 finished at Fri, 17 Feb 2017 14:36:12 +0000. Datasource DataSourceEc2. Up 85.78 seconds
這個腳本有什麼問題?有沒有其他的方法來安裝代理? 謝謝。
編輯:
我想通了,是因爲也許python-pip
包沒有得到安裝,所以我說這個給userData
:
"yum -y install python-pip\n",
之後,我再次打出了模板,奇怪我得到了同樣的錯誤。
我usinh的Amazon ECS-optimized AMI
在CloudFormation :: Init中;我這樣做了: '{「Ref」:「ClusterName」},「/」,{「Ref」:「ContainerInstances」}'我還沒有測試,但這是一樣的做userData? – Somar
你能告訴我如何把這個腳本放在UserData中嗎? – Somar
由於您使用的是CloudFormation,我認爲使用'CloudFormation :: Init'來引用這些字段可能是更好的選擇,並且更易於管理。如果您直接從控制檯啓動實例,則該文檔中的示例僅用於完全從用戶數據進行配置。我會堅持已有的內容,只是使用文檔中的細節作爲參考進行比較 - 可能會添加'chkconfig awslogs on'以確保服務始終在實例重新啓動後始終啓動。 – wjordan