Ansible로 IIS 설정 확인
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
Reference
이 문제에 관하여(Ansible로 IIS 설정 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/latin1/items/b51c822bd8c39c2dacae
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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
Reference
이 문제에 관하여(Ansible로 IIS 설정 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/latin1/items/b51c822bd8c39c2dacae
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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.
$ pip install "ansible==2.10"
$ pip install "pywinrm==0.4.1"
[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
ansible_winrm_server_cert_validation=ignore
- 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
$ 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
Reference
이 문제에 관하여(Ansible로 IIS 설정 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/latin1/items/b51c822bd8c39c2dacae텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)