์„ค์น˜

  • VirtualBox ์„ค์น˜
  • Vagrant ์„ค์น˜
brew install vagrant ansible

# GUIํˆด (์„ ํƒ์‚ฌํ•ญ)
brew install vagrant-manager

 

 

์‚ฌ์šฉ ๋ฐฉ๋ฒ•

์ดˆ๊ธฐ์ž‘์—…

1. vagrant ๊ด€๋ จ ํŒŒ์ผ์ด ๋งŒ๋“ค์–ด์งˆ ์ž‘์—… ํด๋” ๊ตฌ์„ฑ ๋ฐ ์ด๋™

mkdir -p /Users/nhn/workspace/VM/centos7
cd /Users/nhn/workspace/VM/centos7

 

2. ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜

vagrant plugin install vagrant-vbguest vagrant-disksize

 

3. ์ดˆ๊ธฐ ํŒŒ์ผ ์ƒ์„ฑ

vagrant init

 

  • vi Vagrantfile
ENV["LC_ALL"] = "en_US.UTF-8"
Vagrant.configure("2") do |centos|

  # All servers will run cent 7
  centos.vm.box = "centos/7"
  centos.vm.box_check_update = false
  centos.disksize.size = "60GB"

  # Create the cent1 Server
  N = 1
  (1..N).each do |i|
    hostname = "cent7-#{i}"
    centos.vm.define hostname do |host1|
      host1.vm.hostname = hostname
      host1.vm.network "private_network", ip: "192.168.56.#{10 + i}"
      host1.vbguest.auto_update = false
      host1.vm.provider "virtualbox" do |v|
        v.name = hostname
        v.memory = "2048"
        v.cpus = "2"
        v.linked_clone = "true"
        v.gui = "false"
        v.customize ['modifyvm', :id, '--graphicscontroller', 'vmsvga']
        v.customize ['modifyvm', :id, '--vram', '20']
      end
    end
  end
  centos.vm.provision "ansible" do |ansible|
    ansible.playbook = "init.yml"
  end
  # centos.vm.provision "shell" do |shell|
  #   shell.path = "extend.sh"
  # end
end

centos.vm.box

  • ์ƒ์„ฑํ•  ๋ฐ•์Šค ์ด๋ฏธ์ง€๋ช…
  • url์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ์ด๋ฏธ์ง€ ์„ ํƒ๊ฐ€๋Šฅ

v.linked_clone

  • ํ•ด๋‹น ์˜ต์…˜์„ ์ค„ ๊ฒฝ์šฐ ๋ฐ•์Šค์— ๋Œ€ํ•œ ๋ชจ๋“  ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๋งŒ๋“œ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์ฐจ์ด์ ๋งŒ ์ถ”๊ฐ€๋กœ ์ƒ์„ฑํ•จ
  • ์šฉ๋Ÿ‰๊ด€๋ฆฌ์— ๋„์›€๋จ

centos.vm.provision

  • box๋กœ๋“œ ํ›„ ํ”„๋กœ๋น„์ €๋‹์„ ํ•  ํŒŒ์ผ์˜ ๋‚ด์šฉ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ

 

  • vi init.yml
- name: init.yml
  hosts: all
  gather_facts: no
  become: yes
  tasks:
    - name: ์‚ฌ์šฉ์ž ์ด๋ฆ„ ์ƒ์„ฑ
      user:
        name: "{{ item }}"
        shell: /bin/bash
        home: "/home/{{ item }}"
        generate_ssh_key: true
        password_lock: yes
      with_items:
        - irteam
        - irteamsu
        - centos
    - name: sudoers.d ์ถ”๊ฐ€
      copy:
        content: |
          %{{item}} ALL=(ALL) NOPASSWD: ALL
        dest: "/etc/sudoers.d/{{item}}"
        owner: root
        group: root
        mode: 0440
        validate: "/usr/sbin/visudo -c -f '%s'"
      with_items:
        - irteam
        - irteamsu
        - centos
    - name: ssh๋‚ด์šฉ ์ถ”๊ฐ€
      authorized_key:
        user: "{{ item }}"
        state: present
        key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
      with_items:
        - irteam
        - irteamsu
        - centos
        - vagrant
        - root
    - name: Make sure a service unit is restarting
      ansible.builtin.systemd:
        state: restarted
        name: sshd.service

 

ssh ๊ด€๋ จ ์˜ค๋ฅ˜ ๋ฐœ์ƒ

fatal: [cent7-1]: FAILED! => {"msg": "An unhandled exception occurred while running the lookup plugin 'file'. Error was a <class 'ansible.errors.AnsibleError'>, original message: could not locate file in lookup: ~/.ssh/id_rsa.pub. could not locate file in lookup: ~/.ssh/id_rsa.pub"}

 

ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

1. sshํ‚ค ์ƒ์„ฑ

ssh-keygen

 

2. sshํ‚ค๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธ

cat ~/.ssh/id_rsa.pub

 

3. Vagrantfile ํŒŒ์ผ์ด ์œ„์น˜ํ•œ ๊ณณ์œผ๋กœ ์ด๋™

cd /Users/nhn/workspace/VM/centos7



4. ๋ฒ ์ด๊ทธ๋ŸฐํŠธ ๊ธฐ์กด ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ssh ์ ‘๊ทผ

vagrant ssh


5. ์ธ์ฆํ‚ค ๋“ฑ๋ก์—ฌ๋ถ€ ํ™•์ธ

cat ~/.ssh/authorized_keys
exit

์•„๋ž˜์ฒ˜๋Ÿผ ssh-rsa๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋‚ด์šฉ์ด ๋œฌ๋‹ค๋ฉด ํ‚ค๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค!


6. ์ธ์ฆํ‚ค ํ™•์ธ

cat ~/.ssh/id_rsa.pub


7. ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  vagrant provision์„ ์ˆ˜ํ–‰

vagrant provision



8. ssh ํ‚ค๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ

ssh centos@192.168.56.11

 

  • ํ”„๋กœ๋น„์ €๋‹๊นŒ์ง€ ์ •์ƒ์ ์œผ๋กœ ์ง„ํ–‰๋˜๋ฉด ์œ„์˜ ๋ช…๋ น์–ด๋กœ ์–ด๋Š ๊ฒฝ๋กœ์—์„œ๋“  ํ„ฐ๋ฏธ๋„์—์„œ ๋ฐ”๋กœ VM์— ์ ‘๊ทผ ๊ฐ€๋Šฅ!
    • authorized_key ํ‚ค๋ฅผ ๋“ฑ๋กํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ssh๋ฅผ ํ†ตํ•œ ํŒจ์Šค์›Œ๋“œ ๋ฏธ์ž…๋ ฅ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ด์ง
    • ip๋Š” Vagrantfile์— ์ •์˜๋œ ๊ฒƒ์— ๋”ฐ๋ผ 192.168.56.11๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ถ€์—ฌ๋จ

 

๋ช…๋ น์–ด

# ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋Š” ๋ชจ๋‘ ์ปจํŠธ๋กคํ•˜๋ ค๋Š” VM์˜ ์„ค์ •์ด ์ •์˜๋œ Vagrantfile์ด ์œ„์น˜ํ•œ ๊ฒฝ๋กœ์—์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ์ •์ƒ์ž‘๋™ํ•จ.

# VM๊ธฐ๋™
vagrant up 

# ์ƒ์„ฑํ•œ VM์— ssh ์ ‘๊ทผ, vagrant๊ณ„์ •์— ์ ‘๊ทผํ•˜๊ฒŒ๋จ.
vagrant ssh

# ์ƒ์„ฑ ์Šคํƒญ์€ ๊ฑด๋„ˆ๋›ฐ๊ณ  ํ”„๋กœ๋น„์ €๋‹๋งŒ ์ง„ํ–‰.
vagrant provision

# VM ์ข…๋ฃŒ
vagrant halt

# ์ƒ์„ฑํ•œ VM ์‚ญ์ œ. f๋Š” ๊ฐ•์ œ์˜ต์…˜.
vagrant destroy -f

 

 

 

์ฐธ๊ณ ๋งํฌ

+ Recent posts