0%

Ansible 설치하기

Ansible 설치방법에 대해서 간단히 설명합니다.


Ansible 사용 방법

앤서블은 파이썬으로 구현되었기 때문에 사용하기 위해서는 해당 환경에 파이썬이 셋팅되어 있어야 한다. 현재 회사에서는 테스트 서버의 OS로 centos7를 사용하기 때문에 이를 기준으로 앤서블 사용법을 설명할 예정이다. 또한 앤서블은 저번 글에서 설명한 것처럼 에이전트리스 방식으로 작동하기 때문에 관리자 노드(controller)에만 설치하면 된다.

TEST ENV
테스트 환경은 다음과 같다.

  • Server: 4대
  • CPU: 4 core
  • mem: 8GB
  • disk: 50GB
  • OS: Centos 7
  • imbedded: python2.7.5
  • hostname: controller, target1, target2, target3

Ansible 설치

먼저 앤서블을 설치해보자. CentOS의 경우 ansible이 OS 기본 패키지에 속한 경우도 있지만, 아닌 경우도 있다. 일단 아래의 코드를 입력해서 확인해보자.

1
yum install -y ansible

앤서블이 잘 설치된다면 OS 기본 패키지에 있다는 것이기에 바로 다음 글로 넘어가면 된다.
하지만 만약 아래와 같은 답변이 온다면 따로 rpm 파일들을 넣어준 후 설치해야 한다.

1
2
3
4
5
6
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
cm | 2.9 kB 00:00
centos | 2.8 kB 00:00
No package ansible available.
Error: Nothing to do

Ansible repository

앤서블은 EPEL(Extra Packages for Enterprise Linux)에 포함되어 있기에 이를 가져와서 사용해도 되지만 개인적으로 이 방법을 좋아하지 않는데, 그 이유로는 다음과 같다.

  • 쓰고 싶은 패키지는 일부인데 EPEL은 너무 많은 패키지를 가지고 있다.
    실제 테스트에서 사용하는 centos ISO 이미지에는 패키지가 대략 4000개 정도 들어있는데, EPEL은 기본적으로 10000개 정도의 패키지를 가져온다. 물론 네트워크가 오픈망이고 외부 레파지토리를 가져오는거라면 EPEL을 사용해도 괜찮겠지만, 폐쇄망인 경우에는 10000개가 넘는 패키지를 직접 가지고 다녀야 한다.

  • 의도치 않은 패키지 업데이트가 진행된다.
    yum은 기본적으로 EPEL에 현재 사용하는 패키지의 최신 버전이 들어있다면 자동으로 업데이트를 진행한다. 물론 yum에서 레파지토리를 무력화하여 업데이트를 하지 못하게 할 수도 있지만, 이를 잊어버린 경우 커널 단의 시스템들이 업데이트가 진행되면서 버전 문제로 고생할 수 있다. 실제 이 문제로 인해 패키지들의 버전이 맞지 않아 고생한 적이 있다.

또한 현재 일하고 있는 분야에서는 대부분 클러스터가 폐쇄망으로 구성되기에 개인적으로는 필요한 패키지 rpm들을 다운받은 후 tar로 묶어서 가지고 다니는 것을 더 선호한다.

그래서 결론적으로 나는 앤서블 설치에 필요한 rpm 파일들을 따로 다운로드 받아 tar로 묶어두었다. 만약 해당 파일이 필요하다면 깃허브에서 다운받을 수 있다. (해당 앤서블 버전은 2.9.2 이다)

centos에서 레파지토리를 잡는 방법은 다음과 같다.

  1. ansible rpm 파일들 다운로드
  2. repo 파일 생성하기
  3. yum repolist로 확인하기

위 과정을 코드로 나타내면 아래와 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# repo 폴더 생성
mkdir -p /var/www/html/ans

# ansible.tar 파일을 전송 후 압축 해제
tar xvf /var/www/html/ans/ansible.tar

# repo 작성하기
cat << EOT >> /etc/yum.repos.d/ans.repo
[ans]
name=ans
baseurl=file://var/www/html/ans
gpgcheck=0
enabled=1
EOT

# repo 확인
yum clean all
yum repolist

# ansible 설치
yum install ansible

Ansible 설치 완료 확인

문제 없이 설치되었다면 아래와 같이 입력해보자.

1
ansible --version

그럼 아래와 같이 설치된 앤서블 버전과 정보가 나올 것이다.

1
2
3
4
5
6
ansible 2.9.2
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Oct 30 2018, 23:45:53) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]

엔서블 설치가 완료되었다. 다음 글에서는 앤서블로 관리할 노드들을 셋팅하는 방법에 대해서 살펴보자