-
Ansible: 디렉토리 구조와 커맨드 정리(feat. Vagrant)Ansible 2021. 9. 18. 19:51
이번 포스팅은 ansible을 설치하고 inventory와 ansible.cfg 파일을 구성합니다.
마지막에는 ansible을 이용해 간단한 커맨드를 사용해 봅니다.
최종 디렉토리 구조는 다음과 같습니다.
< 최종 디렉토리 구조 >
seung@seung-15Z990-VR5DK:~/vagrant/testserver$ tree . . ├── ansible.cfg ├── hosts ├── ubuntu-bionic-18.04-cloudimg-console.log └── Vagrantfile
다음 환경에서 실습합니다.
- 로컬 = ubuntu 18.04 (ansible core로 사용합니다)
- virtual box 사용 (ansible node로 사용합니다)
- ubuntu/bionic64 이미지 사용
1. Ansible 설치하기
앤서블을 pip3 패키지관리자를 이용해 설치합니다.
sudo pip3 install ansible
absible로 docker와 ec2를 관리한다면 다음 모듈을 설치합니다.
pip3 install docker-py boto
2. test server 만들기
vagrant를 이용해서 virtual box에 vm을 하나 생성합니다.
이때 운영체제 이미지는 ubuntu/bionic64를 사용합니다.
mkdir testserver cd testserver vagrant init ubuntu/bionic64 vagrant up
3. test server에 접속하기
/testserver에서 vagrant ssh로 접속합니다.
vagrant ssh
4. ssh로 접근할 수 있는지 확인해보자.
ssh로도 접근해봅니다.
ssh로 접근하기 전 vagrant ssh-config를 통해 ssh 접속을 위해 필요한 정보를 알아냅니다.
seung@seung-15Z990-VR5DK:~/vagrant/testserver$ vagrant ssh-config Host default HostName 127.0.0.1 User vagrant Port 2222 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile /home/seung/vagrant/testserver/.vagrant/machines/default/virtualbox/private_key IdentitiesOnly yes LogLevel FATAL
ssh-config정보를 이용해서 ssh로 접속이 되는지 확인합니다.
ssh vagrant@127.0.0.1 -p 2222 -i /home/seung/vagrant/testserver/.vagrant/machines/default/virtualbox/private_key
5. 인벤토리(hosts) 설정하기
ansible Core에서 생성된 vm을 이름으로 찾을 수 있도록 /testserver에 hosts라는 파일을 생성합니다.
(네임서버를 설정할때 /etc/hosts에 서버 이름을 적는 것과 같습니다)
ansible이 각 서버를 인식할 수 있도록 hosts라는 inventory 파일을 생성하고
vagrant로 생성한 vm에 대한 정보를 적습니다.
< /testserver/hosts >
testserver ansible_host=127.0.0.1 ansible_port=2222 ansible_user=vagrant ansible_private_key_file=.vagrant/machines/default/virtualbox/private_key ansible_python_interpreter=/usr/bin/python3
hosts 인벤토리 안에 있는 testserver에 연결되었는지 확인하기 위해 ping 모듈을 사용합니다.
ansible testserver -i hosts -m ping
< 참고 >
만약 성공하지 못했다면 -vvvv옵션을 통해 에러 원인을 파악합니다.
ansible testserver -i hosts -m ping -vvvv
지금까지의 디렉토리 구조
seung@seung-15Z990-VR5DK:~/vagrant/testserver$ tree . . ├── hosts ├── ubuntu-bionic-18.04-cloudimg-console.log └── Vagrantfile
6. ansible.cfg 파일 설정하기
기존에는 hosts 파일에 모든 내용을 저장했는데 ansible.cfg를 따로 두어 hosts에 대한 변수를 따로 저장할 수 있습니다.
ansible.cfg에는 인벤토리 파일의 경로, SSH 사용자, SSH 프라이빗 키의 경로를 따로 적어줄 수 있습니다.
< /testserver/ansible.cfg >
[defaults] inventory = hosts remote_user = vagrant private_key_file = .vagrant/machines/default/virtualbox/private_key host_key_checking = False
hosts 파일도 수정합니다.
</testserver/hosts>
testserver ansible_host=127.0.0.1 ansible_port=2222 ansible_python_interpreter=/usr/bin/python3
최종 디렉토리 구조가 완성되었습니다.
seung@seung-15Z990-VR5DK:~/vagrant/testserver$ tree . ├── ansible.cfg ├── hosts ├── ubuntu-bionic-18.04-cloudimg-console.log └── Vagrantfile 0 directories, 4 files
기존에는 hosts 인벤토리를 사용해서 testserver를 호출했는데
ansible.cfg 파일을 생성했으므로 인벤토리 명시 없이 ansible을 호출할 수 있습니다.
ansible testserver -m ping
7. 커맨드 사용하기
다음과 같은 커맨드 모듈을 사용해서 command를 사용할 수 있습니다.
command를 사용할때는 -a 옵션과 함께 사용합니다.
ansible testserver -m command -a uptime
command는 자주 사용되는 모듈이기 때문에 생략해서 사용해도 됩니다.
ansible testserver -a uptime
root 권한이 필요할때는 -b 옵션을 주면 root권한으로 실행합니다.
ansible testserver -b -a "tail /var/log/syslog"
이번에는 apt 모듈을 이용해서 nginx 설치해봅니다.
ansible testserver -m apt -a name=nginx
반응형'Ansible' 카테고리의 다른 글
Ansible: 앤서블을 이용한 Nginx TLS 자동화 (feat. Vagrant) (0) 2021.09.23 Vagrant를 이용한 Minikube 환경 구성 (0) 2021.09.04 Ansible 디버그(Debug)와 디버거(Debugger) (0) 2021.08.29 Ansible를 이용한 nfs 서버와 클라이언트 구성 (feat. CentOS) (0) 2021.08.26 Ansible를 이용한 Timezone 설정 (feat. CentOS) (0) 2021.08.26