서론: 반복적인 서버 작업, 이제는 자동으로
여러 서버를 관리하던 중 수작업으로 파일을 복사하거나 서비스를 재시작하려면 많은 시간이 필요합니다.
이로 인해 인재도 발생할 수 있기에 자동으로 작업을 해주는 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와 연동하여 버튼 한 번으로 실행하는 자동화 시스템 구축을 소개하겠습니다.
'DevOps' 카테고리의 다른 글
DevOps - Ansible로 Windows 서비스 자동화 구축하기 – 수작업 없이 패치·롤백·재시작까지 (1편) (0) | 2025.04.10 |
---|---|
DevOps - Rocky Linux 9.5에 Jenkins 설치하기 (자동화 서버 구축 시작) (1) | 2025.04.09 |
DevOps - Synology DSM 7에서 Docker를 활용한 SVN 서버 구축 및 복원하기 (0) | 2025.02.17 |
DevOps - Zabbix Agent2로 SSL 인증서 만료 모니터링 설정하기 | 자동 알림 및 트리거 활용 (0) | 2024.12.18 |
DevOps - CentOS 8에 Zabbix 5.0 설치 및 한글 깨짐 해결 방법 (0) | 2024.11.11 |