2017년 7월 2일 일요일

[Ansible] 윈도우 시스템 관리하기



앤서블 코리아 유저 그룹에 '윤기성'님이 신청해 주신 사..연?
윈도우 시스템 관리하기 편입니다. :)

(환호 환호)


....
그럼 시작합니다~

앤서블은 기본적으로 ssh를 통해서 python을 통해서 관리되게 됩니다. 
하지만...윈도우는 그 어느것도 기본 패키지에는 존재하지 않죠~

따라서, 누군가가 이걸 변환해 줘야 하는데...vagrant는 아래와 같이 winRM을 기본적으로 지원해서 알아서 해주지만, 앤서블은 이를 설치 구성해 주어야 합니다.~

(중간에 winRM이라는 부분을 찾아보세요~)

어쨌든 winRM을 리눅스에서 사용하기 위해서 해당 패키지를 pip를 통해서 받아야 하는데요 (앤서블 도큐먼트가 이렇게 권고함) 

우리는 vagrant를 통해서 센트OS(Ansible-Server)를 설치했고, 여기에는 당연하게도 pip가 없지요.....-_-;


(키보드 운동시켜주기)



그래서 [Vagrant] 15분만에 윈도우에서 Ansible 테스트 환경 구축하기 (서버 1대 + 노드 5대) 여기에 나온 bootstrap.sh를 수정해서 해당 패키지들이 설치되도록 재 구성합니다. 


(5-6번 라인 추가)

그리고 일일히 다시 구성하기 귀찮으니까 vagrant를 통해서 부셔버리고, 다시 만듭니다. 


그리고 'vagrant ssh ansible-server' 명령어를 통해서 접속 (ansible-server는 vagrantfile에 정의되어 있는 이름~!) 하고 난 뒤에 플레이북을 짜고 돌려보면, 에러만 잔뜩 나옵니다. 

[ win_chocolatey_ex.yml ]
---
- name: windows remote support for example.
  hosts: windows
  gather_facts: no
  connection: winrm

  tasks:
    - name: Install git
      win_chocolatey:   #windows program 설치해주는 모듈
        name: git
        state: present


왜 일까요~? 왜 일까요?
....이렇게 하고 숙제입니다. 라고 하고 가면..저는...수많은 지인들을 잃어버리겠죠?


그러면 안되니까....정답을 공개합니다. 
기본적으로 vagrant는 vagrant/vagrant라는 계정에 ssh(22번)등 리눅스에 최적화 되어 동작하지만, winRM을 사용하는 경우 개별 정보들은 모두 입력해 주어야 정상적으로 동작합니다. (하나하나 테스트가 필요한 항목 / 어디까지 디폴트도 될 것인가!!!)

여러가지 방법으로 알려줄수가 있는데..
1. 플레이북 파일에 포함(yml)
2. hosts 파일에 포함 
3. vars 파일을 만들어서 import 
4. 기타등등 

저는 테스트니까 2번으로 진행하였습니다아~

winRM은 기본적으로 사용하는 포트는 5985번 입니다.

그래서 /etc/ansible/hosts 파일에 다음과 같이 hard coding합니다. 
winrm을 써서 windows에다가 무언가를 할꺼야 라고 정의한거죠 

[vagrant@ansible-server ~]$ cat /etc/ansible/hosts
<중략>
[windows]
172.30.1.21 ansible_connection=winrm ansible_ssh_user=vagrant ansible_ssh_pass=vagrant ansible_ssh_port=5985


다른거 테스트하다가 추가합니다. (2017-08-14)
ansible_connection=winrm만 추가하면 
이름 넣어 이름 넣으라고 하고, 
그래서 이름 넣으면 
ansible_ssh_user는 vagrant라고!!!
포트를 5986으로 열라 많이 실행했는데 안되잖나!! 라고 합니다..-_-
그래서 포트도 지정 
ansible_ssh_port=5985
까지 하면 실행에는 문제가 없네요 




그러고 난 이후에 ping 테스트를 해보는데, 역시 winRM을 사용해야 하기때문에 ping이름도 win_ping입니다. 

작명센스가....하하하;;



어쨌든 위와 같이 잘 되는 걸 확인할 수가 있네요.

그러면 플레이북도 잘 되는지 봐야겠죠? 저희는 git을 설치해 볼 겁니다.
코드는 위에 있었어요~~~



설치 전


설치 후


뾰룡 뾰룡~!
AD가 있거나 하는 경우에는 kerberos도 써야 하고 좀더 생각을 해야 합니당 :) 
그리고 winRM을 통해서 이미 정의된 win으로 시작하는 명령어를 써도 되지만, powershell또는 batch를 짜고 파일을 전송해서 실행하는 것도 가능합니다. 
이건 취향의 문제니까요 :) 

참고 정보 : 
1. Windows Support 

2. Windows Modules 

0 개의 댓글:

댓글 쓰기

 
Copyright © . 시스템/네트워크 자동화 전문가 블로그 - Posts · Comments
Theme Template by BTDesigner · Powered by Blogger