Infra & DevOps/Ansible 8

[Ansible] ์„œ๋ฒ„ ์ ๊ฒ€ ์Šคํฌ๋ฆฝํŠธ ์ž๋™ํ™” ๊ตฌํ˜„ ์‹ค์Šต - CPU ์ ์œ ์œจ

Ansible Playbook์„ ์‚ฌ์šฉํ•ด์„œ Managed Node์˜ ์„œ๋ฒ„ ์ ๊ฒ€ ์ž๋™ํ™”๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ณผ์ •์„ ๊ธฐ๋กํ–ˆ๋‹ค. Ansible ์•„ํ‚คํ…์ฒ˜ VM์— ์„ค์น˜๋œ Rocky Linux 8.6์„ Control Node๋กœ ์ง€์ •ํ•˜๊ณ , EC2 ์„œ๋ฒ„๋ฅผ Managed Node๋กœ ์ง€์ •ํ•ด Managed Node์˜ ์„œ๋ฒ„ ์ ๊ฒ€ํ•˜๋Š” Playbook์„ ๊ตฌํ˜„ํ–ˆ๋‹ค. ์„œ๋ฒ„ ์ ๊ฒ€ ์ž๋™ํ™”์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ–ˆ๋‹ค.CPU ์ ์œ ์œจMemory ์ ์œ ์œจDisk ์‚ฌ์šฉ๋ฅ NIC ์‚ฌ์šฉ๋ฅ  ๋˜ํ•œ 1์‹œ๊ฐ„์— ํ•œ ๋ฒˆ์”ฉ ์ž๋™์œผ๋กœ ์Šค์ผ€์ค„๋งํ•˜์—ฌ ์œ„ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ , ๊ฒฐ๊ณผ๋ฅผ 'YYYY_MM_DD_HH_์ž์›์ •๋ณด์ˆ˜์ง‘' ํ˜•์‹์˜ txtํŒŒ์ผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๋‹ค. CPU ์ ์œ ์œจtop ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์‹œ์Šคํ…œ์˜ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ–ˆ๋‹ค. top์˜ ๊ฒฐ๊ณผ ์ค‘ CPU ์‚ฌ..

[Ansible] Managed Node์— ํŒŒ์ผ ์ƒ์„ฑํ•˜๋Š” Playbook ์ž‘์„ฑ

Managed Node์— ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋Š” playbook ์‹ค์Šต ์ง„ํ–‰ ๊ณผ์ •์„ ๊ธฐ๋กํ–ˆ๋‹ค. 1. Playbook ์ž‘์„ฑ---- name: ํŒŒ์ผ ์ƒ์„ฑ ํ…Œ์ŠคํŠธ hosts: all tasks: - name: touch file file: path: /home/test/test.txt state: touch file ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ Managed Node์ธ ec2 ์„œ๋ฒ„์— ํŒŒ์ผ์„ ๋งŒ๋“œ๋ ค๊ณ  ํ–ˆ๋‹ค.๊ทธ๋Ÿฌ๋‚˜ permission ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ .. ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ root๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•œ ์—๋Ÿฌ์˜€์œผ๋ฉฐ, ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.---- name: ํŒŒ์ผ ์ƒ์„ฑ ํ…Œ์ŠคํŠธ hosts: all become: true # root ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰ tasks: - name: to..

[Ansible] ansible.cfg ํŒŒ์ผ ์ƒ์„ฑ ๋ฐ ์„ค์ •

ansible.cfg ํŒŒ์ผ์ด๋ž€ansible.cfg ํŒŒ์ผ์€ Ansible ์„ค์ •์„ ์ œ์–ดํ•˜๋Š” ๊ตฌ์„ฑ ํŒŒ์ผ์ด๋‹ค. ์ด ํŒŒ์ผ์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์„ค์ •์„ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, Playbook ์‹คํ–‰ ์‹œ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ ์„ค์ •์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.ansible.cfg ํŒŒ์ผ์€ ์—ฌ๋Ÿฌ ์œ„์น˜์— ์žˆ์„ ์ˆ˜ ์žˆ๊ณ , ansible ์—”์ง„์€ ์ •ํ•ด์ง„ ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ํŒŒ์ผ์„ ์ฐพ๋Š”๋‹ค.ansible ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ(ํŠน์ • ํ”„๋กœ์ ํŠธ ํด๋”) ๋‚ด์— ansible.cfg ํŒŒ์ผ์ด ์žˆ์œผ๋ฉด ํ•ด๋‹น ์„ค์ •์ด ์ ์šฉ๋จํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— ansible.cfg ํŒŒ์ผ์ด ์—†๋‹ค๋ฉด ์‚ฌ์šฉ์ž ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ .ansible.cfg ์„ค์ •์ด ์ ์šฉ๋จ์œ„์˜ ๋‘ ์œ„์น˜์— ์„ค์ • ํŒŒ์ผ์ด ์—†๋‹ค๋ฉด default ๊ตฌ์„ฑ ํŒŒ์ผ์ธ /etc/ansible/ansible.cfg๋ฅผ ์‚ฌ์šฉ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ Ansible์€ ์„ค..

[Ansible] Shell, Command, Raw ๋ชจ๋“ˆ์˜ ์ฐจ์ด์ 

Ansible์—์„œ๋Š” shell, command, raw ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ์›๊ฒฉ ํ˜ธ์ŠคํŠธ์—์„œ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ์„ธ ๊ฐ€์ง€ ๋ชจ๋“ˆ์€ ์„œ๋กœ ๋น„์Šทํ•˜์ง€๋งŒ, ๊ฐ ๋ชจ๋“ˆ์˜ ํŠน์„ฑ์— ๋”ฐ๋ผ ์ ํ•ฉํ•œ ์ƒํ™ฉ์ด ๋‹ฌ๋ผ์ง„๋‹ค. 1. Shell ๋ชจ๋“ˆshell ๋ชจ๋“ˆ์€ ์›๊ฒฉ ํ˜ธ์ŠคํŠธ์˜ ์…ธ ํ”„๋กฌํ”„ํŠธ ํ™˜๊ฒฝ์—์„œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ์ด ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋ฉด ํŒŒ์ดํ”„๋ผ์ธ๊ณผ ๊ฐ™์€ ์…ธ์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด grep, cut๊ณผ ๊ฐ™์€ ๋ช…๋ น์„ ํŒŒ์ดํ”„(|)๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ๋ณต์žกํ•œ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ณด์•ˆ์ ์ธ ์ธก๋ฉด์—์„œ ์ทจ์•ฝํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค. (ex. shell Injection ..)- name: Shell ๋ชจ๋“ˆ ์˜ˆ์ œ shell: cat somefile.txt | grep something  2. Command ๋ชจ๋“ˆcomman..

[Ansible] ansible_facts์™€ gather_facts ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

ansible_facts๋ž€?ansible_facts๋Š” Ansible์ด ์›๊ฒฉ ํ˜ธ์ŠคํŠธ์—์„œ ์ž๋™์œผ๋กœ ์ˆ˜์ง‘ํ•˜๋Š” OS ๊ด€๋ จ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ์ด๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•˜์ž๋ฉด Ansible์€ playbook์ด ์‹คํ–‰๋  ๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ gather_facts๋ฅผ ํ†ตํ•ด ํ˜ธ์ŠคํŠธ์˜ ์—ฌ๋Ÿฌ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ , ์ด๋ฅผ ansible_facts์— ๋”•์…”๋„ˆ๋ฆฌ๋กœ ์ €์žฅํ•œ๋‹ค. 1. Gather Facts ์ •๋ณด ์ถœ๋ ฅ ํ…Œ์ŠคํŠธ---- name: Gather facts ํ…Œ์ŠคํŠธ hosts: all tasks: - name: ์ˆ˜์ง‘ ์ •๋ณด ์ถœ๋ ฅ debug: var: ansible_facts['distribution'] var: ansible_facts['default_ipv4']['address'] ์ฒ˜์Œ์—..