공부합시다!/Ansible
Ansible: DHCP, VSFTPD, Nginx, DNS Infra 자동화
간서치
2023. 3. 17. 09:15
728x90
오늘은 종합실습적인 개념으로 Infra 자동화에 대해서 학습하겠습니다.
dhcp, ftp, nginx, dns infra를 자동으로 구성합니다.
1. 시나리오
Ansible를 활용한 Infra 자동화
1. nginx 설치(web그룹)
1.1. web server 설치 및 구성
1.2. nginx
1.3. 본인 이니설-webserver
1.4. web contents directory: /web
2. vsftpd (was그룹)
2.1. vsftpd 설치 및 구성
2.2. passive mode, 인증 및 제어21, 데이터 전송 65000-65100 사용
2.3. a,b 계정 생성 a만 chroot 적용
2.4. 최상위 디렉토리에 /ftp 디렉토리 생성 후 배너(배너파일이름:ban) 및 chroot, log 저장
2.5. 접속 후 120초 동안 아무런 Action이 없으면 연결 끊기, data 전송중이라도 1분 후 연결 끊기
2.6. 그 외 나머지는 기본 설정
3. dns (db그룹)
3.1. bind를 활용한 DNS
3.2. nginx 및 vsftpd 는 도메인이름으로 접속 가능해야 합니다.
3.3. 역방향 조회 영역 설정
3.4. 외부 순환쿼리가 가능
# 간단한 내용 변경이 아닌 경우 미리 설정 파일을 만들어 놓고 해당 위치에 복사하는 방식으로
# dns /var/named/zone 파일 권한 변경 신경쓰세요.
팀별로 역할을 나눠서 하시고 하나로 모아서 개개별로 설정해 보세요!
1. vsftpd.yml
---
- name: vsftpd config
hosts: was
tasks:
- name: user a, b create
user:
name: "{{ item }}"
password: "{{ 'It1' | password_hash('sha512') }}"
with_items:
- a
- b
- name: vsftpd install
dnf:
name: vsftpd
state: latest
- name: /ftp direcrtory create
file:
path: /ftp
state: directory
- name: chroot copy
copy:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
with_items:
- { src: ./chroot, dest: /ftp/chroot }
- { src: ./ban, dest: /ftp/ban }
- { src: ./vsftpd.conf, dest: /etc/vsftpd/vsftpd.conf }
- name: service start
service:
name: vsftpd
state: started
- name: firewall open
firewalld:
port: "{{ item.port }}/{{ item.pro }}"
immediate: yes
permanent: yes
state: enabled
with_items:
- { port: 21, pro: tcp }
- { port: 65000 - 65100, pro: tcp }
2. web.yml
---
- name: nignx install
hosts: web
tasks:
- name: nginx install
dnf:
name: nginx
state: latest
- name: /www create
file:
path: /www
state: directory
- name: conf mv
copy:
src: ./nginx.conf
dest: /etc/nginx/nginx.conf
- name: index.hmtl
copy:
src: ./index.html
dest: /www/index.html
- name: service start
service:
name: nginx
state: started
- name: firewall open
firewalld:
port: 80/tcp
immediate: yes
permanent: yes
state: enabled
3. named.yml
---
- name: DNS configuration
hosts: db
tasks:
- name: bind install
dnf:
name: "{{ item }}"
state: latest
with_items:
- bind
- bind-utils
- bind-libs
- name: file copy
copy:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
with_items:
- { src: ./named.conf, dest: /etc/named.conf }
- { src: ./named.rfc1912.zones, dest: /etc/named.rfc1912.zones }
- { src: ./sdkim.pw, dest: /var/named/sdkim.pw }
- { src: ./pw.sdkim, dest: /var/named/pw.sdkim }
- name: change mod
file:
path: "{{ item }}"
mode: 0644
with_items:
- /var/named/sdkim.pw
- /var/named/pw.sdkim
- name: service start
service:
name: named
state: started
- name: firewall open
firewalld:
port: "53/{{ item }}"
immediate: yes
permanent: yes
state: enabled
with_items:
- udp
- tcp
4. 설정 파일
4.1. /etc/named.conf
4.2. /etc/named.rfc1912.zones
4.3. sdkim.pw (정방향 조회 영역)
4.4. pw.sdkim (역방향 조회 영역)
4.5. /etc/vsftpd/vsftpd.conf
4.6. banner_file, chroot 을 위한 /ftp 디렉토리
4.7. nginx.conf
설정 파일들은 직접 만들어 보세요!
728x90