Windows 에 Ansible 설치하기
It Automation 도구인 앤서블은 Linux 뿐만 아니라 Windows 에서도 사용할 수 있으며 많은 playbook 들이 이식되어 있습니다.
설치
사전 요구 사항
ansible 을 사용하려면 .NET 4.0 이상과 Power Shell 3.0 이상이 필요하며 Windows 10 이라면 기본 설정되어 있습니다.
Windows 7 이나 Windows Server 2008 을 사용한다면 ansible windows_setup 에서 upgrade script 를 받아서 설치해주면 됩니다.
WinRM 활성화
이제 WinRM(Windows Remote Management) 서비스를 활성화해야 합니다.
powershell 을 관리자로 실행한 후에 다음 명령어를 실행합니다.
$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
WinRM listener 이 잘 떠 있는지 확인합니다.
winrm enumerate winrm/config/Listener
Listener Address = * Transport = HTTP Port = 5985 Hostname Enabled = true URLPrefix = wsman CertificateThumbprint ListeningOn = 127.0.0.1, 172.22.96.1, 192.168.137.1, ::1, fe80::5cd8:d34f:558e:71fd%2, fe80::7d9e:47fd:8858:3ca3%11, fe80::a059:ec0a:24c1:6967%28 Listener Address = * Transport = HTTPS Port = 5986 Hostname = LESSTIF-OFFICE Enabled = true URLPrefix = wsman CertificateThumbprint = BD73EA77988156287B9FD5CCBB1EF52215400236 ListeningOn = 127.0.0.1, 172.22.96.1, 192.168.137.1, ::1, fe80::5cd8:d34f:558e:71fd%2, fe80::7d9e:47fd:8858:3ca3%11, fe80::a059:ec0a:24c1:6967%28
WinRM listener 를 설정하기 위해 다음 명령어를 실행합니다. CertificateThumbprint 항목은 위에서 Listener 정보에 표시되는 정보로 교체해 주면 됩니다.
$selector_set = @{ Address = "*" Transport = "HTTPS" } $value_set = @{ CertificateThumbprint = "BD73EA77988156287B9FD5CCBB1EF52215400236" } New-WSManInstance -ResourceURI "winrm/config/Listener" -SelectorSet $selector_set -ValueSet $value_set
Open SSH Server 설치
ansible 은 agent 가 없는 대신 SSH 로 연결해서 자동화하므로 SSH Server 를 설치해야 합니다.
MS 는 Windows capability 를 통해 SSH Server 를 설치할 수 있도록 했지만 오래된 방법이라 ansible 이 제대로 동작하지 않으므로 다음 방법으로 설치해 주면 됩니다.
직접 다운로드
Win32-OpenSSH wiki에 연결해서 설치 스크립트를 실행해서 다운로드 받습니다.
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 $url = 'https://github.com/PowerShell/Win32-OpenSSH/releases/latest/' $request = [System.Net.WebRequest]::Create($url) $request.AllowAutoRedirect=$false $response=$request.GetResponse() $([String]$response.GetResponseHeader("Location")).Replace('tag','download') + '/OpenSSH-Win64.zip' $([String]$response.GetResponseHeader("Location")).Replace('tag','download') + '/OpenSSH-Win32.zip'
choco 사용
패키지 관리자인 choco 로 Open SSH Server 를 설치합니다.
choco install --package-parameters=/SSHServerFeature openssh