2011-10-06 2 views
7

주식 시동 프로세스가 Windows에서 약간 부족한 것 같습니다.Windows 용 Cloud-Init에 상응하는 기능은 무엇입니까?

Linux에는 패키지를 설치하고 파일을 저장하며 사용자 데이터에서 bash 스크립트를 실행하는 cloud-init이 있습니다.

Windows에는 ec2config가 있지만 현재 시스템이 "준비"상태 일 때 cmd 나 powershell 스크립트를 실행할 수 없습니다. 즉 모든 초기 재부트가 완료되었음을 의미합니다.

타사 옵션이있는 것 같습니다. 예를 들어 RightScale에는이 기능을 수행하는 RightLink 에이전트가 있습니다.

오픈 소스 옵션이 있습니까? Ec2Config에이 기능을 추가 할 계획이 있습니까? 내 자신을 만들어야합니까?

내가 누락 된 항목이 있습니까?

답변

14

은 아마존에서 제공하는 AMI를에 EC2Config 지금 the 11-April-2012 updates의로 "사용자 데이터 스크립트"를 지원하는 것으로 나타납니다.

설명서가 아직 업데이트되지 않았으므로 PowerShell 또는 cmd.exe 스크립트 만 지원하는지 알기가 어렵습니다. 나는 좀 더 자세한 내용을 얻기 위해 posted a question on the AWS forums을 사용했고, 더 많은 것을 배울 때 여기에서 업데이트 할 것입니다.

업데이트 : cmd.exe 일괄 구문이 지원되며 PowerShell을 호출 할 수 있습니다. AMI에는 EC2Config 문서의 새 버전이 포함되어 있습니다. 그것에서 인용 :

[EC2Config]는 태그 <script></script>이 포함되어 있는지 확인 후, 예를 들어 지정된 사용자 데이터를 읽고 있습니다. 양쪽 모두를 찾으면 두 태그 사이에서 정보를 가져 와서이 응용 프로그램의 설정 폴더에있는 배치 파일에 저장합니다. 그런 다음 인스턴스 시작시 배치 파일을 실행합니다.

배치 파일은 sysprep 후에 인스턴스를 처음 시작할 때만 만들어지고 실행됩니다. 배치 파일을 생성하여 다시 실행하려면 Ec2HandleUserdata 플러그인 상태를 Enabled로 설정하십시오.

업데이트 2 : 내 해석 is confirmed 3 UPDATE

Shon from the AWS Team의 : 그리고 월 2012 AMI를 기준으로, PowerShell을가 <powershell/> 태그를 사용하여 지원됩니다.

+0

OP가 듣고 있다면, 나는이 순간에이 대답이 받아 들여진 대답으로 표시되어야한다고 생각합니다. – blong

+1

@blong - agree –

0

우리는 스스로 그것을 만들어야했습니다. 우리는 커스텀 서비스로 이것을 수행했고 우리 자신의 AMI를 만들었습니다. EC2Config에는 현재이를 수행 할 수있는 조항이 없습니다.

더 나은 방법은 인스턴스가 "준비"상태인지 확인하는 쉬운 방법이 없습니다. 우리는 EC2Config의 로그 파일을 테일 링하여이를 수행해야했습니다.

+0

GitHub의 무엇에 대해 단지 Ec2Config을 삭제하고 사용자 정의 서비스를 부트 스트랩 과정을 조율? 그것은 Ec2Config가 그렇게 많이하는 것처럼 아닙니다. –

+0

. Ec2Config는 필요하지 않습니다. 우리는 부트 스트래핑을 위해 그것을 "사용"하지 않습니다. 인스턴스를 진정으로 준비 할 수 있다고 믿는 유일한 방법은 Ec2ConfigLog.txt 파일에서 "Windows를 사용할 준비가되었습니다"를 찾는 것입니다. 인스턴스가 설정되고 재부팅되는 시점을 정말로 알고 싶다면 미친 문제입니다. – Joe

+1

나는이 길로 가기로 결정했다. Ec2Config는 일부 시작 작업을 자동화합니다. 바퀴를 재발 명할 필요가 없습니다. 예를 들어 임시 볼륨을 포맷하고 필요할 경우 기계의 이름을 변경합니다. 다행히도 Ec2Config의 향후 버전에서는이 프로세스를 단순화하기 위해 "ready"이벤트 후크를 추가합니다. –

2

나 자신을 만들어야했지만 매우 쉬웠다. 그냥 시작할 때 사용자 데이터를 읽고 PowerShell 스크립트로 파일을 실행하는 서비스를 만들었습니다.

서비스를 시작할시기를 알지 못하는 문제를 해결하기 위해 서비스 시작 유형을 "지연된 자동"으로 설정하여 문제를 해결 한 것으로 보입니다. 그러나 당신이해야 할 일이 무엇인지에 따라 당신을 위해 일할 수도 있고 그렇지 않을 수도 있습니다.

1

Windows 용으로 이미 만들어진이 도구가있는 새로운 코드 플렉스 프로젝트를 추가했습니다. 앞으로 몇 가지 피드백을 기대합니다.

http://cloudinitnet.codeplex.com/

+0

필자는 이것을보고 문제 등을 사용 해왔다. * 훌륭한 도구이다. –

+0

개인 프로젝트의 경우이 도구로 전환하고 싶습니다. 매우 흥미로운 것 같습니다. –

+0

질문이 있으시면이 사이트 (저도 생각합니다) 또는 codeplex 사이트에 저에게 연락하여 질문이 있으시면 도움을 드릴 것입니다. – bwight

0

최근 nssm (at nssm.cc)에서 서비스로 간단한 배치 파일 (또는 다른 거의 모든 것)을 쉽게 래핑했습니다. 그러면 서비스 초기화 시퀀스의 특정 지점에서 배치 파일을 강제로 실행하도록 config servic1 depend = service0을 구성 할 수 있습니다. ex2config와 sql 익스프레스 사이에 d를 사용하여 폴더를 생성합니다. 서비스 도구를 사용하여 네트워크 서비스로 실행하고 regedit를 사용하여 AppExit 속성을 Ignore로 변경해야하지만 모든 기능을 갖추면 제대로 작동합니다.