
Ansible 설치
먼저 Ansible를 설치할 도커 리눅스 환경을 구성해야 한다.
해당 리눅스 환경 구성과 관련해서는 다음 포스팅을 참고하면 된다 -> SSH, Docker 도커 이미지 구성
(후술할 내용은 나의 리눅스 컨테이너 환경에 맞춰 진행한 것으로 파이썬 버전, OS에 따라 알맞게 설치를 진행해야 한다.)
(필자의 경우 centos 8를 사용하였고 오히려 돌아간 것일 수 있다. 기본적으로 yum -y install ansible를 입력하면 설치된다.)
그 후 작업은 아래와 같다.
1. pip 및 setuptools 업그레이드
pip3 install --upgrade pip setuptools
2. Rust 도구 체인 설치 및 업그레이드
dnf install rust cargo
Ansible 설치 과정에 필요한 cryptography 패키지의 설치는 Rust 체인 도구에 의존할 수 있다.
3. 개발 도구 및 라이브러리 설치
dnf groupinstall "Development Tools"
dnf install openssl-devel libffi-devel
cryptography 패키지의 설치에는 C 컴파일러 및 관련 개발 도구가 필요하다. 따라서, 필요한 패키지를 설치한다.
4. cryptography 패키지 설치
pip3 install cryptography --no-binary cryptography
5. Python 버전 업그레이드(필요시)
dnf install @python38
python3.8 -m pip install --upgrade pip setuptools
5번의 경우 필요에 따라 파이썬 버전을 업그레이드 하면 된다. 필자의 경우 기본적으로 깔려있는 파이썬 버전이 낮아 진행했다.
6. Ansible 설치
python3.8 -m pip install ansible==2.9.13
파이썬 버전에 맞는 ansible를 설치해주자.
7. Ansible 설치 확인
ansible --version 사용시 버전 정보가 잘 출력되면 된다.

Ansible 정상 동작 확인
우선, 정상 동작 확인을 위해 Ansible의 인벤토리(관리할 호스트)를 설정해주자. 기본 경로는 /etc/ansible/hosts이다.
인벤토리는 나중에 -i 옵션으로 지정도 가능하다.
우리는 일단 Ansible 서버 자체를 관리하도록 설정하려 한다.
따라서, 아래 명령어를 사용해서 Ansible이 설치된 도커 컨테이너의 IP를 확인하도록 하자.
도커 컨테이너 bridge IP 확인
docker network inspect bridge

172.17.0.4로 설정되어 있는 것을 확인할 수 있다.
Ansible 인벤토리 설정

위의 경로로 hosts 파일을 생성한다.
그 후, 아래와 같이 설정해준다.
- [그룹]
- 지정할 그룹을 의미하며 여러 host를 담아 한번에 관리할 수 있다.
- hostname 및 ip
- 말 그대로 hostname 또는 ip를 할당한다.

타겟 서버 접속 확인
Ansible를 사용하여 서버를 구성 및 관리하기에 앞서 Ansible가 관리하는 서버가 접속이 가능한지 확인해봐야 한다.
위의 내용에서 우리는 타겟 서버를 우선 Ansible 컨테이너로 지정하였다.
따라서, ssh 명령어를 사용하여 접속해본다.

정상적으로 ID/Password를 입력하여 접속을 성공한 것을 볼 수 있다.
키 설정
하지만, 우리가 Ansible를 이용하여 스크립트를 통해 인프라를 관리할 때,
ID/Password가 포함되면 다소 불편한 작업이 될 수 있다.
따라서, ssh-keygen 명령어를 사용해서 id_rsa라는 퍼블릭 키를 생성하고 해당 키를 공유하는 방법을 사용하자.
ssh-keygen

ssh-copy-id root@172.17.0.4 <- 공개키 복사

퍼블릭 키 확인은 홈 디렉토리의 .ssh/authorized_keys에 접속하여 확인이 가능하다.
Ansible 동작 확인
키 설정까지 마쳤다면 Ansible 모듈을 활용해서 동작이 되는지 확인해보자.
모듈과 관련된 설명은 포스팅을 진행하며 조금씩 할 것이다.
간단하게 ping 명령어를 사용해보자.
ansible ansible-server -m ping

여기서 ansible-server는 인벤토리에 등록되어있는 그룹을 설명하는 것이며, -m 옵션은 모듈 사용을 의미하는 것이다.
SUCCESS라는 결과가 떴으므로 성공적으로 Ansible이 동작하는 것을 알 수 있다.
마무리하며
지금까지 Ansible 서버 설정과 다른 기타 설정, 정상 동작에 관해 알아보았다.
다음 포스팅에서는 Jenkins와 Ansible를 연동한 다양한 작업에 관하여 차차 알아볼 것이다.
'Infra > Jenkins' 카테고리의 다른 글
[Jenkins] Ansible Playbook 사용 (0) | 2024.07.30 |
---|---|
[Jenkins] Ansible 기본 명령어 (0) | 2024.07.30 |
[Jenkins] IaC와 Ansible이란? (0) | 2024.07.20 |
[부록] SSH, Docker가 설치된 도커 이미지 구성 (0) | 2024.07.17 |
[Jenkins] Jenkins를 이용한 CI/CD 자동화 사용 (0) | 2024.07.17 |