동적 인벤토리란?
> 인벤토리를 동적으로 받아와서 작성하고 실행할 수 있도록 하는 것
> host 수가 고정되어 있는 경우에는 정적 인벤토리를 작성하면 되지만,
aws ec2를 사용할 때와 같이 가상머신을 유동적으로 사용할 경우 인벤토리 내용이 달라져야 한다.
계속 수정하기엔 무리니까..동적 인벤토리를 사용해야 하는데
이 때는 plugin을 통해 연동하여 사용한다.
AWS 동적 인벤토리
> aws와 연동할 때는 aws_ec2라는 플러그인을 사용하여 동적 인벤토리를 사용한다.
> 인벤토리 내의 호스트 그룹은 tag로 구분한다.(선택사항)
> 리눅스에서 aws의 ec2에 접속할 때는 ssh가 아닌, key를 통해(key file) 접속한다.
> key형식에는 ppk와 pem이 있다. putty 말고, 리눅스에서 접속하는 거니까 pem을 사용한다.
AWS 동적 인벤토리 실습
: AWS에서 EC2 인스턴스 생성 후, 앤서블 동적 인벤토리 작성하여 앤서블로 EC2 접속한 후 메시지 출력하기
> EC2 인스턴스 생성)
인스턴스 이름(Name and tags) > ubuntu > t2.micro > 키 페어 : pem으로 나중에 변환해야 하는 키 > 네트워크 설정에서 퍼블릭 IP 자동 할당 활성화 > 적당히 선택한 후 > 생성
아래 캡처본은 인스턴스 이름(Name and tags) 생성 부분이다.
이따가 playbook > hosts: [이름]에서도 사용될 '인스턴스 이름_키', '인스턴스 이름_값' 이다.
Add additional tags를 누르면 아래와 같은 화면이 나온다.
> boto3 설치) boto3을 설치하기 위해 먼저 파이썬을 설치한 후, boto3을 설치한다.
yum install python3 # 파이썬 설치
pip3 install boto3 # boto3 설치
> ansible.cfg 파일 수정) [inventoty] 항목의 enable_plugins 주석을 해제하고, aws_ec2를 추가한다.
vi /etc/ansible/ansible.cfg # vi 편집기로 설정 파일 접속
[inventory]
# enable inventory plugins, default: 'host_list', 'script', 'auto', 'yaml', 'ini', 'toml'
enable_plugins = host_list, virtualbox, yaml, constructed, aws_ec2 # 주석 해제 후, 추가
> 동적 인벤토리 파일) 'vi aws_ec2.yml' 명령어로 인벤토리 파일(aws_ec2.yml)을 생성한다.
참고로, 액세스 키와 시크릿 키는 aws의 '보안 자격 증명'에서 생성하였다.
---
plugin: aws_ec2
aws_access_key: [aws_액세스키]
aws_secret_key: [aws_시크릿키]
keyed_groups:
- key: tags
prefix: tag
> Playbook 파일) 'vi playbook.yml' 명령어로 파일 생성 및 작성
- hosts: ["tag_[인스턴스 이름_키]_[인스턴스 이름_값]"]
vars:
ansible_ssh_private_key_file: "[pem키 경로]"
tasks:
- name: print # 메시지 출력해주는 작업
debug:
msg: "{{ ansible_facts.default_ipv4.address }}"
become: yes
> 실행 및 확인) 아래의 명령어로 확인한다.
ansible-playbook -i aws_ec2.yml playbook --user ubuntu
> 오류 수집 1) WARNING: UNPROTECTED PRIVATE KEY FILE!
키 파일이 보호되고 있지 않다는 것 같아보였다.. Permissions 0644?
대충 키 파일 권한을 644로 바꾸라는 것 같아서 chmod 명령어를 사용하여 644로 바꿨다.
> 오류 수집 2) Authentication or permission failure. In some cases, you may have been able to authenticate and did not have permissions on the target directory.
실행 및 확인 명령어를 입력할 때 뒤에 --user ubuntu를 안 적고, 그냥 실행했더니 떴던 오류이다.
root 사용자 대신 ubuntu 사용자로 하라는 것 같았다..
마지막으로, 실행 명령어를 제대로 입력하고 다시 실행해보니 무사히 출력 되었다.
'클라우드 > AWS' 카테고리의 다른 글
Ansible) 앤서블 변수, register & stat & set_fact 모듈 (0) | 2023.03.29 |
---|---|
Ansible) 앤서블이란? 앤서블에 대해(Control 노드 구성, 모듈 구성) (0) | 2023.03.28 |
IaC) Infrastructure as Code, 쉘 프로그래밍, 쉘 스크립트 만들기 (0) | 2023.03.27 |
장고와 Redis 연결 후 사용하기(2) - 이메일 인증(gmail사용) (0) | 2023.03.24 |
장고와 Redis 연결 후 사용하기(1) - 로그인 세션 저장 (0) | 2023.03.24 |