Infra & DevOps/Ansible

[Ansible] ansible.cfg 파일 생성 및 μ„€μ •

hyeyeonismm 2024. 3. 29. 15:34

ansible.cfg νŒŒμΌμ΄λž€

ansible.cfg νŒŒμΌμ€ Ansible 섀정을 μ œμ–΄ν•˜λŠ” ꡬ성 νŒŒμΌμ΄λ‹€. 이 νŒŒμΌμ„ 톡해 μ—¬λŸ¬ 섀정을 μ»€μŠ€ν„°λ§ˆμ΄μ§•ν•  수 있으며, Playbook μ‹€ν–‰ μ‹œ λ‹€μ–‘ν•œ ν™˜κ²½ 섀정을 μ μš©ν•  수 μžˆλ‹€.

ansible.cfg νŒŒμΌμ€ μ—¬λŸ¬ μœ„μΉ˜μ— μžˆμ„ 수 있고, ansible 엔진은 μ •ν•΄μ§„ μš°μ„ μˆœμœ„μ— 따라 νŒŒμΌμ„ μ°ΎλŠ”λ‹€.

  • ansible λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜λŠ” 디렉토리(νŠΉμ • ν”„λ‘œμ νŠΈ 폴더) 내에 ansible.cfg 파일이 있으면 ν•΄λ‹Ή 섀정이 적용됨
  • ν˜„μž¬ 디렉토리에 ansible.cfg 파일이 μ—†λ‹€λ©΄ μ‚¬μš©μž ν™ˆ 디렉토리 .ansible.cfg 섀정이 적용됨
  • μœ„μ˜ 두 μœ„μΉ˜μ— μ„€μ • 파일이 μ—†λ‹€λ©΄ default ꡬ성 파일인 /etc/ansible/ansible.cfgλ₯Ό μ‚¬μš©

μš°μ„ μˆœμœ„μ— 따라 Ansible은 μ„€μ • 파일이 μš°μ„  μ μš©λœλ‹€.
μ΄λŸ¬ν•œ ꡬ쑰λ₯Ό 톡해 ν”„λ‘œμ νŠΈ λ³„λ‘œ λ‹€λ₯Έ 섀정을 μ μš©ν•  수 μžˆλ‹€.

 

ansible.cfg 파일 μ—΄κΈ°

λ¨Όμ € config 파일의 μœ„μΉ˜λ₯Ό λͺ¨λ₯Ό 경우 μ•„λž˜μ˜ λͺ…λ Ήμ–΄λ₯Ό 톡해 config파일의 μœ„μΉ˜λ₯Ό μ°Ύμ•„ μ ‘μ†ν•œλ‹€.

vi λͺ…λ Ήμ–΄λ₯Ό 톡해 ansible.cfg νŒŒμΌμ„ 열어보면 λ‹€λ₯Έ λΈ”λ‘œκ·Έ 글에 λ‚˜μ™€μžˆλŠ”λŒ€λ‘œ default 섀정이 λ‚˜μ™€μžˆμ§€ μ•Šκ³ , μ•„λž˜μ˜ μ£Όμ„λ§Œ λ‚˜μ™”λ‹€.

 

Ansible 2.12λ²„μ „λΆ€ν„°λŠ” κΈ°λ³Έ 섀정이 주석 처리된 μƒνƒœλ‘œ μ œκ³΅λ˜κ±°λ‚˜ 파일 μžμ²΄κ°€ μƒμ„±λ˜μ§€ μ•ŠλŠ”λ‹€. 이λ₯Ό 톡해 μ‚¬μš©μžκ°€ ν•„μš”μ— 따라 λͺ…μ‹œμ μœΌλ‘œ μ„€μ • νŒŒμΌμ„ μƒμ„±ν•˜κ³ , μžμ‹ μ—κ²Œ λ§žλŠ” 섀정을 직접 μΆ”κ°€ν•˜λ„λ‘ μœ λ„ν•˜λŠ” μ˜λ„λΌκ³  ν•œλ‹€.
λ”°λΌμ„œ μ•„λž˜μ˜ λͺ…λ Ήμ–΄λ₯Ό 톡해 ansible.cfg νŒŒμΌμ„ μƒμ„±ν–ˆλ‹€.

ansible-config init --disabled > ansible.cfg

이 λͺ…λ Ήμ–΄λŠ” λͺ¨λ“  μ„€μ • μ˜΅μ…˜μ΄ 주석 처리된 κΈ°λ³Έ ꡬ성 νŒŒμΌμ„ μƒμ„±ν•œλ‹€. μƒμ„±λœ ansible.cfg νŒŒμΌμ—μ„œ 주석을 ν•΄μ œν•˜κ³ , ν•„μš”ν•œ 섀정을 μˆ˜μ •ν•˜μ—¬ μ‚¬μš©ν•  수 μžˆλ‹€.

 

λ§Œμ•½ 더 λ§Žμ€ ν”ŒλŸ¬κ·ΈμΈ μ˜΅μ…˜μ„ ν¬ν•¨ν•œ μ„€μ • νŒŒμΌμ„ μ›ν•œλ‹€λ©΄ μ•„λž˜ λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.

ansible-config init --disabled -t all > ansible.cfg

 

 

ansible.cfg ꡬ성 파일 λ‚΄μš©

ansible.cfg νŒŒμΌμ€ μ—¬λŸ¬ μ„Ήμ…˜μœΌλ‘œ λ‚˜λ‰˜λ©°, 각 μ„Ήμ…˜μ—μ„œλŠ” Ansible의 λ™μž‘ 방식을 μ„ΈλΆ€μ μœΌλ‘œ μ„€μ •ν•  수 μžˆλ‹€.

 

1. defaults

이 μ„Ήμ…˜μ€ 기본적인 Ansible λ™μž‘μ„ μ •μ˜ν•˜λŠ” 곳이닀. 자주 μ‚¬μš©λ˜λŠ” μ„€μ • μ˜΅μ…˜μ€ λ‹€μŒκ³Ό κ°™λ‹€.

  • inventory: Ansible이 μ‚¬μš©ν•  인벀토리 파일의 경둜λ₯Ό μ§€μ •ν•œλ‹€.
  • remote_user: 원격 μ‹œμŠ€ν…œμ— 접속할 λ•Œ μ‚¬μš©ν•  κΈ°λ³Έ μ‚¬μš©μž 계정을 μ„€μ •ν•œλ‹€.
  • remote_port: 원격 μ‹œμŠ€ν…œμ— 접속할 λ•Œ μ‚¬μš©ν•  κΈ°λ³Έ 포트λ₯Ό μ„€μ •ν•œλ‹€.
  • timeout: SSH μ—°κ²° νƒ€μž„μ•„μ›ƒ μ‹œκ°„μ„ μ§€μ •ν•œλ‹€.
  • host_key_checking: 원격 μ„œλ²„μ— SSH 연결을 ν•  λ•Œ, SSH ν‚€λ₯Ό ν™•μΈν•˜λŠ”μ§€ μ—¬λΆ€λ₯Ό μ œμ–΄ν•˜λŠ” μ˜΅μ…˜
  • forks: Ansible이 ν•œ λ²ˆμ— λ³‘λ ¬λ‘œ μ‹€ν–‰ν•  수 μžˆλŠ” μž‘μ—…μ˜ 수λ₯Ό μ œμ–΄ν•˜λŠ” μ„€μ • (default값은 5)

 

2. privilege_escalation

sudo와 같은 κΆŒν•œ μƒμŠΉκ³Ό κ΄€λ ¨λœ 섀정을 κ΄€λ¦¬ν•œλ‹€.

  • become : κΆŒν•œ μƒμŠΉμ„ μ‚¬μš©ν• μ§€ μ—¬λΆ€λ₯Ό κ²°μ •ν•œλ‹€. true둜 μ„€μ •ν•˜λ©΄ sudo μ‚¬μš©μ΄ 기본으둜 μ μš©λœλ‹€.
  • become_user : κΆŒν•œ μƒμŠΉ μ‹œ μ‚¬μš©ν•  μ‚¬μš©μž 계정을 μ„€μ •ν•œλ‹€.

 

3. ssh_connection

SSH μ—°κ²°κ³Ό κ΄€λ ¨λœ 섀정을 ν•  수 μžˆλ‹€. (Ansible은 기본적으둜 SSHλ₯Ό 톡해 원격 μ„œλ²„μ™€ 톡신함)

  • ssh_args : SSH 연결에 μ‚¬μš©ν•  μΆ”κ°€ μ˜΅μ…˜μ„ μ§€μ •ν•œλ‹€.
  • pipelining : Pipelining κΈ°λŠ₯을 ν™œμ„±ν™”ν•˜λ©΄ μ„±λŠ₯을 ν–₯μƒμ‹œν‚¬ 수 μžˆλ‹€. κ·ΈλŸ¬λ‚˜ 일뢀 μ‹œμŠ€ν…œμ—μ„œλŠ” ν˜Έν™˜μ„± λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆλ‹€.

 

4. inventory

인벀토리 파일과 κ΄€λ ¨λœ 섀정을 μ œμ–΄ν•˜λŠ” 곳으둜 인벀토리 μΊμ‹œλ₯Ό ν™œμ„±ν™”ν•˜κ±°λ‚˜, μΊμ‹œ 파일의 μœ„μΉ˜λ₯Ό μ§€μ •ν•  수 μžˆλ‹€.

  • cache : 인벀토리 μΊμ‹œλ₯Ό μ‚¬μš©ν• μ§€ μ—¬λΆ€λ₯Ό μ„€μ •ν•œλ‹€.
  • cache_timeout : 인벀토리 μΊμ‹œμ˜ 유효 μ‹œκ°„μ„ μ„€μ •ν•œλ‹€.

 

ansible.cfg νŒŒμΌμ„ μˆ˜μ •ν•œ 후에 Ansible을 μž¬μ‹œμž‘ν•  ν•„μš” 없이 μ¦‰μ‹œ λ°˜μ˜λœλ‹€. λ³€κ²½ 사항은 λ‹€μŒ Playbook μ‹€ν–‰ μ‹œ λ°˜μ˜λœλ‹€.