Amazon EC2의 Windows 인스턴스 자동화

Amazon EC2의 Windows 인스턴스 자동화

저는 소프트웨어(~30MB)의 자동 배포가 필요한 컴퓨팅 서비스를 작업 중입니다. 소프트웨어는 WCF 서비스이므로 Windows에 갇혔습니다. 구현되지 않은 클래스를 많이 사용하기 때문에 모노를 사용할 수 없습니다.

기본적으로 활성화되어 있는 SSH 및 SFTP를 통해 Linux에 배포를 쉽게 수행할 수 있습니다. 텔넷 서비스는 Windows 인스턴스에서 수동으로 시작해야 합니다. 이를 위해 RDP를 활용할 수 있는 방법이 있습니까?

Telnet을 활성화하여 AMI를 생성할 수 있습니다. 하지만, 과한 것 같습니다.

사람들은 기본 Windows 인스턴스에서 배포를 어떻게 자동화합니까? 아니면 모든 사람이 소프트웨어가 이미 설치된 상태에서 AMI를 생성합니까?

답변1

RDP는 Windows 자동화에 적합한 선택이 아닙니다.

Windows용 SSH의 대안은 WinRM - Windows 원격 관리입니다. Powershell에는 WinRM에 대한 지원이 내장되어 있습니다. EC2를 사용하는 경우(질문에 나열되지 않았지만 질문에 EC2 태그가 지정됨) Amazon 기본 Windows 이미지에서 powershell이 ​​활성화됩니다. 보안 그룹에서 포트 5985를 열면 됩니다.

Powershell을 사용하여 연결하는 방법에 대한 지침은 다음과 같습니다.https://stackoverflow.com/questions/10237083/how-to-programmatically-remotely-execute-a-program-in-ec2-windows-instance/13284313#13284313

Windows용 SFTP의 대안은 CIFS(Windows 파일 공유)이지만 프로토콜이 암호화되지 않아 특별히 좋은 옵션은 아닙니다. Powershell 스크립트를 사용하여 파일을 전송할 수도 있습니다. 여기에서 샘플 스크립트를 참조하세요.http://poshcode.org/2216

자체 AMI를 생성해도 괜찮다면 cygwin과 해당 sshd 서버를 설치하십시오. 이렇게 하면 SSH를 통해 Windows 인스턴스로 파일을 전송하고 원격 실행할 수 있습니다.

답변2

RDP는 아마도 당신이 찾고 있는 것을 수행하는 최선의 방법은 아닐 것입니다.PowerShell 원격아마도 Linux 배포 "스토리"와 유사한 경험을 제공하는 가장 좋은 방법일 것입니다. 원격 시스템에서 대화형 셸 세션을 가져오거나 원격으로 스크립트를 실행할 수 있습니다.

Linux OS에 SFTP 서버가 포함되어 있는 데 익숙해졌기 때문에 Windows 세계에서의 파일 전송은 약간의 해킹처럼 느껴질 것입니다.

인터넷을 통해 직접 SMB 파일 공유 프로토콜을 실행할 수 있지만 이는 일반적으로 약간의 보안 위험으로 간주됩니다.

RDP 프로토콜에는 파일 전송 기능이 내장되어 있지만 일괄/비대화형 방식으로 RDP 클라이언트를 사용하는 것은 위험한 해킹이 될 것입니다(RDP의 파일 전송 메커니즘 자체가 약간 멍청한 해킹).

Powershell 자체는원격 서버에서 파일 다운로드와 비슷한 방식으로 wget. 저는 작업 시 원격 Windows 서버에 코드 배포를 수행하지 않지만, 내장된 기능만 사용하기 때문에 이 방법을 사용하여 코드를 원격 서버로 "풀"하는 것을 강력히 검토하고 싶습니다.

답변3

인프라와 WCF 서비스 배포를 자동화하려고 하는지 확실하지 않습니다.

코드 배포

Windows에는 몇 가지 방법이 있지만 마법의 답은 없습니다. 그리고 아키텍처는 Linux와 다르지 않습니다. 사용하는 도구와 Windows에서 기본적으로 사용할 수 있는 도구에 차이가 있습니다.

1) SSH, SFTP, Telenet 등 중 하나를 설치한 다음 배치 또는 Powershell과 함께 Linux에서 지금과 유사한 방법을 사용합니다. Evan Anderson이 말했듯이 Linux에서 사용할 수 있는 도구 때문에 이것이 이상하게 느껴질 수도 있습니다.

Java로 작업한 경우 일반 프로세스는 동일합니다. 즉, 배포하기 전에 코드를 빌드해야 하며 배치 스크립트 또는 Powershell을 사용하여 모두 자동화할 수 있습니다.

2) 더 확장 가능한 방법은 Octopus와 같은 자동화된 배포 서버(배포 대상에 설치된 에이전트)를 사용하고 선택적으로 Jenkins 또는 Bamboo와 같은 빌드 서버를 사용하는 것입니다. Git과 같은 코드 저장소에 있는 코드와 함께 지속적인 통합 및 배포를 수행하거나 git 저장소의 특정 분기를 기반으로 수동 자동화를 수행할 수 있습니다.

다시 말하지만 일반적인 프로세스는 Linux의 Java 또는 다른 언어와 동일합니다.

관련 정보