인프런 커뮤니티 질문&답변

땃쥐님의 프로필 이미지
땃쥐

작성한 질문수

Jenkins를 이용한 CI/CD Pipeline 구축

Ansible 설정과 작동 과정

앤서블 컨테이너 생성에서 어려움을 겪고 있습니다.

작성

·

319

·

수정됨

0

환경

  • ASUS사의 Zenbook duo (UX482)

  • CPU : 인텔 i5 코어 사용

  • 운영체제: Ubuntu 22.04

실행 상황

  • 강의에서 제공된 Windows 실행 명령어를 입력

$ docker run --privileged -itd --name ansible-server -p 20022:22 -p 8081:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup edowon0623/ansible:latest /usr/sbin/init
  • 컨테이너 상태 조회

     

    $ docker ps -a
    
    CONTAINER ID   IMAGE                       COMMAND                   CREATED         STATUS         PORTS                                                                                      NAMES
    f9df392834bf   edowon0623/ansible:latest   "/sbin/init systemct…"   6 seconds ago   Up 5 seconds   0.0.0.0:20022->22/tcp, :::20022->22/tcp, 0.0.0.0:8081->8080/tcp, :::8081->8080/tcp         ansible-server
    cb221488549e   jenkins/jenkins             "/usr/bin/tini -- /u…"   8 days ago      Up 4 hours     0.0.0.0:50000->50000/tcp, :::50000->50000/tcp, 0.0.0.0:8088->8080/tcp, :::8088->8080/tcp   jenkins-server
    

    실행은 됩니다.

 

  • ssh 접속 시도

$ ssh root@127.0.0.1 -p 20022
kex_exchange_identification: read: Connection reset by peer
Connection reset by 127.0.0.1 port 20022

접속이 안 되네요.

 

  • 로그 확인

$ docker logs f9df3                       

systemd 239 (239-51.el8_5.2) running in system mode. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=legacy)
Detected virtualization docker.
Detected architecture x86-64.

Welcome to CentOS Linux 8!

Set hostname to <f9df392834bf>.
Failed to create /init.scope control group: No such file or directory
Failed to allocate manager object: No such file or directory
[!!!!!!] Failed to allocate manager object, freezing.
Freezing execution.

내부적으론 이런 로그가 찍히고 있습니다.

 

그 외 어려움

  • 도커 서버 띄우는 실습은 도커로 잘 안 되서, 따로 올려주신 VM 환경 구축 강의를 참고해서 해결했습니다.

  • 비슷하게 이번 실습도 Docker 로 잘 안 되는데, VM을 이용하여 Ansible 서버 실습을 시도해보려고 했는데, 이 쪽은 Docker 이미지와 비슷하게 환경을 어떻게 구축해야하는지 답이 잘 안 나옵니다.

답변 3

0

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

안녕하세요, 이도원입니다.

말씀하신 Ubuntu 환경에서 Dind 방식의 Docker가 실행 될 수 있도록 이미지 등록했습니다. 이미지 환경은 아래와 같습니다.

AWS EC2 Ubuntu 22.04 + Docker 26.1.0 환경에어 도커 이미지 생성 했습니다.

  • edowon0623/ubuntu-server:ubuntu22.04 --> Ubuntu 22.04 설치

  • edowon0623/sshd-server:ubuntu22.04 --> Ubuntu 22.04 + sshd 설치

  • edowon0623/docker-server:ubuntu22.04 --> Ubuntu 22.04 + sshd + Docker

  • edowon0623/ansible-server:ubuntu22.04 --> Ubuntu 22.04 + sshd + Docker + Ansible 설치

참고로 sshd 서버에 접속 시 암호는 P@ssw0rd 로 앞서 다른 환경과 동일합니다.

해당 이미지는 Ubuntu OS가 설치 된 환경에 Docker를 먼저 설치하시고 위 이미지들을 docker pull 하셔서 사용하시면 됩니다.

실행 해 보시고 문의사항 있으시면 다시 글 남겨 주시기 바랍니다.

감사합니다.

0

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

안녕하세요, 이도원입니다.

답변이 늦어 죄송합니다. AI 인턴 답변이 달려 있어, 미쳐 꼼꼼하게 확인하지 못했습니다.

문의사항 내용은 Ubuntu 환경에서 제공해 드린 ansible 이미지를 사용하려고 했을 때 오류가 발생하는 문제점인 것 같습니다. 저희가 제공해 드리는 ansible 이미지가 Centos에서 작성된 이미지이기 때문에, Linux에 설치 된 Docker Engine에 따라 다르게 실행될 수 있을 것 같습니다. 확인해 보니, Centos 에서 실행할 때에는 해당 ansible 이미지가 문제가 없는 것 같습니다만, Ubuntu 에서는 올려주신 문제와 같은 오류가 있음을 확인했습니다. Ubuntu에서 실행 가능한 이미지 (ubuntn + docker + ansible)를 생성하는 데로 다시 공유해 드리도록 하겠습니다.

추가로, 저희가 강의에서 docker를 사용하는 목적은 CI/CD 테스트를 하는데 있어, 여러 VM이 필요로 하는 경우가 있는데, VirutalBox와 같은 툴이 Windows나 MacOS Intel chip 경우에는 잘 작동되지만, M1 chip을 사용하는 MacOS의 경우에는 VirutalBox를 사용할 수 없어서, docker in docker 방식으로 VM을 설치하고 해당 VM에 docker가 설치 되어 있는 것처럼 꾸며서 실습환경을 구성해 보았습니다. 그런데, 다양한 환경에서 DinD 방식으로 실행하는데에 문제점이라던가 SSH 서버가 기동되지 않는 등의 이슈로 인해 별도의 VM 관련 강의를 제작하여 공유해 드렸습니다. 이 때는 MacOS M1 에서도 사용 가능한 VM 서비스에 대한 부분도 추가하긴 했습니다. 결론 부터 말씀드리면, 일반적인 VM 환경에 OS와 Docker + SSH를 설치하는데에 큰 문제가 없다면, 굳이 강의에서 사용한것과 같은 DinD 방식의 Docker는 사용하지 않는 게 좋다고 생각됩니다.

VM을 구성하신 후에는 OS를 설치한 상태에서 추가로 Ansible과 Docker를 각 OS에 맞춰 설치해서 환경을 구축하신다면, 강의에서 사용하는 예제는 모두 실행가능합니다.

내용이 길어졌는데, 요약하면,

  • Ubuntu에서 사용할 수 있는 Dind 이미지 (ubuntu + docker + ansible + ssh)는 작업 되는 대로 공유 예정

  • VM 환경 구축이 가능하시다면 Dind 이미지 사용하는 것 대신, Linux VM에 직접 Docker + Ansible _ SSH 설치

이렇게 될 것 같네요. 추가 질문 사항 있으시면 다시 글 남겨 주세요. 가능한 빠른 답변 드리도록 하겠습니다.

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. 땃쥐님, Ansible 컨테이너 생성에 어려움을 겪고 계신 부분에 대해 답변 드리겠습니다.

현재 상황에 대해서 정리해보면, 해당 Docker 컨테이너를 실행하신 후 SSH로 접근하려고 하셨으나 접속이 되지 않는 문제와, 컨테이너 내부 로그에서 systemd 관련 오류가 발생하는 문제가 있는 것으로 보입니다.

먼저, SSH 연결 문제는 여러 가지 원인이 있을 수 있습니다. 가장 흔한 원인은 SSH 서비스가 컨테이너 내에서 제대로 실행되지 않았거나, 인증 방식에 문제가 있을 수 있습니다. 다시 컨테이너에 접속하여 SSH 설정과 상태를 점검해 보아야 할 것입니다.

두 번째로, 로그에 나타난 systemd 오류는 일반적인 Docker 컨테이너 환경에서는 발생할 수 있는 것으로, Docker 컨테이너는 기본적으로 systemd 대신 다른 init 시스템을 사용할 것을 기대합니다. 다만, --privileged 옵션으로 컨테이너를 실행하시는 것으로 보아 systemd를 사용하기 위한 조치를 취하신 것 같습니다. systemd 관련 설정을 다시 한번 점검해보거나, 관련된 Docker 이미지를 사용하는 것이 좋을 것으로 보입니다.

이미지 구축에 대해선, 일반적으로 Docker 이미지에서는 systemd를 기본적으로 사용하지 않습니다. 따라서, 이미지 생성시 init 시스템을 systemd 대신 다른 시스템으로 설정하거나, 해당 시스템을 사용할 수 있도록 Dockerfile을 작성해야할 수도 있습니다.

마지막으로, VM을 이용한 Ansible 서버 실습 시에는 가상 머신에 직접 Ansible을 설치하고 구성하는 방식으로 환경을 구축하시면 됩니다. ansible을 설치하기 위해 운영 체제의 패키지 관리자를 이용하셔서 적절한 설정 후 사용하시면 됩니다.

실습이 잘 진행되시길 바랍니다. 추가적인 질문이 있으시면 언제든지 문의해 주세요.

땃쥐님의 프로필 이미지
땃쥐

작성한 질문수

질문하기