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 !!!

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

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 |