-- vagrant 구성
ansible-server
ansible-node01
ansible-node02
ansible-node03
--ansible
각 node01,02,03 에 nginx 서버를 설치 , nfs 클라이언트
server는 nfs 서버
ansible-server memory 3000
ansible-node01 memory 512
ansible-node02 memory 512
ansible-node03 memory 512
nfs서버 /home/vagrant/web_shared
nfs 클라이언트 /user/share/nginx/html/
/home/vagrant/web_shared 에 index.html 파일을 생성하여
http://node01의 IP주소
http://node02의 IP주소
http://node03의 IP주소
하면 본인 이름이 홈페이지에 나오도록
[vagrant@ansible-server ~]$ ansible all -m ping -k
SSH password:
200.200.200.147 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
200.200.200.148 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
200.200.200.149 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
#Ansible-Node01
config.vm.define "ansible-node01" do |cfg|
cfg.vm.box = "rockylinux/9"
cfg.vm.provider "vmware_workstation" do |vb|
vb.memory = 512
end
cfg.vm.host_name = "ansible-node01"
cfg.vm.network "public_network", ip: "200.200.200.147"
cfg.vm.network "forwarded_port", guest: 22, host: 60011, auto_correct: true, id: "ssh"
cfg.vm.synced_folder "../data", "/vagrant", disabled: true
cfg.vm.provision "shell", inline: "setenforce 0"
end
#Ansible-Node02
config.vm.define "ansible-node02" do |cfg|
cfg.vm.box = "rockylinux/9"
cfg.vm.provider "vmware_workstation" do |vb|
vb.memory = 512
end
cfg.vm.host_name = "ansible-node02"
cfg.vm.network "public_network", ip: "200.200.200.148"
cfg.vm.network "forwarded_port", guest: 22, host: 60012, auto_correct: true, id: "ssh"
cfg.vm.synced_folder "../data", "/vagrant", disabled: true
cfg.vm.provision "shell", inline: "setenforce 0"
end
#Ansible-Node03
config.vm.define "ansible-node03" do |cfg|
cfg.vm.box = "rockylinux/9"
cfg.vm.provider "vmware_workstation" do |vb|
vb.memory = 512
end
cfg.vm.host_name = "ansible-node03"
cfg.vm.network "public_network", ip: "200.200.200.149"
cfg.vm.network "forwarded_port", guest: 22, host: 60013, auto_correct: true, id: "ssh"
cfg.vm.synced_folder "../data", "/vagrant", disabled: true
cfg.vm.provision "shell", inline: "setenforce 0"
end
# Ansible-server
config.vm.define "ansible-server" do |cfg|
cfg.vm.box = "rockylinux/9"
cfg.vm.provider "vmware_workstation" do |vb|
vb.vmx["sched.cpu.max"] = "50"
vb.cpus = 2
vb.memory = 3000
vb.gui = true
vb.allowlist_verified = true
end
cfg.vm.host_name = "ansible-server"
cfg.vm.network "public_network", ip: "200.200.200.146"
cfg.vm.network "forwarded_port", guest: 22, host: 60010, auto_correct: true, id: "ssh"
cfg.vm.synced_folder "../data", "/vagrant", disabled: true
cfg.vm.provision "shell", inline: "dnf install epel-release -y"
cfg.vm.provision "shell", inline: "dnf install ansible -y"
cfg.vm.provision "shell", inline: "dnf install net-tools -y"
# file
cfg.vm.provision "file", source: "ansible_env_ready.yml", destination: "ansible_env_ready.yml"
# provision
cfg.vm.provision "shell", inline: "ansible-playbook ansible_env_ready.yml"
cfg.vm.provision "shell", path: "add_sshd_auth.sh", privileged: false
end
end
sshpass -p vagrant ssh -T -o StrictHostKeyChecking=no vagrant@200.200.200.147
sshpass -p vagrant ssh -T -o StrictHostKeyChecking=no vagrant@200.200.200.148
sshpass -p vagrant ssh -T -o StrictHostKeyChecking=no vagrant@200.200.200.149
---
- name: Install nginx on Rockylinux
hosts: rocky
gather_facts: no
become: yes
tasks:
- name: install epel-release
dnf:
name: epel-release
state: latest
- name: install nginx web server
dnf:
name: nginx
state: present
- name: start nginx web server
service:
name: nginx
state: started
[vagrant@ansible-server ~]$ anp nginx_install.yml -k
SSH password:
PLAY [Install nginx on Rockylinux] *************************************************************************************
TASK [install epel-release] ********************************************************************************************
ok: [200.200.200.148]
ok: [200.200.200.149]
ok: [200.200.200.147]
TASK [install nginx web server] ****************************************************************************************
ok: [200.200.200.148]
ok: [200.200.200.149]
ok: [200.200.200.147]
TASK [start nginx web server] ******************************************************************************************
ok: [200.200.200.149]
ok: [200.200.200.148]
changed: [200.200.200.147]
PLAY RECAP *************************************************************************************************************
200.200.200.147 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
200.200.200.148 : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
200.200.200.149 : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
---
- name: Setup for nfs server
hosts: localhost
gather_facts: no
tasks:
- name: make nfs_shared directory
file:
path: /home/vagrant/web_shared
state: directory
mode: 0777
- name: configure /etc/exports
become: yes
lineinfile:
path: /etc/exports
line: /home/vagrant/web_shared 200.200.200.0/24(rw,sync,no_root_squash)
- name: nfs service restart
become: yes
service:
name: nfs-server
state: restarted
- name: Setup for nfs clients
hosts: rocky
gather_facts: no
tasks:
- name: mount point directory as client
become: yes
mount:
path: /usr/share/nginx/html
src: 200.200.200.146:/home/vagrant/web_shared
fstype: nfs
opts: nfsvers=3
state: mounted
[vagrant@ansible-server ~]$ anp nfs.yml -k
SSH password:
PLAY [Setup for nfs server] ********************************************************************************************
TASK [make nfs_shared directory] ***************************************************************************************
ok: [localhost]
TASK [configure /etc/exports] ******************************************************************************************
ok: [localhost]
TASK [nfs service restart] *********************************************************************************************
changed: [localhost]
PLAY [Setup for nfs clients] *******************************************************************************************
TASK [mount point directory as client] *********************************************************************************
ok: [200.200.200.148]
ok: [200.200.200.147]
ok: [200.200.200.149]
PLAY RECAP *************************************************************************************************************
200.200.200.147 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
200.200.200.148 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
200.200.200.149 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
localhost : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
- name: Create and deploy index.html
hosts: all
become: yes
tasks:
- name: Create index.html
copy:
dest: "/usr/share/nginx/html/index.html"
content: |
<html>
<head><title>Welcome to nginx!</title><meta charset="UTF-8"></head>
<body>
<center><h1>배지원</h1></center>
<hr><center>nginx/1.20.1</center>
</body>
</html>
mode: '0644'
[vagrant@ansible-server ~]$ anp create_index.yml -k
SSH password:
PLAY [Create and deploy index.html] ************************************************************************************
TASK [Gathering Facts] *************************************************************************************************
ok: [200.200.200.149]
ok: [200.200.200.148]
ok: [200.200.200.147]
TASK [Create index.html] ***********************************************************************************************
changed: [200.200.200.147]
ok: [200.200.200.149]
ok: [200.200.200.148]
PLAY RECAP *************************************************************************************************************
200.200.200.147 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
200.200.200.148 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
200.200.200.149 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
--index.html이 node에 적용이 안돼서 수기로 node에 접속하여 수정
[vagrant@ansible-node01 html]$ sudo setenforce 0
[vagrant@ansible-node01 html]$ getenforce
Permissive
[vagrant@ansible-node01 html]$ exit
logout
Connection to 127.0.0.1 closed.
PS D:\vagrant_test> vagrant ssh ansible-node02
Last login: Fri Mar 29 01:08:46 2024 from 200.200.200.146
[vagrant@ansible-node02 ~]$ sudo setenforce 0
[vagrant@ansible-node02 ~]$ getenforce
Permissive
[vagrant@ansible-node02 ~]$ exit
logout
Connection to 127.0.0.1 closed.
PS D:\vagrant_test> vagrant ssh ansible-node03
Last login: Fri Mar 29 01:08:46 2024 from 200.200.200.146
[vagrant@ansible-node03 ~]$ sudo setenforce 0
[vagrant@ansible-node03 ~]$ getenforce
Permissive
'과제' 카테고리의 다른 글
ansible-server->vyos (0) | 2024.03.29 |
---|---|
연습문제 - RockyLinux (1) | 2024.03.26 |
step 3-5 (1) | 2024.03.22 |
파일명 검색받아서 디렉터리면 복사 X , 파일만 지정된 위치에 복사 (0) | 2024.03.21 |
파일명을 입력받으면 해당 파일의 형식을 표시해주는 스크립트 (0) | 2024.03.21 |