클라우드를 통해 가상머신 환경을 온디멘드로 제공
인프라를 코드를 사용하여 자동으로 구축
Ansible 환경 구성은 제어노드에 구성하고 Managed node에는 특별한 환경 구성 X
Ansible 설치
Ansible은 Linux 환경에 설치 가능
sudo amazon-linux-extras install ansible2 : Amazon Linux2 ansible 설치 명령
Ansible 설치 확인
ansible --version : Ansible 버전 확인
sudo su - : root user로 사용자 전환 명령
Ansible 환경 설정 파일
- /etc/ansible/ansible.cfg : Ansible 환경 설정 파일
Ansible이 동작할 때마다 참조하는 파일
Ansible 호스트 키 검사 비활성화 정보를 ansible.cfg 파일에 등록
host_key_checking=False (처음 설치시에는 주석처리됨)
- 제어 노드에서 Managed node 접속시 별도 key 확인과정 X, 명령 수행 목적 비활성화 속성 정의
- /etc/ansible/hosts : 인벤토리 파일
Ansible 환경 설정 적용 순서
지역 설정 (현재 사용자)
- ANSIBLE_CONFIG 환경 변수에 지정된 파일
- 현재 디렉토리에 있는 ansible.cfg 파일
- 사용자 홈 디렉토리에 있는 ansible.cfg 파일
전역 설정 (모든 사용자)- /etc/ansible/ansible.cfg 파일 (글로벌 전역 파일)
Managed node와 연결 확인
ansible <호스트명 패턴 (Managed node)> [옵션]
ansible all -m ping -i ./hosts
호스트 패턴 all은 인벤토리의 모든 호스트에 대해 Ad-hoc 명령 적용시 사용하는 호스트 패턴
ansible managed -m ping -i ./hosts
managed 호스트 패턴에 대해 ping 모듈 적용, 인벤토리는 현재 디렉토리의 hosts 사용
(ping 모듈 : Ansible 제어 노드와 Managed node 사이의 통신 연결 상태 확인)
참고
제어 노드에서 Managed node에 연결하기 위한 정보를 가지고 있는 파일
sudo cp /etc/ansible/hosts .
sudo chown <사용자 ID>:<사용자 그룹> <인벤토리 파일>sudo chown ec2-user:ec2-user hosts
<hostname (managed node)> [속성]
#host 속성정보 10.0.1.1 ansible_connection=ssh ansible_port=22 ansible_user=ec2-user ansible_ssh_private_key_file=/home/ec2-user/work-ansible/key.pem
[그룹명]
<hostname (managed node)> [속성][managed] host1 ansible_host=10.0.1.1 ansible_connection=ssh ansible_port=22 ansible_user=ec2-user ansible_ssh_private_key_file=/home/ec2-user/work-ansible/key.pem
[common:children]
managed
public
private
webserver
[managed:vars]
ansible_connection=ssh //연결 방법
ansible_port=22 //연결 포트 번호
ansible_user=ec2-user //host(managed node) user id
ansible_ssh_private_key_file=/home/ec2-user/work-ansible/key.pem //개인키 파일 위치
ansible_python_interpreter=/usr/bin/python3 //host(managed node) python 경고 메세지 출력 방지, python 인터프리터 위치 지정