Vagrant는 가상머신에 시스템 환경을 구축하고 관리하는데 편의성을 제공하는 툴이다.
다수의 머신을 각각 생성하고 관리한다면 그건 너무 불편하다.
생각만 해도 불편하다.
그냥..불편하다.
이번에는 Vagrant라는 툴을 이용해서 설치 및 테스트를 진행해보자
Notepad++, Vagrant 설치하기
- 웹에서 Notepad++, Vagrant 다운로드 받아 설치
- CMD에서 C:\HashiCorp로 이동하여 Vagrant init 명령어 실행 (Vagrantfile 생성됨)
- C:\HashiCorp 폴더에서 Vagrant init으로 생성된 'Vagrantfile'을 Notepad++로 실행
- 하기의 config.vm.box = "base"를 Centos로 수정해야함. box는 가상머신 이미지를 뜻함.
(나는 CentOS를 사용하나 우분투와 같은 다른 OS를 사용하고 싶은 사람은 그렇게 해도 됨. 강요는 안함)
- https://vagrantcloud.com/search 에 들어가서 사용하는 OS를 찾아서 base 부분을 수정해주자
- 그리고 호스트(윈도우)와 VM(CentOS)간의 공유 폴더는 설정이 번거로워 사용하지 않도록 세팅한다
좀만 내려서 config.vm.synced_folder부분을 수정해주면 된다.
Vagrant 확장 플러그인 설치
- 이거 설치하지 말자.. 이거 때매 진행이 안됐음. 다른건 저기 아래에 있음.
Vagrant UP
- VagrantFile 내용 토대로 vm을 프로비저닝 함.
※ 참고
vagrant init = 프로비저닝을 위한 예제 스크립트 생성 (Vagrantfile)
vagrant up = Vagrantfile을 읽어 프로비저닝을 진행
vagrant halt = Vagrant에서 다루는 호스트들 종료
vagrant destroy = destroy라는 단어 그대로 호스트들을 날려버린다.
vagrant ssh = vagrant 호스트 접속. 당연히 ssh로.
vagrant provision = vagrant 호스트의 설정 변경 적용
Vagrantfile 수정
bootstrap.sh 만들기
vagrant up을 통해 프로비저닝 해보즈아.
앞서 설치한 vagrant-vbguest plugin으로 인해 설치가 제대로 안되거나, 일부 설정이 프로비저닝이 안되는 케이스가 있다.
그냥 삭제 해보자.
vagrant plugin uninstall vagrant-vbguest 고고 하자!
Vagrant를 이용하여 Ansible Playbook 환경 구성
[Vagrantfile]
- Ansible_env_ready.yml 파일을 Ansible-Server에 전달/실행
[bootstrap.sh]
- /home/vagrant/.vim/autoload, /home/vagrant/.vim bashrc : vim pluging 저장될 디렉토리 생성
- vim과 bash의 환경 설정 파일 생성
[Ansible_env_ready.yml]
- yum으로 vim-enhanced, git(플러그인 다운을 위해) 설치
- pathogen.vim 플러그인을 설치 (수동설치와는 다른 것)
- vim-ansible-yaml을 git clone을 통해 다운
- vim 환경설정(vimrc), bash(bashrc) 환경설정을 수정
[VagrantFile]
- 2개의 라인 추가 및 약간의 수정을 했다.
자세한 설명은 주석을 보시라
[bootstrap.sh]
- vagrant 유저만 해당하는 환경설정 디렉토리 및 파일 생성
[Ansible_env_ready.yml]
- 앤서블 실행 준비파일을 생성해보자.
작성이 완료되었으면, vagrant provision 명령어로 ansible-server의 설정을 변경해보자
...
Ansible_env_ready.yml에서 마지막쯤에 있던 vimrc, bashrc 환경파일 수정까지 봤다면 완료라고 봐야겠다.
이제 확인해보자.
분명히 vagrantfile에 작성한대로 Ansible_env_ready.yml이 호스트에 복사가 되었을 것이다.
그리고 vim도 색이 이쁘게 입혔을 것이다.
제발...
우선 yml 파일은 있다..
vi로 열어보자 (vim은 alias로 vi 지정함)
Vagrant로 노드 생성 하기!
[Vagrantfile]
- Ansible-node CentOS로 2개 추가 구성
- Ansible-server와 동일하게 진행하나 아래 두개만 설정 추가
1) virtualbox의 cpu/memory값 수정
2) Ansible-Server에서 add_ssh_auth.sh을 실행
[add_ssh_auth.sh]
- sshpass를 이용해 앤서블 서버에 앤서블 노드 ssh_key를 등록. 서버에서 ssh방식으로 노드를 관리하기 위함
[Ansible_env_ready.yml]
- hosts파일에 서버와 노드 등록
- /etc/ansible/hosts에 Ansible을 통해 관리할 노드들을 입력
- sshpass를 설치함
[vagrantfile]
- Ansible-server를 복사해서 Ansbile-Node01/02에 대한 내용을 수정해준다.
- cpu/memory를 변경해주는 설정과 ip/port를 변경해주자.
- Ansible-server에도 한줄 추가한다
- 접속하는 계정인 vagrant로 add_ssh_auth.sh을 추가하기 위한 설정. (루트 권한이 필요 없어서 privileged: false)
[add_ssh_auth.sh]
- 생성해보자
[Ansible_env_ready.yml]
- tasks에 3개 추가해보자!
코드를 실행시켜보자
- 1안) 현재 생성되어 있는 Ansible-Server를 제거하고 한번에 server, node 다 설치
- 2안) Ansible-Server를 Provision하고, vagrant up을 통해 node01-02 로딩
나는 1안으로 다 날리고 vagrant up으로 모두 로딩한다.
- Vagrant up 명령어로 프로비저닝 생성해보자. 노트북 팬이 갑자기 쎄게 돌아간다.
확인해보자
- ssh key
- cat /etc/hosts
- cat /etc/ansible/hosts
잘 된 것 같다.
그런데 ansible all -m ping -k 를 하고 패스워드를 입력해도 잘 먹히지 않는다.
이는 centos 서버의 sshd_config(etc/ssh/에 있음)에서 패스워드로의 접속을 허용하지 않았기 때문.
그럼 어디 한번 허용 한번 해보자.
각 노드들로 들어가서 설정을 변경해주는 것은 ansible을 하는 의미가 없다.
yaml로 해도되고, bash로 해도 되지만, 둘다 해보는게 좋으므로 ansible-server는 yaml 파일로, ansible-node는 bash 파일로 만들어서 설정을 적용해보겠다.
[vagrantfile]
- Ansible-Node를 위해 'bash_ssh_conf_4_CentOS.sh'이라는 bash shell을 복사하고 실행하는 코드를 작성했다.
- 그리고 Server는 'Ansible_ssh_conf_4_CentOS.yml'을 복사하고 실행하는 코드를 실행해보았다.
[bash_ssh_conf_4_CentOS.sh]
- 원본 파일 백업하고, 스트리밍 편집기로 PasswordAuthentication을 Yes로 변경하는 코드
[Ansible_ssh_conf_4_CentOS.yml]
Vagrant provision 명령어로 프로비저닝 하고, 다시 ping을 날려보자!
nginx 설치
- vi nginx_install.yml
- ansible-playbook nignx_install.yml -k
시간대 변경하기
- vi timezone.yml
- ansible-playbook timezone.yml -k
NFS Client&Server 구성하기
- vi nfs.yml
- ansible nfs.yml -k
- 확인
'네트워크 & 클라우드 > 자동화' 카테고리의 다른 글
Terraform 기초 1 - 설치 및 기본 명령어 (0) | 2022.11.23 |
---|---|
Ansible 기초 5 - 네트워크 디바이스 관리하기 (보류) (0) | 2022.11.20 |
Ansible 기초 4 - Vagrant를 이용하여 윈도우 관리 (0) | 2022.11.19 |
Ansible 기초 3 - Vagrant를 이용하여 우분투 관리 (0) | 2022.11.17 |
Ansible 기초 1 - 기본 세팅 수동으로 하기 (0) | 2022.11.07 |