Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[week3 tmi] HashiCorp & Ansible Inventory #35

Open
seoyeon0201 opened this issue Oct 11, 2023 · 0 comments
Open

[week3 tmi] HashiCorp & Ansible Inventory #35

seoyeon0201 opened this issue Oct 11, 2023 · 0 comments
Labels
documentation Improvements or additions to documentation

Comments

@seoyeon0201
Copy link
Contributor

TMI

3주차: Learn Infrastructure as Code & Automate Configuration Management

HashiCorp

Ansible - 인벤토리

❓ 인벤토리란 Ansible이 인프라에 존재하는 여러 호스트를 관리하는데, 이런 호스트의 목록 또는 그룹을 지정하는 파일

기본 인벤토리 파일

/etc/ansible/hosts

명령어로 확인 가능 => head -10 /etc/ansible/hosts
명령어를 통해 기본 인벤토리 파일의 처음 10줄을 출력하도록

1. 정적 인벤토리

✔️ 사용자가 직접 INI 또는 YAML 형식으로 파일 작성

🔻 기본 그룹

그룹 속한 호스트
all 모든 호스트 포함
ungrouped 그룹에 속하지 않는 모든 호스트 포함

🔻 여러 그룹에 속한 호스트

🔻 중첩 그룹을 이용한 인벤토리 단순화

INI 형식

# [all] 은 생략 가능
mail.example.com
192.168.56.51
[webservers]
foo.example.com
bar.example.com
[dbservers]
one.example.com
two.example.com
three.example.com
# 여러 그룹에 속한 호스트
[east]
foo.example.com
one.example.com
two.example.com
[west]
bar.example.com
three.example.com
# 중첩 그룹을 이용한 인벤토리 단순화
[prod:children]
east
[test:children]
west

YAML 형식

all:
  hosts:
    mail.example.com:
      ansible_host: 192.168.56.51
  children:
    webservers:
      hosts:
        foo.example.com:
        bar.example.com:
    dbservers:
      hosts:
        one.example.com:
        two.example.com:
        three.example.com:
    east:
      hosts:
        foo.example.com:
        one.example.com:
        two.example.com:
    west:
      hosts:
        bar.example.com:
        three.example.com:
    prod:
      children:
        - east
    test:
      children:
        - west

2. 동적 인벤토리

✔️ 관리 노드의 변화가 많을 경우 정적 인벤토리로 호스트를 관리하는 것은 어려움 => 클라우드 공급자, LDAP 및 CMDB 등 동적 외부 인벤토리 시스템에서 호스트의 목록을 동적으로 가져올 수 있음

동적 인벤토리 연결 방법

  1. 인벤토리 플러그인
  2. 인벤토리 스크립트

💡 가능하면 인벤토리 스크립트보다 인벤토리 플러그인 사용 권장

동적 인벤토리 플러그인

AWS EC2 인스턴스의 목록을 가져오는 동적 인벤토리 플러그인 사용법

  1. Python용 AWS SDK boto3 패키지 설치
    sudo apt install -y python3-boto3

  2. 인벤토리 구성 파일

# aws ec2 ansible dynamic inventory plugin
plugin: aws_ec2
# set aws_access_key and secret_key.
aws_access_key: [AWS ACCESS KEY]
aws_secret_key: [AWS SECRET KEY]
# set the regions.
regions:
  - [AWS REGIONS]
  1. AWS EC2 동적 인벤토리 플러그인 테스트
ansible-inventory -i test_aws_ec2.yaml --graph
@all:
  |--@aws_ec2:
  |  |--ec2-34-204-0-109.compute-1.amazonaws.com
...
@seoyeon0201 seoyeon0201 added the documentation Improvements or additions to documentation label Oct 11, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

1 participant