Infra & DevOps/Ansible

[Ansible] Ansible๊ณผ EC2 ์„œ๋ฒ„ ์—ฐ๊ฒฐ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

hyeyeonismm 2024. 3. 25. 15:09

Ansible์„ ์„ค์น˜ํ•˜๊ณ  ์‹ค์Šตํ•˜๋Š” ๊ณผ์ •์—์„œ Inventory๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ํ•‘ ๋ชจ๋“ˆ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค๊ฐ€ ๋ฐœ์ƒํ•œ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…์„ ๊ธฐ๋กํ•˜๊ณ ์ž ํ•œ๋‹ค.

 

1. EC2 ์„œ๋ฒ„์™€ SSH ์—ฐ๊ฒฐ ๋ฌธ์ œ

Ansible์€ SSH๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์›๊ฒฉ ์„œ๋ฒ„์— ๋ช…๋ น์„ ์ „๋‹ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ ์›๊ฒฉ ์„œ๋ฒ„์—๋Š” Agent๋ฅผ ์„ค์น˜ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
Ansible Core๊ฐ€ ์„ค์น˜๋˜๊ณ  playbook์„ ์ž‘์„ฑํ•˜์—ฌ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„๋ฅผ Control Node๋ผ๊ณ  ํ•˜๊ณ ,
Ansible์„ ํ†ตํ•ด ๊ด€๋ฆฌํ•˜๊ณ ์ž ํ•˜๋Š” ์„œ๋ฒ„๋ฅผ Managed Node๋ผ๊ณ  ํ•œ๋‹ค.

 

Control Node์˜ Inventory์— ์‚ฌ์ „ ์ •์˜๋˜์–ด ์žˆ๋Š” Managed Node์—๋งŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
๋‚˜๋Š” ์‹ค์Šต์„ ํ•˜๊ธฐ ์œ„ํ•ด VirtualBox์— ์„ค์น˜ํ•œ Rocky Linux๋ฅผ Control Node๋ผ๊ณ  ์„ค์ •ํ–ˆ๊ณ , EC2 ์„œ๋ฒ„๋ฅผ Managed Node๋ผ๊ณ  ์„ค์ •ํ–ˆ๋‹ค.
์ด๋ฅผ ์œ„ํ•ด ๋กœ์ปฌ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” SSHํ‚ค๋ฅผ Control Node๋กœ ๋ณต์‚ฌํ•ด์™”๊ณ , ์ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ EC2 ์ธ์Šคํ„ด์Šค์™€ ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ–ˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋‚˜ ์œ„์™€ ๊ฐ™์€ Permission denied ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

 

inventory.ini ํŒŒ์ผ์€ ์ด๋ ‡๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์—ˆ๋‹ค.

์—ฐ๊ฒฐ์ด ๊ฑฐ๋ถ€๋œ ์›์ธ์€ ํ”„๋ผ์ด๋น— ํ‚ค ํŒŒ์ผ์˜ ๊ถŒํ•œ ์„ค์ •์ด ๋„ˆ๋ฌด ๋„“์–ด์„œ ๋ฐœ์ƒํ–ˆ๋˜ ๊ฒƒ์ด์—ˆ๋‹ค. ํ”„๋ผ์ด๋น—ํ‚ค๋Š” ๋ณด์•ˆ์ƒ ๋ฏผ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋“ค์ด ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋„๋ก ๊ถŒํ•œ์„ ์ ์ ˆํžˆ ์„ค์ •ํ•ด์•ผ SSH ์—ฐ๊ฒฐ์ด ํ—ˆ์šฉ๋œ๋‹ค.

 

๋”ฐ๋ผ์„œ ํ”„๋ผ์ด๋น— ํ‚ค์˜ ๊ถŒํ•œ์„ 644์—์„œ 600์œผ๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ์—ˆ๋‹ค.

chmod 600 /home/aws/my-keyname.pem

 

2. Could not resolve hostname

inventory.ini ํŒŒ์ผ์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์ •ํ–ˆ์—ˆ๋Š”๋ฐ, ansible_host๋ฅผ ํ˜ธ์ŠคํŠธ๋ช…์œผ๋กœ ์ธ์‹ํ•˜๋ฉฐ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ์˜€๋‹ค.

[myhosts]
ec2 ansible_host=192.168.0.101 ansible_user=ec2-user ansible_ssh_private_key_file=/home/aws/my-private-key.pem

 

๋”ฐ๋ผ์„œ ํ˜ธ์ŠคํŠธ๋ช…์„ ๋”ฐ๋กœ ์„ค์ •ํ•ด ํ˜ธ์ŠคํŠธ๋ช…๊ณผ ansible_host๋ฅผ ์ •ํ™”ํžˆ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๋‹ค.
ํ˜ธ์ŠคํŠธ๋ช…์„ ์„ค์ •ํ•˜๊ธฐ ์ „์—” inventory๋ฅผ ํ™•์ธํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ์ž‘์„ฑํ–ˆ์„ ๋•Œ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋˜์—ˆ๋‹ค.

 

ํ˜ธ์ŠคํŠธ๋ช…์„ ๋”ฐ๋กœ ์„ค์ •ํ•˜๊ณ  ๋‚œ ๋’ค์—๋Š” ์ด๋ ‡๊ฒŒ ๋ฐ”๋€Œ์—ˆ๋‹ค.

 

Ansible ping ๋ชจ๋“ˆ ํ…Œ์ŠคํŠธ

์ธ๋ฒคํ† ๋ฆฌ ํŒŒ์ผ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •ํ•œ ํ›„, ping ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•ด Ansible๊ณผ EC2 ์„œ๋ฒ„ ๊ฐ„์˜ ํ†ต์‹ ์„ ๋‹ค์‹œ ํ™•์ธํ•ด๋ณด์•˜๋‹ค.

ansible -i inventory.ini myhosts -m ping

 

์„ฑ๊ณต์ ์œผ๋กœ pong ์‘๋‹ต์ด ์˜ค๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค!