Server A, B, C, D를 초기화 하시오.
그룹별로 다음과 같은 정보 시스템을 구축하시오.
팀원 1 : Ansible로 팀 내에서 사용할 이메일 서버를 전 팀원들 각각의 서버에 설치(팀원 2의 DNS 서버에서 만들 도메인 구성 협의, 각 팀원에게 별도의 도메인 부여)
추가적으로 임의의 nginx 컨테이너를 생성하고 html + css 형태의 적절한 대문 페이지를 구성하는데, 이 때 웹 루트 디렉터리가 유실되지 않도록 NFS 서버와 연동
팀원 2 : Ansible로 팀 내에서 사용할 DNS 서버를 전 팀원들 각각의 서버에 설치 및 테스트(팀원 1의 메일 서버가 잘 작동하도록 협의)
추가적으로 임의의 nginx 컨테이너를 생성하고 html + css 형태의 적절한 대문 페이지를 구성하는데, 이 때 웹 루트 디렉터리가 유실되지 않도록 NFS 서버와 연동
팀원 3 : 개발자 PC로서 Java 소스 코드 샘플을 만들고, html + css 내용물을 채워 GitHub의 새로운 리포지터리에 업로드
가상화 담당자로서 Docker를 설치한 서버에 multi-stage 빌드 형태로 구성된 Java 샘플 어플리케이션 이미지를 만들고 컨테이너로 실행하되 해당 웹 페이지는 팀원 2의 DNS 담당자가 만들어 둔 도메인으로 접속 가능하도록 구성
Ansible로 팀 내에서 사용할 공유 저장소인 NFS 서비스를 구성 후 테스트
추가적으로 임의의 nginx 컨테이너를 생성하고 html + css 형태의 적절한 대문 페이지를 구성하는데, 이 때 웹 루트 디렉터리가 유실되지 않도록 NFS 서버와 연동
팀원 4 : 본인의 서버를 인증 서버로 구성 후 Ansible로 나머지 3명의 서버에 인증 서버에 대한 클라이언트 구성을 부여하고 telnet이나 ssh, 로컬 로그인 등을 테스트(서버에 generaluser라는 유저를 생성하여 인증 서버로 구성되었는지 확인)
클라우드 담당자로서 본인의 EC2 인스턴스에 Linux 서버에서 해당 인스턴스로 접속
이후 해당 EC2 인스턴스의 /var/log 디렉터리를 /backup에 매주 월요일 오전 9시에 백업되도록 구성(압축 형식은 자유)
가상화 담당자 2로서 Docker 서버에 wordpress + mysql 컨테이너가 구성된 복합적 형태의 컨테이너 구성과 테스트
해당 웹 페이지는 팀원 2의 DNS 담당자가 만들어 둔 도메인으로 접속 가능하도록 구성
추가적으로 임의의 nginx 컨테이너를 생성하고 html + css 형태의 적절한 대문 페이지를 구성하는데, 이 때 웹 루트 디렉터리가 유실되지 않도록 NFS 서버와 연동
팀원 4 (나의 역할)
dnf -y install ypserv
vi /etc/sysconfig/network
NISDOMAIN=slime.com
useradd generaluser
passwd generaluser(1234)
systemctl --now enable rpcbind
systemctl --now enable ypserv yppasswdd ypxfrd
cd /var/yp
make
YPSERV_ARGS="-p 944"
YPXFRD_ARGS="-p 945"
vi /etc/sysconfig/yppasswdd
YPPASSWDD_ARGS="--port 946"
systemctl restart rpcbind ypserv yppasswdd ypxfrd
firewall-cmd --add-service=rpc-bind
firewall-cmd --add-port={944-946/tcp,944-946/udp}
firewall-cmd --runtime-to-permanent
firewall-cmd --list-all
dnf -y install epel-release
dnf -y install ansible
ansible --version
ssh-keygen
ssh-copy-id root@10.0.2.207
ssh-copy-id root@10.0.2.223
ssh-copy-id root@10.0.2.130
ssh-copy-id root@192.168.111.200
ssh-copy-id root@10.0.2.151
vi /etc/ansible/hosts
[nis_clients]
10.0.2.207 #지영
10.0.2.223 #다솜
10.0.2.130 #민지
[test]
192.168.111.200 #나
[sh]
10.0.2.151 #성훈
ansible all -m ping
---
- name: NIS Client Setting
hosts: nis_clients
vars:
nis_domain: "slime.com"
nis_server: "www.slime.com"
tasks:
- name: Install NIS client packages
dnf:
name:
- ypbind
- rpcbind
- yp-tools
- oddjob-mkhomedir
state: present
- name: Set NIS domain in /etc/sysconfig/network
lineinfile:
path: /etc/sysconfig/network
regexp: '^NISDOMAIN='
line: "NISDOMAIN={{ nis_domain }}"
create: yes
- name: Apply NIS domain immediately
command: "nisdomainname {{ nis_domain }}"
- name: Configure /etc/yp.conf
copy:
dest: /etc/yp.conf
content: |
domain {{ nis_domain }} server {{ nis_server }}
ypserver {{ nis_server }}
- name: Enable and start ypbind and oddjobd services
systemd:
name: "{{ item }}"
enabled: yes
state: started
loop:
- rpcbind
- ypbind
- oddjobd
- name: Ensure nsswitch.conf uses nis for passwd, group, shadow
lineinfile:
path: /etc/nsswitch.conf
regexp: '^passwd:'
line: 'passwd: files nis'
notify: restart nscd
- name: Ensure nsswitch.conf uses nis for group
lineinfile:
path: /etc/nsswitch.conf
regexp: '^group:'
line: 'group: files nis'
notify: restart nscd
- name: Ensure nsswitch.conf uses nis for shadow
lineinfile:
path: /etc/nsswitch.conf
regexp: '^shadow:'
line: 'shadow: files nis'
notify: restart nscd
- name: Enable home directory auto-creation (optional)
command: authselect enable-feature with-mkhomedir
ignore_errors: yes
handlers:
- name: restart nscd
systemd:
name: nscd
state: restarted
ansible-playbook nis_client_setting.yaml --check
ansible-playbook nis_client_setting.yaml
mkdir -p /backup
chown root:root /backup
chmod 700 /backup
crontab -e
0 9 * * 1 tar czf /backup/varlog_$(date +\%Y\%m\%d).tar.gz /var/log
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
systemctl enable --now docker
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker --version
docker-compose --version
dnf -y install nfs-utils
mkdir -p /nfsclient
mount -t nfs 10.0.2.223:/nfs /nfsclient
cat <<EOF | tee /nfs/html/index.html
<!DOCTYPE html>
<html>
<head>
<title>Welcome</title>
<link rel="here is 10.0.2.213" href="style.css">
</head>
<body>
<h1>Welcome to 10.0.2.213!</h1>
</body>
</html>
EOF
cat <<EOF > ~/docker-compose.yml
version: '3.8'
services:
db:
image: mariadb:latest
command: '--default-authentication-plugin=mysql_native_password'
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
- MARIADB_ROOT_PASSWORD=1234
- MARIADB_DATABASE=wpdb
- MARIADB_USER=wpuser
- MARIADB_PASSWORD=1234
expose:
- 3306
wordpress:
image: wordpress:latest
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: wppass
WORDPRESS_DB_NAME: wordpress
ports:
- "8080:80"
volumes:
- /nfs/html:/var/www/html
nginx:
image: nginx:alpine
restart: always
ports:
- "80:80"
volumes:
- /nfs/html:/usr/share/nginx/html:ro
volumes:
db_data:
EOF
docker-compose up -d