[Ansible] Ansible 구성하기 #1
Ansible 이란?
다수의 서버에 동일한 명령을 보내야 할때, 수백대의 서버에 하나하나 접속해서 작업해야한다면 많은 시간이 소요됩니다.
예를 들어 다수의 서버에 동일한 계정을 생성해야할 때 Ansible을 통해 한번에 작업이 가능합니다.
이러한 툴을 Infrastructure as Code 라고 부르며 Ansible과 더불어 Puppet, Chef, Salt 등이 있습니다.
Ansible의 장점
- 대상 서버에 Agent 설치가 필요없다.
- 관련 자료가 많다.
- 멱등성 (중복되게 작업을 해도 결과가 변하지않음) 제공
- 쉽고 빠르게 구성이 가능하다
Ansible 설치하기
yum install -y python-pip
pip install ansible
해당 명령어로 간단하게 설치가 된다.
Ansible 계정 생성
Ansible 명령을 위한 계정 생성 (계정은 임의 생성)
adduser ansible
passwd ansible
ansible-alicek106 사용자의 비밀 번호 변경 중
새 암호:
새 암호 재입력:
passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다.
sudo 권한 할당
visudo
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
ansible ALL=(ALL) NOPASSWD:ALL
sudo 권한의 경우, 작업에 필요한 부분을 생각하여 적절하게 사용한다. (필요한 명령어만 부여 등)
SSH Key 생성
아래 명령어를 통해 SSH Key 생성
ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:2OmwBFZLFCX1rbvw6ExSDnPg2bpDEtmKjOvrG9x7dng root@ansible.young-dev.com
The key's randomart image is:
+---[RSA 2048]----+
| .*+o |
| o o . . |
| ooo . . |
| .oo.* . . |
| o . oO S . |
|o + o..@ . |
| + . o= = . |
|. . .+.E + . |
|o=o.o +o+ o |
+----[SHA256]-----+
SSH key를 대상 서버로 전송하여, key를 통해 SSH 접근이 가능하도록 함
ssh-copy-id ansible@192.168.99.136
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
ansible@192.168.99.136's password:
Number of ky(s) added: 1
Now try logging into the machine, with: "ssh 'ansible@192.168.99.136'"
and check to make sure that only the key(s) you wanted were added.
호스트 파일 구성
호스트 파일이란 Ansible의 대상 서버를 명시해둔 파일로, 아래와 같이 사용한다.
vim /etc/ansible/hosts.ini
admin.young-dev.com ansible_host=192.168.99.136 ansible_user=ansible
Hostname ansible_host=대상IP ansible_user=username 형태로 사용한다.
아래와 같이 그룹화하여 사용 가능
admin.young-dev.com ansible_host=192.168.99.136 ansible_user=ansible
backup.young-dev.com ansible_host=192.168.99.139 ansible_user=ansible
...
...
[web-backupserver]
admin.young-dev.com
[db-backupserver]
backup.young-dev.com
테스트
web-backupserver 그룹 전체에게 ping 명령을 날린다.
ansible -m ping -i /etc/ansible/hosts.ini web-backupserver
admin.young-dev.com : SUCCESS =>
위와 같이 결과가 표시된다.
#02에서는, Ansible Playbook에 대해서 포스팅 할 예정입니다.
댓글남기기