Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 2개 있습니다.)

Azure Cloud Service 배포시 사용자 정의 작업을 추가하는 방법

Azure Cloud Service에 배포 시 해당 VM 머신에 또 다른 작업을 하고 싶을 수가 있습니다. 가령, 특정 S/W를 설치한다든지 환경 변수를 추가하는 등의 작업이 될텐데요.

이런 경우 "Azure Cloud Service" 프로젝트에 포함된 ServiceDefinition.csdef 파일의 "<Startup />" 노드를 이용할 수 있습니다.

How to configure and run startup tasks for a cloud service
; https://azure.microsoft.com/en-us/documentation/articles/cloud-services-startup-tasks/

대개의 경우 작업이 1개로 끝나지 않을 것이므로 예제에서 보이듯이,

<ServiceDefinition name="MyService" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
    <WebRole name="WebRole1">
        ...
        <Startup>
            <Task commandLine="Startup.cmd" executionContext="limited" taskType="simple">
            </Task>
        </Startup>
    </WebRole>
</ServiceDefinition>

startup.cmd 파일로 .bat처럼 작업을 처리하면 됩니다.

수행할 명령어를 담은 startup.cmd 파일은 "Web Application" 프로젝트에 포함시키고 "Copy to Output Directory" 옵션을 "Copy if newer"로 설정해 반드시 /bin 폴더에 복사하도록 설정해야 합니다. (즉, Azure 배포 모듈은 "<Startup />"에 기술된 파일을 웹 응용 프로그램의 /bin 폴더에서 찾는다는 의미가 됩니다.)

그러고 보니, 예전에 이 방법을 통해 방화벽 포트를 여는 방법에 대해 소개했었죠. ^^

Azure - 네트워크 포트 여는 방법
; https://www.sysnet.pe.kr/2/0/1319

또한, <Task /> 노드는 1개 이상 설정할 수 있습니다. 그런 경우 위에서부터 차례대로 수행되지만 만약 선행 작업이 오류를 반환하는 경우 이후의 작업은 시도도 하지 않고 배포는 실패하게 됩니다.

당연하겠지만, Task/@commandLine의 인자로 .cmd 확장자 뿐만 아니라 .exe를 주는 것도 가능합니다.

<Startup>
    <Task commandLine="Installer.exe" executionContext="elevated" taskType="simple">
    </Task>
</Startup>

위의 설정은 installer.exe 파일을 /bin 폴더 하위에서 찾아 "elevated" 권한, 즉 관리자 권한으로 상승된 상태에서 실행하라는 것을 의미합니다.

.cmd나 .exe로 만들때 주의할 점은, 반드시 종료 코드가 0이어야만 다음 단계의 배포 작업으로 넘어간다는 것입니다. 이를 위해 .cmd 파일에서는 파일 마지막에 다음과 같이 명시적으로 종료 코드를 줄 수 있고,

EXIT /b 0

.exe의 경우 코드에서 반드시 0을 반환해야 합니다.

class Program
{
    static int Main(string[] args)
    {
        return 0;
    }
}

0이외의 값을 반환하면 웹 응용 프로그램 배포 단계까지 연결되지 않으므로, 만약 중요하지 않은 Task를 추가한 경우라면 필요 이상으로 오류 명시를 하지 않는 것이 좋습니다.




참고로, Task의 실행 환경에 적용되는 환경 변수를 설정하는 것도 가능합니다.

Define environment variables before a role starts
; https://azure.microsoft.com/en-us/documentation/articles/cloud-services-startup-tasks-common/

<Startup>
    <Task commandLine="Installer.exe"  executionContext="elevated" taskType="simple">
        <Environment>
            <Variable name="INSTALL_IN_AZURE" value="1" />
        </Environment>
    </Task>
</Startup>




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 8/11/2016]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 181  182  183  184  185  [186]  187  188  189  190  191  192  193  194  195  ...
NoWriterDateCnt.TitleFile(s)
351정성태10/8/200624638개발 환경 구성: 16. 성태의 무식한(!) 리눅스 탐방기. [4]
349정성태9/26/200623184디버깅 기술: 10. C++/CLI에서 제공되는 명시적인 파괴자의 비밀
347정성태10/6/200627113디버깅 기술: 9. .NET IDisposable 처리 정리 [1]
346정성태9/23/200620483개발 환경 구성: 15. 툴박스에 컨트롤이 자동으로 나타나도록 해주는 옵션 설정
345정성태9/20/200619699오류 유형: 12. WCF 오류 메시지 - Error while trying to reflect on attribute 'MessageContractAttribute'
343정성태10/18/200631605개발 환경 구성: 14. SandCastle 사용법 (NDoc을 대체하는 문서화 도구) [1]파일 다운로드1
344정성태9/20/200621799    답변글 개발 환경 구성: 14.1. 오류 유형 - GAC 에 등록된 DLL 에 대한 문서화 시 오류
340정성태9/15/200621086개발 환경 구성: 13. ISO 파일을 가상 CD-ROM으로 매핑해주는 프로그램
339정성태9/14/200620560오류 유형: 11. ProtocolsSection?
338정성태2/4/200728727개발 환경 구성: 12. BUG: 웹 서비스에서 DataTable 사용하기 [2]파일 다운로드1
350정성태10/2/200621988    답변글 개발 환경 구성: 12.1. ASMX 2.0 and SchemaImporterExtensions파일 다운로드1
335정성태8/20/200629624디버깅 기술: 8. COM+ 서버 응용 프로그램에 대한 F5 디버깅 방법
334정성태8/20/200624851디버깅 기술: 7. VS.NET 2003/2005의 다중 프로젝트 디버깅
333정성태8/20/200625325개발 환경 구성: 11. COM+ 서버 활성화 보안 설정
331정성태8/27/200618272개발 환경 구성: 10. 최대 절전 모드와 VPC 네트워크 문제
330정성태8/20/200618605개발 환경 구성: 9. VPC로 구성하는 개인 환경
328정성태8/20/200636449개발 환경 구성: 8. AppVerifier 사용법 [1]
327정성태8/16/200633252개발 환경 구성: 7. ActiveX 서명 과정 자동화 [1]
326정성태8/16/200627099Team Foundation Server: 13. Sysnet 웹 사이트 TFS Migration
322정성태8/15/200621913개발 환경 구성: 6. 4GB 메모리 구성 [1]
316정성태9/20/200641201디버깅 기술: 6. .NET 예외 처리 정리 [6]
309정성태12/27/200641991디버깅 기술: 5. PDB 이야기 [7]
310정성태8/5/200628964    답변글 디버깅 기술: 5.1. PDB 파일에 따른 Debug 정보 - WinForm + Library 유형의 프로젝트파일 다운로드1
311정성태8/10/200628561    답변글 디버깅 기술: 5.2. PDB 파일에 따른 Debug 정보 - .NET 2.0 Web Application Project + Library 유형의 프로젝트
312정성태8/5/200631269    답변글 디버깅 기술: 5.3. PDB 파일에 따른 Debug 정보 - .NET 2.0 Web Site Model 유형의 프로젝트
313정성태8/12/200630406    답변글 디버깅 기술: 5.4. VS.NET 2005 디버그 모드에서의 PDB 파일 사용 차이 (1)
... 181  182  183  184  185  [186]  187  188  189  190  191  192  193  194  195  ...