๐Ÿšข ํ™ˆ DevOps ํŒŒ์ดํ”„๋ผ์ธ: ์ฃผ๋‹ˆ์–ด ์—”์ง€๋‹ˆ์–ด์˜ ์ด์•ผ๊ธฐ(4/4)

5020 ๋‹จ์–ด
์ด ์ผ๋ จ์˜ ๊ธฐ์‚ฌ์—์„œ๋Š” ๋‘ ๊ฐœ์˜ Raspberry Pi์™€ ๋งŽ์€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜๋งŒ์˜ ํ™ˆ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•œ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ์—์„œ ์ฐธ์กฐํ•˜๋Š” ์ฝ”๋“œ๋Š” here์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ์—์„œ๋Š” ๋‚ด ํŒŒ์ดํ”„๋ผ์ธ์˜ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ๋‹ค๋ฃจ๊ณ  ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ์ ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ชจ๋‹ˆํ„ฐ๋ง



๋‚ด ๊ฐœ๋ฐœ ํŒŒ์ดํ”„๋ผ์ธ์˜ ๊ฐ€๋™ ์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง์— ๋Œ€ํ•œ ์ดˆ๊ธฐ ์ƒ๊ฐ์€ UpTimeRobot ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์„œ๋น„์Šค๋Š” ์ฃผ๊ธฐ์ ์œผ๋กœ ํ•‘ํ•˜๊ณ  ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ด๋ฉ”์ผ์„ ํ†ตํ•ด ๊ฒฝ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

*

์ด๋ฉ”์ผ ์˜ˆ์‹œ*

๊ทธ๋Ÿฌ๋‚˜ ์›น ์•ฑ์—์„œ ๊ฐœ๋ฐœ ํŒŒ์ดํ”„๋ผ์ธ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์ •๋ง ํ›Œ๋ฅญํ•˜๋ฉฐportainer ์ด ๊ธฐ๋Šฅ์„ ์ •๋ง ๋Šฅ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ํ›Œ๋ฅญํ•˜๊ณ  ์„ค๋ช…ํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ๋ฅผ ๊ฒ€์‚ฌํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ์— SSH๋ฅผ ํ†ตํ•ด ์ ‘์†ํ•˜๋ฉฐ ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๋ฐฐํฌํ•˜์—ฌ ์—ฌ๋Ÿฌ ํ˜ธ์ŠคํŠธ๋ฅผ ์ œ์–ดํ•˜๊ณ  ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

*

ํฌํ„ฐ์ด๋„ˆ ๋Ÿฌ๋‹*

portainer๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ docker-compose ํ…œํ”Œ๋ฆฟ์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

portainer:
image: portainer/portainer
command: -H unix:///var/run/docker.sock
restart: always
networks:
  • homereponet ports:
  • 9000:9000
  • 8000:9000 volumes:
  • /var/run/docker.sock:/var/run/docker.sock
  • /mnt/hdd/portainer:/data labels:
  • "traefik.enable=true"
  • traefik.backend=portainer
  • traefik.portainer.frontend.rule=Host:portainer.<domain>
  • traefik.docker.network=homereponet
  • traefik.portainer.port=9000

๋



์ด์ œ ์ด ์ด์•ผ๊ธฐ๋Š” ์—ฌ๊ธฐ์„œ ๋๋‚ฉ๋‹ˆ๋‹ค. ์ €๋Š” ์ด๊ฒƒ์ด ์—…๊ณ„ ์Šคํƒ€์ผ์˜ ๊ฐœ๋ฐœ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ฐ–๊ณ ์ž ํ•˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์„ ์œ„ํ•œ ํ›Œ๋ฅญํ•œ ์‹œ์ž‘ ์„ค์ •์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์š”์•ฝํ•˜์ž๋ฉด ์ด ์ตœ์ข… ์„ค์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Gitea ๋Œ€์šฉ๋Ÿ‰ ๋ฏธ๋””์–ด ํŒŒ์ผ์— ๋Œ€ํ•ด git LFS์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค. Drone CI์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋นŒ๋“œํ•˜๊ณ  Docker Registry์— ์ €์žฅํ•˜๊ณ  Ansible ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ ์‹œ์Šคํ…œ ์„ธํŠธ์— ๋ฐฐํฌํ•˜๊ณ  cloudformation plugin AWS ๋ฐฐํฌ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Portainer UI์—์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Traefik ๋ฌด๋ฃŒletโ€™s encrypt ๋„๋ฉ”์ธ์—์„œ duckdns ๋ฌด๋ฃŒ https ์ธ์ฆ์„œ๊ฐ€ ์žˆ๋Š” ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ์šฉ. ๋ชจ๋“  ์Šคํ† ๋ฆฌ์ง€๋Š” ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ์— ์ €์žฅ๋˜๋ฉฐ AWS s3์— ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฐฑ์—…๋ฉ๋‹ˆ๋‹ค.



์ด ๊ธฐ์‚ฌ ์‹œ๋ฆฌ์ฆˆ๋ฅผ ์ฆ๊ธฐ์…จ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‹ค๋ฅธ ํ•˜๋“œ์›จ์–ด, 3D ์ธ์‡„, ์Šค๋งˆํŠธ ํ™ˆ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋ฐ ๋น„๋””์˜ค ํ˜•์‹์˜ ๊ธฐ๊ณ„ ํ•™์Šต์„ ํฌํ•จํ•˜์—ฌ ๋” ๋งŽ์€ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

๋ถ€๋ก



์ฝ”๋“œ: https://github.com/sk-t3ch/home-repo

๊ธธ์„ ๋”ฐ๋ผ ๋ฐฐ์šด ์ž„์˜์˜ ๊ฒƒ๋“ค:
  • Docker-compose๋Š” ์‹œ์ž‘๋œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด์—์„œ ์ œ์–ด๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
  • .
  • pi ๋ฐ ๋ฃจํŠธ aws ์‚ฌ์šฉ์ž๋งŒ ๋ฒ„ํ‚ท์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— aws s3์— ๋Œ€ํ•œ ์ •์ฑ… ์ƒ์„ฑ์ด ํ•„์š”ํ•˜๋ฉฐ ์•”ํ˜ธํ™”๋„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค
  • .
  • ๋ฐฑ์—… ๊ธฐ์ˆ ์„ ์ž์„ธํžˆ ์กฐ์‚ฌํ•ด์•ผ ํ•จ
  • 10์ผ ํ›„ Glacier๋กœ s3 ๋ฐฑ์—…์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์Šคํ† ๋ฆฌ์ง€ ๋น„์šฉ์ด ๋‚ฎ๊ฒŒ ์œ ์ง€๋จ
  • Raspberry Pi 4์—๋Š” USB 3.0 ํฌํŠธ 2๊ฐœ์™€ 2.0 ํฌํŠธ 2๊ฐœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • HFS+ ๋Œ€์‹  EXFAT ๋“œ๋ผ์ด๋ธŒ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Postgres ์ปจํ…Œ์ด๋„ˆ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•จ
  • Gitea์˜ ssh๋Š” ์•„์ง ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•œ ๊ถŒํ•œ ๋ฌธ์ œ๋กœ ์ธํ•ด ํฌํŠธ 22๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ—ˆ์šฉ ๋ฒ”์œ„(1065+)
  • ์—์„œ ssh ํฌํŠธ๋ฅผ ํ—ˆ์šฉํ•˜๋„๋ก ๋ผ์šฐํ„ฐ ํฌ์›Œ๋“œ ํฌํŠธ๋ฅผ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.

    ๋‚ด์šฉ: 1 , 2 , 3 , ( 4 )

    ์ฝ์–ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค



    ์ด ๊ธฐ์‚ฌ๋ฅผ ์ฆ๊ฒผ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์Šคํƒ€์ผ์ด ๋งˆ์Œ์— ๋“ค๋ฉด T3chFlicks.org์—์„œ ๊ธฐ์ˆ  ์ค‘์‹ฌ์˜ ๊ต์œก ์ฝ˜ํ…์ธ ( , , Facebook , )๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

    ์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ