본문 바로가기

DevOps

DevOps - Ansible 설치 및 Windows 서버 연결 (Rocky Linux 9.5 기준)

728x90

서론: 반복적인 서버 작업, 이제는 자동으로

여러 서버를 관리하던 중 수작업으로 파일을 복사하거나 서비스를 재시작하려면 많은 시간이 필요합니다.

이로 인해 인재도 발생할 수 있기에 자동으로 작업을 해주는 Ansible을 선택했습니다.

Ansible은 에이전트 없이도 WinRM으로 Windows 서버를 제어할 수 있는 경량 자동화 도구입니다.

YAML로 작업을 정의하면, 여러 서버에 동시에 작업을 배포할 수 있어 매우 효율적입니다.

설치 환경 요약

  • 제어 서버: Rocky Linux 9.5
  • 대상 서버: Windows Server (WinRM 설정 필요)

1. Ansible 설치


dnf install -y ansible
ansible --version

2. WinRM 통신을 위한 패키지 설치


dnf install -y python3-winrm
dnf install -y python3-pip
pip3 install pywinrm

3. 인벤토리 파일 작성 (hosts.ini)

Ansible이 Windows 서버에 연결할 때 인증 방식으로 기본은 basic이지만,

보안을 고려해 NTLM (NT LAN Manager) 인증 방식을 사용했습니다.

NTLM은 암호를 평문으로 전송하지 않고 해시 기반 인증을 사용해서 기본 인증보다 더 안전하며,

내부망 환경에서 WinRM over HTTP(5985)와 함께 실무적으로 자주 사용됩니다.


[windows]
192.168.0.101

[windows:vars]
ansible_user=Administrator
ansible_password=비밀번호
ansible_connection=winrm
ansible_winrm_transport=ntlm
ansible_winrm_server_cert_validation=ignore
ansible_port=5985

ansible_winrm_server_cert_validation=ignore 설정은 테스트 환경에서만 사용하는 것을 권장합니다.
운영 환경에서는 WinRM over HTTPS(5986) + 인증서 기반 구성을 고려해보세요.

4. 연결 테스트


ansible -m win_ping -i hosts.ini windows

정상적으로 연결되면 아래와 같이 "pong" 응답이 돌아옵니다.

ping하면 pong, 핑~퐁! 이건 무슨 탁구도 아니고요 😅
그래도 이렇게 간단한 명령으로 연결 확인이 되면, 자동화의 첫 단추는 잘 끼워졌다고 볼 수 있죠.

연결이 안 된다면 WinRM 설정이나 방화벽 포트(기본 5985)를 다시 점검해보세요.

5. WinRM 설정 스크립트 (Windows 측)

PowerShell에서 아래 스크립트를 실행하면 WinRM 설정을 자동으로 구성해줍니다:


https://github.com/ansible/ansible/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1

결론

이제 Ansible이 Windows 서버에 접속 가능한 상태가 되었습니다.

다음 단계에서는 실제로 서비스 재시작, 패치 복사, 롤백 등의 작업을 YAML 파일로 구성하고,

Jenkins와 연동하여 버튼 한 번으로 실행하는 자동화 시스템 구축을 소개하겠습니다.

728x90
반응형