수업 73일차 Ansible

유동우·2023년 1월 14일
1

Visual Studio Code
PowerShell
VirtualBox

Visual Studio Code
한국어로 변경하는법
Ctrl + Shift + P
language치면
Configure Display Language => 한국어 변경

PowerShell
cd C:\git_repo\02-ansible\
mkdir one-server
cd one-server
vagrant init // vagrant 파일 만들어줌

vs code를 이용해 vagrant파일 확인

Vagrant.configure("2") do |config|
config.vm.box = "base"
end

do ~ end 까지 config 블록

config.vm.box = "base"에서
config.vm.box = "centos/7"으로 변경하고
VirtualBox 확인하면 가상머신 하나 추가됨

vagrant plugin install vagrant-vbguest --plugin-version 0.21 // vagrant-vbguest 플러그인 설치
vagrant plugin uninstall vagrant-vbguest // vagrant-vbguest 플러그인 제거

만들어진 가상머신으로 실행하는게아니라 ssh로접속
vagrant ssh 하면 접속됨
지울때는 vagrant destroy

https://app.vagrantup.com/boxes/search?provider=virtualbox // Vagrant Cloud 주소

Vagrant.configure("2") do |config|
config.vm.define "ansible-server" do |cfg| // vagrant가 관리하는 이름
cfg.vm.box = "centos/7"
cfg.vm.provider "virtualbox" do |vb|
vb.name = "Ansible-Server" // virtualbox에 표시되는 이름
end
cfg.vm.host_name = "ansible-server" // 컴퓨터 이름
cfg.vm.network "private_network", ip: "192.168.56.10"
cfg.vm.network "forwarded_port", guest: 22, host: 60010, auto_correct: true, id: "ssh"
cfg.vm.synced_folder "../data", "/vagrant", disabled: true
end
end

C:\Users\admin\VirtualBox VMs 경로에 가상머신폴더생김

vagrant ssh ansible-server // ssh 접속

sudo yum install redhat-lsb-core // redhat-lsb-core(lsb_release) 패키지 설치

lsb_release -a //

===========================================

■ 가상머신 4개 만들기

-- mode: ruby --

vi: set ft=ruby :

Vagrant.configure("2") do |config|
config.vm.boot_timeout = 1800 # timeout 나올때
#================#

CentOS Nodes

#================#

Ansible-Node01

config.vm.define "ansible-node01" do |cfg|
cfg.vm.box = "centos/7"
cfg.vm.provider "virtualbox" do |vb|
vb.name = "Ansible-Node01"
end
cfg.vm.host_name = "ansible-node01"
cfg.vm.network "private_network", ip: "192.168.56.101"
cfg.vm.network "forwarded_port", guest: 22, host: 60101, auto_correct: true, id: "ssh"
cfg.vm.network "forwarded_port", guest: 80, host: 60081, auto_correct: true
cfg.vm.synced_folder "../data", "/vagrant", disabled: true
end

Ansible-Node02

config.vm.define "ansible-node02" do |cfg|
cfg.vm.box = "centos/7"
cfg.vm.provider "virtualbox" do |vb|
vb.name = "Ansible-Node02"
end
cfg.vm.host_name = "ansible-node02"
cfg.vm.network "private_network", ip: "192.168.56.102"
cfg.vm.network "forwarded_port", guest: 22, host: 60102, auto_correct: true, id: "ssh"
cfg.vm.network "forwarded_port", guest: 80, host: 60082, auto_correct: true
cfg.vm.synced_folder "../data", "/vagrant", disabled: true
end

Ansible-Node03

config.vm.define "ansible-node03" do |cfg|
cfg.vm.box = "centos/7"
cfg.vm.provider "virtualbox" do |vb|
vb.name = "Ansible-Node03"
end
cfg.vm.host_name = "ansible-node03"
cfg.vm.network "private_network", ip: "192.168.56.103"
cfg.vm.network "forwarded_port", guest: 22, host: 60103, auto_correct: true, id: "ssh"
cfg.vm.network "forwarded_port", guest: 80, host: 60083, auto_correct: true
cfg.vm.synced_folder "../data", "/vagrant", disabled: true
end

#================#

Ansible Server

#================#

Ansible-server

config.vm.define "ansible-server" do |cfg|
cfg.vm.box = "centos/7"
cfg.vm.provider "virtualbox" do |vb|
vb.name = "Ansible-Server"
end
cfg.vm.host_name = "ansible-server"
cfg.vm.network "private_network", ip: "192.168.56.10"
cfg.vm.network "forwarded_port", guest: 22, host: 60104, auto_correct: true, id: "ssh"
cfg.vm.synced_folder "../data", "/vagrant", disabled: true
end
end

===============================

※ 설치안될때

Windows기능 켜기/끄기 들어가서

Hyper-V
Windows 하이퍼바이저 플랫폼
가상 머신 플랫폼

체크해제

===============================

Ansible-server에

cfg.vm.provision "shell", inline: "yum install epel-release -y"
cfg.vm.provision "shell", inline: "yum install ansible -y"
두 줄 추가

PowerShell에

vagrant provision

vagrant ssh ansible-server

sudo yum install vim -y

su -

vagrant

vim /etc/ansible/hosts

Visual Studio Code에
one-server에 bash_ssh_conf_4_CentOS.sh 만들어주고

#!/usr/bin/env bash

now=(date+"(date +"%m_%d_%Y") # 현재 시각을 기록 cp /etc/ssh/sshd_config /etc/ssh/sshd_config_now.backup # sshd 설정 백업

sshd_config 내에 암호를 이용하여 인증하도록 설정 변경

sed -i -e 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
systemctl restart sshd # ssh 데몬 재시작

입력

Vagrantfile에 node01, 02, 03 마지막줄에

# path는 호스트에 있는 파일을 게스트에서 실행되도록 한다.
 # 따라서 호스트의 파일을 게스트로 옮기는 작업이 없어도 원격지에서 실행할 수 없다.
 # 앤서블 노드에는 앤서블이 설치되지 않아 YAML 플레이북을 설정할 수 없다
 cfg.vm.provision "shell", path: "bash_ssh_conf_4_CentOS.sh"

추가입력하고

PowerShell로 와서
vagrant provision

=====================

■ 앤서블 코어를 앤서블 서버에 설치

yum install vim -y

vim /etc/ansible/hosts

맨아래 192.168.56.101 , 192.168.56.102 , 192.168.56.103 추가하고 저장

나와서 ansible all -m ping 치고 yes를 노드 수만큼 입력 3개니까 3번해줌

vagrant ssh ansible-server

su -

vagrant

ansible all -m ping -k

※ 앤서블을 실행할때 참조하는 파일

  1. 환경설정 파일

vim /etc/ansible/ansible.cfg

  1. 앤서블 호스트 파일

vim /etc/ansible/hosts

노드 3개를 [nginx]로 묶고 저장하고 나와서

ansible all -m ping -k 이 아닌 all 자리에 nginx를 넣어도 노드3개 모두 동일한값 나옴

※ 앤서블을 실행 시에 사용할 수 있는 옵션값

-i // --inventory-file // 적용될 노드들을 선택

-m // --module-name // 사용하는 모듈

-k // --ask-pass // 암호 물어보도록 설정

	--list-hosts	// 적용되는 노드들을 확인

vim inven해서
[centos]
192.168.56.101
192.168.56.102
저장하고 나온뒤

ansible -i inven all -m ping -k 해도 됨

ansible -i inven 192.168.56.101 -m ping -k 하면 101번만 값이 출력됨

ansible all -m ping -k --list-hosts

hosts (3):
192.168.56.101
192.168.56.102
192.168.56.103

출력됨

ansible -i inven all -m ping -k --list-hosts

hosts (2):
192.168.56.101
192.168.56.102

출력됨

ansible all -m shell -a "uptime" -k // 켜지고 시간이 얼마나 지났는지 출력됨

192.168.56.101 | CHANGED | rc=0 >>
07:07:24 up 3:20, 1 user, load average: 0.00, 0.01, 0.05
192.168.56.103 | CHANGED | rc=0 >>
07:07:24 up 3:16, 1 user, load average: 0.00, 0.01, 0.05
192.168.56.102 | CHANGED | rc=0 >>
07:07:24 up 3:18, 1 user, load average: 0.00, 0.01, 0.05

ansible all -m shell -a "df -h" -k // 디스크 사용량 체크

ansible all -m shell -a "free -h" -k // 노드들의 메모리 사용량 체크

ansible all -m user -a "name=bjpublick" -k // 앤서블을 통해 노드들에 사용자를 추가

ansible all -m shell -a "tail -3 /etc/passwd" -k // 앤서블을 통해서 노드들에 추가된 사용자를 확인

ansible all -m user - a "name=bjpublic state=abset" -k // 앤서블을 통해서 노드들에 추가된 사용자를 삭제

ansible all -m shell -a "tail -n 1 /etc/passwd" -k // 앤서블을 통해서 노드들에 추가된 사용자를 삭제한 것을 확인

profile
클라우드 엔지니어가 되고싶은 클린이

0개의 댓글