본문 바로가기

Ansible

Ansible 미니 프로젝트

Ansible 미니 프로젝트  - wordpress 사이트 배포

 

 

 

1. Vagrantfile 생성

- vagrantfile을 아래와 같이 작성한다. (  notepad ++)

# --- Ansible Server ---

Vagrant.configure("2") do |config|
	config.vm.define "my-ansible-server" do |cfg|
		cfg.vm.box = "centos/7" 
		cfg.vm.provider "virtualbox" do |vb|
			vb.name = "ansible-server"
			vb.cpus = 2
			vb.memory = 4096
			vb.gui = false
		end
		cfg.vm.host_name = "control.example.com"
		cfg.vm.network "private_network", ip: "192.168.110.10"
		cfg.vm.provision "shell", path: "ssh_conf.sh"
		cfg.vm.synced_folder "../data", "/vagrant", disabled: true
		
		
	end

# --- managed node 1 ---
	config.vm.define "my-managed-node1" do |cfg|
		cfg.vm.box = "centos/7" 
		cfg.vm.provider "virtualbox" do |vb|
			vb.name = "my-node1"
			vb.cpus = 1
			vb.memory = 2048
			vb.gui = false
		end
		cfg.vm.host_name = "node1.example.com"
		cfg.vm.network "private_network", ip: "192.168.110.20"
		cfg.vm.provision "shell", path: "ssh_conf.sh"
		cfg.vm.synced_folder "../data", "/vagrant", disabled: true
	end

# --- managed node 2 ---
	config.vm.define "my-managed-node2" do |cfg|
		cfg.vm.box = "centos/7" 
		cfg.vm.provider "virtualbox" do |vb|
			vb.name = "my-node2"
			vb.cpus = 1
			vb.memory = 2048
			vb.gui = false
		end
		cfg.vm.host_name = "my-node2.example.com"
		cfg.vm.network "private_network", ip: "192.168.110.30"
		cfg.vm.provision "shell", path: "ssh_conf.sh"
		cfg.vm.synced_folder "../data", "/vagrant", disabled: true
	end
	
# --- managed node 3 ---
	config.vm.define "my-managed-node3" do |cfg|
		cfg.vm.box = "centos/7" 
		cfg.vm.provider "virtualbox" do |vb|
			vb.name = "my-node3"
			vb.cpus = 1
			vb.memory = 2048
			vb.gui = false
		end
		cfg.vm.host_name = "node3.example.com"
		cfg.vm.network "private_network", ip: "192.168.110.40"
		cfg.vm.provision "shell", path: "ssh_conf.sh"
		cfg.vm.synced_folder "../data", "/vagrant", disabled: true
	end	
end

 

2. ssh_conf.sh 작성

- Centos7에서 SSH로 접속하기 위한 설정 파일

#/bin/bash
# allow ssh login with password
time=$(date "+%Y%m%d.%H%M%S")
# backup before overwriting
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_$time.backup
sudo sed -i -e 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
sudo systemctl restart sshd

 

3. Windows Powershell에서 vagrant up !!!

 

vagrant up을 한 후 virtualbox를 보면 위에 캡쳐처럼 생성 된 것을 확인 할 수 있다.

 

4. 아래와 같이 설정하기 위하여 vagrantfile을 수정한다.

수정 후 vagrant provision 명령어를 친다.!!

 

# --- Ansible Server ---

Vagrant.configure("2") do |config|
	config.vm.define "ansible-server" do |cfg|
		cfg.vm.box = "centos/7" 
		cfg.vm.provider "virtualbox" do |vb|
			vb.name = "ansible-server"
			vb.cpus = 2
			vb.memory = 4096
			vb.gui = false
		end
		cfg.vm.host_name = "control.example.com"
		cfg.vm.network "private_network", ip: "192.168.110.10"
		cfg.vm.provision "shell", path: "ssh_conf.sh" 
		cfg.vm.synced_folder "../data", "/vagrant", disabled: true
		cfg.vm.provision "shell", inline: "yum -y install epel-release"
		cfg.vm.provision "shell", inline: "yum -y install centos-release-ansible-29.noarch"
		cfg.vm.provision "shell", inline: "yum install ansible -y" # ansible 설치
		cfg.vm.provision "file", source: "ansible_env_ready.yml", # ansible inventory 및 환경설정
			destination: "ansible_env_ready.yml"
		cfg.vm.provision "shell", inline: "ansible-playbook ansible_env_ready.yml"	
		cfg.vm.provision "file", source: "auto_pass.yml", destination: "auto_pass.yml" # 공개키 및 fingerprint 저장
		cfg.vm.provision "shell", inline: "ansible-playbook auto_pass.yml", privileged: false
			
	end

 

5. 서버와 노드가 연결이 되었는지 확인한다.

- ansible all -m ping -k

여기서 노드 1,2,3,는 서버와 파이썬 버전이 같고 노드4,5는 ubuntu라서 파이썬 버전이 다르기 때문에 ping이 안 나갔다.

 

6. 노드4,5 해결을 위해 아래와 같이 친다.

ans ubuntu -m shell -a " sudo ln -s /usr/bin/python3 /usr/bin/python" -k

vagrant provision

ans ubuntu -m shell -a "sudo unlink /usr/bin/python"

 

ansible node5 -m ping -k 로 확인한다.

[vagrant@control ~]$ ansible node5 -m ping
node5 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

 

이제 모든 노드가 ping이 나가는 것을 확인 할 수 있다.

'Ansible' 카테고리의 다른 글

0215  (1) 2024.02.15
ansible!!!  (1) 2024.02.15
ansible 에러  (0) 2024.02.14
ansible 기본 환경설정  (2) 2024.02.13
ansible 수요일  (1) 2024.02.07