Ansible로 IIS 설정 확인

14457 단어 AnsibleIISAWS

1. 소개



Ansible에는 Windows용의 모듈도 여러가지 준비되어 있습니다만,
IIS 설정에 대해 무엇을 할 수 있는지 확인하고 싶습니다.

2. 환경



AWS에 다음 인스턴스를 구축합니다.
· Ansible을 실행하는 서버 (Amazon Linux 2)
· Windows Server 2019


3. 설정 순서



Windows Server 설정



Ansible 서버에서 통신할 수 있도록 Windows Server를 구성합니다.

WinRM 설정



WinRM이란?

WinRM은 Windows가 다른 서버와 원격으로 통신하는 데 사용하는 관리 프로토콜입니다. HTTP/HTTPS를 통해 통신하는 SOAP 기반 프로토콜이며 최근의 모든 Windows 운영 체제에 포함되어 있습니다.

공식 절차의 스크립트 을 사용합니다. Powershell에서 다음을 수행합니다.
PS> $url = "https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1"
PS> $file = "$env:temp\ConfigureRemotingForAnsible.ps1"
PS> (New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file)
PS> powershell.exe -ExecutionPolicy ByPass -File $file
Self-signed SSL certificate generated; thumbprint: ****************************************

wxf                 : http://schemas.xmlsoap.org/ws/2004/09/transfer
a                   : http://schemas.xmlsoap.org/ws/2004/08/addressing
w                   : http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd
lang                : en-US
Address             : http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
ReferenceParameters : ReferenceParameters

Ok.

폴더 만들기



다음 단계에서 사용할 폴더를 만듭니다.

IIS용 물리적 폴더: C:\inetpub\testsite
IIS용 웹 애플리케이션 물리적 폴더: C:\apps\testapp
IIS용 로그 저장 폴더: C:\sites\logs
IIS용 가상 디렉터리 폴더: C:\virtualdirectory\testdir

C:\inetpub\testsite 아래에 index.html을 둡니다.
마지막으로 브라우저에서 연결 확인을 실시합니다.

Linux 서버 설정



그런 다음 Linux 서버를 구성합니다.

다양한 설치



다음 두 가지를 설치합니다. 이번에는 2020/12 시점의 최신 버전을 지정하여 설치하고 있습니다.
pywinrm은 Linux에서 Windows 명령을 원격으로 실행하는 데 필요합니다.
$ pip install "ansible==2.10"
$ pip install "pywinrm==0.4.1"

인벤토리 파일 만들기



그런 다음 Ansible inventory 파일을 만듭니다.

인벤토리
[targets]
test_windows ansible_host=10.0.1.100

[targets:vars]
ansible_user=Administrator
ansible_password=**************************
ansible_port=5986
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore

※ 낡은 버전의 python이나 자기 증명서를 사용하고 있는 경우는 증명서 검증으로 에러가 되는 것 같습니다.
따라서 다음은 [targets:vars]에 설명되어 있습니다.
ansible_winrm_server_cert_validation=ignore

참고:
htps : // / cs. 안시 bぇ. 코 m / 안시 b ぇ / ㅁ st / 우세 r_ 구이로 / うんど ws_ 후 q. HTML
htps //w w. 레레 t. 코 m / 자 / 에 xp ぉ 레 / 안시 b

playbook.yml 만들기



playbook의 tasks에서 실행하는 것은 다음과 같습니다. 작업 순서를 바꾸면 IIS 트리 구조의 편리함으로 오류가 발생합니다.
· IIS 설치
· 애플리케이션 풀 생성
· IIS 사이트 만들기
· 웹 애플리케이션 작성
· 가상 디렉토리 만들기
· Windows 방화벽 수신 규칙 규칙 추가

이번에는 IIS의 Default Web Site를 사용하지 않고 새 사이트를 만듭니다.
또한 HTTP 포트는 8080을 사용하도록 구성되므로 Windows Firewall 규칙도 추가합니다.

playbook.yml
- hosts: targets
  gather_facts: no
  tasks:
    - name: Install IIS Web-Server with sub features and management tools
      ansible.windows.win_feature:
        name: Web-Server
        state: present
        include_sub_features: yes
        include_management_tools: yes
    - name: Create a new application pool in 'Started' state
      community.windows.win_iis_webapppool:
        name: test-pool
        state: started
    - name: Create IIS test site
      community.windows.win_iis_website:
        name: test-site
        state: started
        port: 8080
        ip: '*'
        hostname: '*'
        application_pool: test-pool
        physical_path: C:\inetpub\testsite
        parameters: logfile.directory:C:\sites\logs
    - name: Add test webapplication on IIS
      community.windows.win_iis_webapplication:
        name: test-app
        site: test-site
        state: present
        physical_path: C:\apps\testapp
    - name: Create a virtual directory if it does not exist
      community.windows.win_iis_virtualdirectory:
        name: test-directory
        site: test-site
        state: present
        physical_path: C:\virtualdirectory\testdir
    - name: Firewall rule to allow HTTP on TCP port 8080
      community.windows.win_firewall_rule:
        name: HTTP-8080
        localport: 8080
        action: allow
        direction: in
        protocol: tcp
        state: present
        enabled: yes

AWS 설정



WinRM 통신을 허용하기 위해 보안 그룹(SG)을 설정합니다.
Linux 서버와 Windows 서버로 SG를 나누고 있으므로 Windows 서버측의 SG에 다음을 추가합니다.
인바운드 규칙: 5986/TCP 허용. 소스는 속한 서브넷 ID를 지정합니다.

4. 실행 결과



이제 playbook을 실행합니다.
$ ansible-playbook -i ./inventory ./playbook.yml

PLAY [targets] ***************************************************************************************************

TASK [Install IIS Web-Server with sub features and management tools] *********************************************
changed: [test_windows]

TASK [Create a new application pool in 'Started' state] **********************************************************
changed: [test_windows]

TASK [Create IIS test site] **************************************************************************************
changed: [test_windows]

TASK [Add test webapplication on IIS] ****************************************************************************
changed: [test_windows]

TASK [Create a virtual directory if it does not exist] ***********************************************************
changed: [test_windows]

TASK [Firewall rule to allow HTTP on TCP port 8080] **************************************************************
changed: [test_windows]

PLAY RECAP *******************************************************************************************************
test_windows               : ok=6    changed=6    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

5. 결과 확인



IIS가 설치되었으며 Playbook에 나열된 설정이 있음을 확인할 수있었습니다.

또한 Windows 방화벽 수신 규칙도 추가되었습니다.

브라우저에서도 액세스할 수 있었습니다.


6. 결론



Ansible을 사용하여 기본 IIS 설정이 가능하다는 것을 확인할 수있었습니다.
HTTPS 연결을 추가하려면 서버 인증서를 설치하고 Ansible 모듈에서 HTTPS 바인딩을 추가할 수도 있습니다.
(아래 참고 사이트의 "바인드 설정"참조)

참고 사이트



■Ansible 모듈
웹사이트 만들기:
htps : // / cs. 안시 bぇ. 코 m/안시 bぇ/ㄱ st/콧 c 치온 s/쯤에 ty/우똥 ws/우우_좋은 s_우ぇb하고_모즈. HTML )
가상 디렉터리 만들기:
htps : // / cs. 안시 bぇ. 코 m/안시 bぇ/ㅁ st/こぇc ちおん s/쯤에 ty/우똥 ws/우흠_좋은 s_ゔぃr 쭉 lㄴ레 c와 ry_모즈ぇ. HTML
웹 애플리케이션:
htps : // / cs. 안시 bぇ. 코 m/안시 bぇ/ㅁ st/콧 c 치온 s/쯤에 ty/우우 ws/우우_좋은 s_우찡 p p 카치온_모즈. HTML
웹 애플리케이션 풀:
htps : // / cs. 안시 bぇ. 코 m/안시 bぇ/ㄱ st/콧 c 치온 s/쯤에 ty/우우 ws/우짱_좋은 s_우우밧포오 l_모즈ぇ. HTML
바인딩 설정:
htps : // / cs. 안시 bぇ. 코 m/안시 bぇ/ㄱ st/콧 c 치온 s/쯤에 ty/우우 ws/우짱_좋은 s_우쿵빈 g_모즈ぇ. HTML
Windows 방화벽 수신 규칙에 대한 권한 추가:
htps : // / cs. 안시 bぇ. 코 m/안시 bぇ/ぁ st/こぇc ちおんs/こむにty/うんどws/うぃん_ふぃれわl_ルぇ_모즈. HTML

좋은 웹페이지 즐겨찾기