Ansible은 리눅스와 윈도우 모두에서 사용 가능한 오픈 소스 구성 관리 및 자동화 도구입니다. 윈도우에서 Ansible을 사용하려면 몇 가지 구성이 필요합니다. 아래는 윈도우에서 Ansible을 구성하고 사용하는 방법에 대한 예시입니다.
### Ansible 구성
1. WinRM 구성
윈도우에서 Ansible을 사용하려면 WinRM 구성이 필요합니다. 이를 위해 다음 명령어를 실행하여 WinRM 구성 스크립트를 다운로드합니다.
```
Set-ExecutionPolicy Unrestricted
$PSVersionTable.PSVersion.Major
$url = "https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1"
$file = "$env:temp\ConfigureRemotingForAnsible.ps1"
(New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file)
powershell.exe -ExecutionPolicy ByPass -File $file
```
2. 인증서 설치
WinRM에는 SSL 인증서가 필요합니다. 인증서를 생성하고 설치하려면 다음 명령어를 실행합니다.
```
winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname="your.domain.name";CertificateThumbprint="YOURCERTTHUMBPRINT"}
```
3. 호스트 파일 업데이트
윈도우에서 Ansible을 사용하려면 호스트 파일을 업데이트해야 합니다. 호스트 파일을 업데이트하려면 다음 명령어를 실행합니다.
```
notepad.exe C:\Windows\System32\drivers\etc\hosts
```
호스트 파일에 Ansible 관리 노드의 IP 주소와 도메인 이름을 추가합니다.
```
192.168.0.10 ansible.example.com
```
4. Ansible 설치
윈도우에서 Ansible을 사용하려면 우선 Python 및 pip를 설치해야 합니다. 그런 다음 다음 명령어를 실행하여 Ansible을 설치합니다.
```
pip install ansible
```
### Ansible 윈도우 모듈 사용
윈도우에서 Ansible을 사용하려면 다음과 같은 윈도우 모듈을 사용할 수 있습니다.
1. win_ping 모듈
win_ping 모듈은 윈도우 호스트와 연결을 테스트합니다. 다음 명령어를 실행하여 win_ping 모듈을 사용할 수 있습니다.
```
ansible win -i hosts -m win_ping
```
2. win_shell 모듈
win_shell 모듈은 윈도우에서 명령어를 실행합니다. 다음 명령어를 실행하여 win_shell 모듈을 사용할 수 있습니다.
```
ansible win -i hosts -m win_shell -a "dir c:\"
```
3. win_command 모듈
win_command 모듈은 윈도우에서 명령어를 실행합니다. win_shell 모듈과 달리 명령어를 실행할 때 셸을 사용하지 않습니다. 다음 명령어를 실행하여 win_command 모듈을 사용할 수 있습니다.
```
ansible win -i hosts -m win_command -a "dir c:\"
```
4. win_service 모듈
win_service 모듈은 윈도우 서비스를 관리합니다. 다음 명령어를 실행하여 win_service 모듈을 사용할 수 있습니다.
```
ansible win -i hosts -m win_service -a "name=SERVICE_NAME state=stopped"
```
위의 명령어는 SERVICE_NAME이라는 윈도우 서비스를 중지합니다.
5. win_file 모듈
win_file 모듈은 윈도우에서 파일을 생성, 삭제, 복사 및 이동합니다. 다음 명령어를 실행하여 win_file 모듈을 사용할 수 있습니다.
```
ansible win -i hosts -m win_file -a "path=C:\Temp\test.txt state=touch"
```
위의 명령어는 C:\Temp\test.txt 파일을 생성합니다.
6. win_copy 모듈
win_copy 모듈은 윈도우에서 파일을 복사합니다. 다음 명령어를 실행하여 win_copy 모듈을 사용할 수 있습니다.
```
ansible win -i hosts -m win_copy -a "src=/path/to/local/file dest=C:\Temp\test.txt"
```
위의 명령어는 로컬 시스템에서 /path/to/local/file 파일을 C:\Temp\test.txt 파일로 복사합니다.
7. win_template 모듈
win_template 모듈은 윈도우에서 템플릿 파일을 사용하여 파일을 생성합니다. 다음 명령어를 실행하여 win_template 모듈을 사용할 수 있습니다.
```
ansible win -i hosts -m win_template -a "src=/path/to/template dest=C:\Temp\test.txt"
```
위의 명령어는 /path/to/template 템플릿 파일을 사용하여 C:\Temp\test.txt 파일을 생성합니다.
8. win_get_url 모듈
win_get_url 모듈은 윈도우에서 원격 파일을 다운로드합니다. 다음 명령어를 실행하여 win_get_url 모듈을 사용할 수 있습니다.
```
ansible win -i hosts -m win_get_url -a "url=https://example.com/test.zip dest=C:\Temp\test.zip"
```
위의 명령어는 example.com에서 test.zip 파일을 다운로드하여 C:\Temp\test.zip에 저장합니다.
9. win_unzip 모듈
win_unzip 모듈은 윈도우에서 zip 파일을 압축 해제합니다. 다음 명령어를 실행하여 win_unzip 모듈을 사용할 수 있습니다.
```
ansible win -i hosts -m win_unzip -a "src=C:\Temp\test.zip dest=C:\Temp"
```
위의 명령어는 C:\Temp\test.zip 파일을 압축 해제하여 C:\Temp 디렉토리에 저장합니다.
10. win_reboot 모듈
win_reboot 모듈은 윈도우 시스템을 다시 부팅합니다. 다음 명령어를 실행하여 win_reboot 모듈을 사용할 수 있습니다.
```
ansible win -i hosts -m win_reboot
```
위의 명령어는 윈도우 시스템을 다시 부팅합니다.
11. win_updates 모듈
win_updates 모듈은 윈도우 업데이트를 검색, 설치, 제거합니다. 다음 명령어를 실행하여 win_updates 모듈을 사용할 수 있습니다.
```
ansible win -i hosts -m win_updates -a "state=installed category_names=Security"
```
위의 명령어는 보안 업데이트를 검색하여 설치합니다.
12. win_feature 모듈
win_feature 모듈은 윈도우 기능을 관리합니다. 다음 명령어를 실행하여 win_feature 모듈을 사용할 수 있습니다.
```
ansible win -i hosts -m win_feature -a "name=TelnetClient state=enabled"
```
위의 명령어는 Telnet 클라이언트 기능을 활성화합니다.
13. win_domain_membership 모듈
win_domain_membership 모듈은 윈도우 도메인 멤버십을 관리합니다. 다음 명령어를 실행하여 win_domain_membership 모듈을 사용할 수 있습니다.
```
ansible win -i hosts -m win_domain_membership -a "name=EXAMPLE.COM user=example\\user password=PASSWORD state=domain"
```
위의 명령어는 EXAMPLE.COM 도메인에 윈도우 시스템을 추가합니다.
14. win_user 모듈
win_user 모듈은 윈도우 사용자를 관리합니다. 다음 명령어를 실행하여 win_user 모듈을 사용할 수 있습니다.
```
ansible win -i hosts -m win_user -a "name=example password=PASSWORD state=present"
```
위의 명령어는 example 사용자를 생성합니다.
15. win_group 모듈
win_group 모듈은 윈도우 그룹을 관리합니다. 다음 명령어를 실행하여 win_group 모듈을 사용할 수 있습니다.
```
ansible win -i hosts -m win_group -a "name=example state=present"
```
위의 명령어는 example 그룹을 생성합니다.
16. win_file 모듈
win_file 모듈은 윈도우 파일 시스템에서 파일과 디렉토리를 생성, 복사, 이동, 삭제합니다. 다음 명령어를 실행하여 win_file 모듈을 사용할 수 있습니다.
```
ansible win -i hosts -m win_file -a "path=C:\Temp\test.txt state=file"
```
위의 명령어는 C:\Temp 디렉토리에 test.txt 파일을 생성합니다.
17. win_service 모듈
win_service 모듈은 윈도우 서비스를 관리합니다. 다음 명령어를 실행하여 win_service 모듈을 사용할 수 있습니다.
```
ansible win -i hosts -m win_service -a "name=Spooler state=restarted"
```
위의 명령어는 Spooler 서비스를 다시 시작합니다.
18. win_firewall_rule 모듈
win_firewall_rule 모듈은 윈도우 방화벽 규칙을 관리합니다. 다음 명령어를 실행하여 win_firewall_rule 모듈을 사용할 수 있습니다.
```
ansible win -i hosts -m win_firewall_rule -a "name='Test Rule' action=allow direction=in protocol=TCP localport=80"
```
위의 명령어는 이름이 'Test Rule'인 TCP 포트 80을 허용하는 방화벽 규칙을 생성합니다.
19. win_package 모듈
win_package 모듈은 윈도우 패키지를 설치, 업그레이드, 제거합니다. 다음 명령어를 실행하여 win_package 모듈을 사용할 수 있습니다.
```
ansible win -i hosts -m win_package -a "name=Mozilla Firefox state=present"
```
위의 명령어는 Mozilla Firefox 패키지를 설치합니다.
20. win_registry 모듈
win_registry 모듈은 윈도우 레지스트리를 관리합니다. 다음 명령어를 실행하여 win_registry 모듈을 사용할 수 있습니다.
```
ansible win -i hosts -m win_registry -a "name='HKLM:\SOFTWARE\Test' state=present"
```
위의 명령어는 HKLM:\SOFTWARE\Test 키를 생성합니다.
21. win_domain 모듈
win_domain 모듈은 윈도우 도메인을 관리합니다. 다음 명령어를 실행하여 win_domain 모듈을 사용할 수 있습니다.
```
ansible win -i hosts -m win_domain -a "name=mydomain.local state=present"
```
위의 명령어는 mydomain.local 도메인을 생성합니다.
22. win_domain_computer 모듈
win_domain_computer 모듈은 윈도우 도메인 컴퓨터를 관리합니다. 다음 명령어를 실행하여 win_domain_computer 모듈을 사용할 수 있습니다.
```
ansible win -i hosts -m win_domain_computer -a "name=win-computer1 domain=mydomain.local state=domain"
```
위의 명령어는 win-computer1 컴퓨터를 mydomain.local 도메인에 추가합니다.
23. win_user 모듈
win_user 모듈은 윈도우 사용자를 관리합니다. 다음 명령어를 실행하여 win_user 모듈을 사용할 수 있습니다.
```
ansible win -i hosts -m win_user -a "name=testuser password=Test1234 state=present"
```
위의 명령어는 이름이 testuser이고 비밀번호가 Test1234인 사용자를 생성합니다.
24. win_group 모듈
win_group 모듈은 윈도우 그룹을 관리합니다. 다음 명령어를 실행하여 win_group 모듈을 사용할 수 있습니다.
```
ansible win -i hosts -m win_group -a "name=testgroup state=present"
```
위의 명령어는 testgroup 그룹을 생성합니다.
25. win_acl 모듈
win_acl 모듈은 윈도우 파일 및 디렉토리에 대한 접근 권한을 관리합니다. 다음 명령어를 실행하여 win_acl 모듈을 사용할 수 있습니다.
```
ansible win -i hosts -m win_acl -a "path=C:\Temp\test.txt user=testuser grant_type=allow rights=full"
```
위의 명령어는 C:\Temp\test.txt 파일에 대한 testuser 사용자의 전체 권한을 설정합니다.
'Ansible' 카테고리의 다른 글
Ansible Linux 설치 및 기본 (0) | 2023.05.01 |
---|---|
Ansible PlayBook 예시 (Windows Server용) (0) | 2023.04.29 |