일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- GIT
- API
- AWS
- ELK
- GCP
- Selenium
- elasticsearch
- kibana
- 크롤링
- powershell
- 데이터 분석
- DB
- 시스템자동화
- zabbix
- tcp
- ubuntu
- python
- MySQL
- 5.0
- 8.0
- 자동화
- EC2
- ansible
- Automation
- crawling
- EKS
- airflow
- Linux
- apt
- module
Archives
- Today
- Total
Oops - IT
Ansible Windows 서버 파일 배포 본문
반응형
Ansible을 이용하여 Windows 서버에 파일을 배포하는 방법에 대해서 알아보겠습니다.
Ansible에서 Windows 서버 통신을 위해 Winrm이라는 모듈을 사용하며 Python에 pywinrm 라이브러리를 Install 하는 작업이 필요합니다.
** OS 환경: Ansilbe 서버(Ubuntu 18.04) / Windows 서버(Windows 2019)
1. Winrm 동작 상태 확인
- Windows 서버 접속 후에 WInrm 서비스가 동작 중인지 먼저 확인하겠습니다.
- 실행->Services.msc 접속 후 아래와 같이 Winrm 서비스가 실행 중인지 체크해주세요
- Linux 서버와 통신 상태 확인
- https: 5986 / http: 5985 -> HTTPS 작업을 위해서는 Windows 서버에서 별도의 작업이 필요합니다.
- 저는 http를 이용하여 작업할 예정이므로 5985 포트 통신이 가능한 지 확인합니다.
- 아래와 같이 netstat, nc 명령어를 사용해 확인해줍니다.
2. hosts 파일 작성
- Ansible로 작업을 진행할 Windows 서버 정보를 hosts 파일에 입력해줍니다.
- 계정 정보가 들어가므로 vault 파일 형태로 관리하는 것이 좋습니다.
- 신규 생성 시 ansible-vault create [파일 명]
- 수정 시 ansible-vault edit [파일 명]
- 위의 명령어를 통해 hosts 파일을 여신 후 아래와 같이 정보를 입력해줍니다.
- 저는 winrm 인증 방식은 basic, port는 5985번을 사용합니다.
- 명령어 정리
## 신규 생성 시
# ansible-vault create /etc/ansilbe/hosts
## vault로 생성된 파일 수정 시
# ansible-vault edit /etc/ansilbe/hosts
[windows]
AD-OP-DC01 ansible_host=192.168.137.13
[windows:vars]
ansible_user=[계정 명]
ansible_password=[계정 암호]
ansible_connection=winrm
ansible_winrm_transport=basic
ansible_port=5985
:wq
3. role 파일 작성
- 파일 복사를 실행할 role 파일을 구성해줍니다.
- roles 신규 생성
# ansible-galaxy init /etc/ansible/roles/[생성할 role이름]
- tasks 생성
# vim /etc/ansible/roles/[role 이름]/tasks/main.yml
.
.
---
- name: copy test file
win_copy:
src: test.txt
dest: C:\temp\test.txt
.
.
:wq
- 복사할 test.txt 파일 작성
# vim /etc/ansible/roles/[role 이름]/files/test.txt
.
.
ansilbe copy file test
.
.
:wq
4. playbook 생성
- Ansible을 실행할 Playbook 파일을 생성해줍니다.
# vim /etc/ansible/playbooks/[플레이북 명].yml
.
.
---
- hosts: windows
roles:
- win-test
.
.
:wq
5. playbook 실행
- 생성한 Playbook을 실행시켜줍니다.
# ansible-playbook --ask-vault-pass /etc/ansible/playbooks/[플레이북 명].yml
<암호 입력>
** Module awinrm or requests is not installed: No module named winrm 오류 발생
- 해결 방법
# pip install pywinrm
* pip 설치가 안되어있을 시
# apt-get install python-pip
# pip install pywinrm
* Python3 사용 시
# apt-get install python3-pip
# pip3 install pywinrm
- 재 실행
** "basic: the specified credentials were rejected by the server 인증 관련 오류 발생
- 해결 방법
> winrm get winrm/config 설정 상태 확인
** Auth Basic = true 상태 확인 / AllowUnencrypted = true 상태 확인
> Set-Item -Path WSMan:\localhost\Service\Auth\Basic -Value $true
> Set-Item -Path WSMan:\localhost\Service\AllowUnencrypted -Value $true
> Enable-PSRemoting -Force
> Set-Item WSMan:\localhost\Client\TrustedHosts -Value [Ansible 서버 IP]
5. 실행 결과 확인
- 아래와 같이 정상 실행됩니다.
- 서버 접속해서 확인해보면 아래와 같이 정상적으로 파일이 복사되었습니다.
반응형
'Ansible' 카테고리의 다른 글
Ansible Zabbix 운영 (0) | 2021.04.29 |
---|---|
Ansible 자주 쓰는 모듈 - 1 (0) | 2020.10.31 |
Ansible task 생성 및 실행 (0) | 2020.10.30 |
Ansible 설치 및 실행 (0) | 2020.10.30 |
Ansible 기본 명령어 (0) | 2020.10.25 |