<tomcat.yml>
- name: Apache Tomcat server Installation
hosts: all
gather_facts: no
become: yes
tasks:
- name: install openjdk
yum:
name: java-1.8.0-openjdk
- name: Create Directory
file:
path: /tomcat
state: directory
mode: 0777
- name: Tomcat Download
get_url:
url:
https://downloads.apache.org/tomcat/tomcat-10/v10.0.27/bin/apachetomcat-10.0.27.tar.gz
dest: /tomcat
- name: unzip tar.gz
unarchive:
src: "/tomcat/apache-tomcat-10.0.27.tar.gz"
dest: "/tomcat/"
remote_src: true # remote_src 가 yes 인 경우, 타겟 서버의 src path에서 압축 파일을 푼다.
- name: selinux OFF
shell: setenforce 0
- name: Starting Tomcat
shell: nohup "/tomcat/apache-tomcat-10.0.27/bin/startup.sh"
- name: Tomcat smaple war download & show
get_url:
url: https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/sample.war
dest: /tomcat/apache-tomcat-10.0.27/webapps/
validate_certs: false
[root@vagrant sim]# ansible-playbook tomcat.yml -i tom_inven.txt -k
도커 이미지를 생각하면 편하다! 도커는 컨테이너를 다루었다면, vagrant는 어떤 불변의 인프라를 구성하는 것이다.
또한, 여러가지 하이퍼바이저와 연동을 시킬 수 있다.
보통 버츄얼 박스와 연동을 많이 시키지만, 우리는 kvm 이 이미 설치되어 있기 때문에 우리는 kvm과 연동을 시킬 것이다.
먼저, plug-in 을 설치해야 한다.
[root@vagrant ~]# vagrant plugin install vagrant-libvirt
[root@vagrant ~]# systemctl restart libvirtd
[root@vagrant ~]# mkdir vagrant
[root@vagrant ~]# cd vagrant/
[root@vagrant vagrant]# mkdir test
[root@vagrant vagrant]# cd test/
[root@vagrant test]# vagrant init centos/7
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
<Vagrantfile 이 생성됨>
[root@vagrant test]# ls
Vagrantfile
< Default Vagrantfile> - Ruby 언어로 이루어져 있음!
<이전에 다운받았던 plug-in 버전에 오류가 있어 다른 버전으로 다운로드>
[root@vagrant test]# vagrant plugin uninstall vagrant-libvirt
[root@vagrant test]# vagrant plugin install vagrant-libvirt --plugin-version
0.10.8
Installed the plugin 'vagrant-libvirt (0.10.8)'!
[root@vagrant test]# ls
Vagrantfile
<이미지 다운로드>
[root@vagrant test]# vagrant up
[root@vagrant test]# vagrant status
Current machine states:
default running (libvirt)
The Libvirt domain is running. To stop this machine, you can run
`vagrant halt`. To destroy the machine, you can run `vagrant destroy`.
[root@vagrant test]# virsh list
Id Name State
----------------------------------------------------
1 centos1 running
2 centos2 running
3 centos3 running
5 test_default running
# test는 디렉토리의 이름이고 default 는 Vagrant 파일에 명시되어 있는 머신의 이름이다.
[root@vagrant test]# vagrant halt
==> default: Attempting graceful shutdown of VM...
[root@vagrant test]# vagrant status
Current machine states:
default shutoff (libvirt)
The Libvirt domain is not running. Run `vagrant up` to start it.
[root@vagrant test]# vagrant reload
[root@vagrant test]# vagrant destroy
default: Are you sure you want to destroy the 'default' VM? [y/N] y
==> default: Removing domain...
==> default: Deleting the machine folder
<vm 목록상에서도 사라짐을 볼 수 있다>
[root@vagrant test]# virsh list --all
Id Name State
----------------------------------------------------
1 centos1 running
2 centos2 running
3 centos3 running
[root@vagrant test]# vagrant ssh
[root@vagrant test]# cd /etc/libvirt/qemu/networks/
[root@vagrant networks]# ls
autostart default.xml vagrant-libvirt.xml
[root@vagrant networks]# vi vagrant-libvirt.xml
[root@vagrant networks]# cd ~/vagrant/
[root@vagrant vagrant]# cd test/
[root@vagrant test]# ls
Vagrantfile
<일단 기존의 vm 삭제>
[root@vagrant test]# vagrant destroy
default: Are you sure you want to destroy the 'default' VM? [y/N] y
==> default: Removing domain...
==> default: Deleting the machine folder
[root@vagrant test]# ls
Vagrantfile
[root@vagrant test]# vi Vagrantfile
<Vagrantfile>
******************
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config| # version 은 "2" config 파일로 압축한다
config.vm.define "ansible-server" do |cfg| # config 파일을 cfg파일로 정의 한다고 생각하자
cfg.vm.box = "centos/7" # 이미지는 centos/7 기반의 이미지
cfg.vm.host_name = "ansible-server" # 호스트 네임은 ansible-server
cfg.vm.network "private_network", ip: "172.16.1.10" # 네트워크의 이름은 private network 이고 ip를 정의
cfg.vm.network "forwarded_port" , guest: 22, host: 60010, # 포트포워딩을 60010번으로 하겠다
auto_correct: true, id: "ssh" # 만약 겹치는 포트가 있다면 자동으로 포트를 변경해준다
cfg.vm.synced_folder "../data", "vagrant" , disabled: true
end
end
******************
<up 을 통해 가상머신을 배포>
[root@vagrant test]# vagrant up
[root@vagrant test]# vagrant ssh ansible-server
방금 작성했던 Vagrantfile을 일부수정하여 추가해주자
<Vagrantfile>
config.vm.define "ansible-server" do |cfg|
cfg.vm.box = "centos/7"
cfg.vm.host_name = "ansible-server"
cfg.vm.network "private_network", ip: "172.16.1.10"
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: "yum install -y epel-release"
cfg.vm.provision "shell", inline: "yum install -y ansible"
end
end
<수정된 Vagrantfile>
**********
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.define "ansible-server" do |cfg|
cfg.vm.box = "centos/7"
cfg.vm.host_name = "ansible-server"
cfg.vm.network "private_network", ip: "172.16.1.10"
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: "yum install -y epel-release"
cfg.vm.provision "shell", inline: "yum install -y ansible"
----------------------------추가--------------------------------
cfg.vm.provision "file", source: "ansible_env_ready.yml", destination:
"ansible_env_ready.yml"
cfg.vm.provision "shell", inline: "ansible-playbook ansible_env_ready.yml"
end
end
**********
[root@vagrant test]# vi ansible_env_ready.yml
**********
- name: Setup for the Ansible's Environment
hosts: localhost
gather_facts: no
tasks:
- name: Create vim env's directories & files
shell: "{{ item }}"
with_items:
- "mkdir -p /home/vagrant/.vim/autoload /home/vagrant/.vim/bundle"
- "touch /home/vagrant/.vimrc"
- "touch /home/vagrant/.bashrc"
- name: Install vim-enhanced
yum:
name: vim-enhanced
state: present
- name: install git
yum:
name: git
state: present
- name: Download pathogen.vim
shell: "curl -fLo /home/vagrant/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim"
- name: Git clone vim-ansible-yaml
git:
repo: https://github.com/chase/vim-ansible-yaml.git
dest: /home/vagrant/.vim/bundle/vim-ansible-yaml
- name: Configure vimrc
lineinfile:
path: /home/vagrant/.vimrc
line: "{{ item }}"
with_items:
- "set number"
- "execute pathogen#infect()"
- "syntax on"
- name: Configure Bashrc
lineinfile:
path: /home/vagrant/.bashrc
line: "{{ item }}"
with_items:
- "alias ans='ansible'"
- "alias anp='ansible-playbook'"
**********
잘 보고 갑니다~~