2017년 6월 8일 목요일

[Ansible] RHEL 7.2에 앤서블 컨트롤 머신 설치하기 (1)

이 글은 정말 처음부터..아무것도 구성되어 있지 않은 레드햇 7버전부터 앤서블 컨트롤 머신을 설치하고 셸 명령어를 보내는 것 까지 구현합니다.
따라서 너무 쉽더라도 이해해 주세요~!
그리고 RHEL은 Red Hat Enterprise Linux를 뜻하는 말입니다.

0. 가상화 환경

당연하겠지만 Ansible을 테스트하려면 명령을 던지는 가상머신 이외에 한대이상의 가상머신이 더 있어야 한다. 그래야 명령을 받으면 수행을 해줄테니....
버추얼박스의 디폴트 설정에서는...NAT로 구성되어 있어서 서로 통신을....부득이하게 못한다...
따라서 이 부분을 'NAT 네트워크'로 구성해 주어야 하는데..신기하게 이거 구성하는 것에 대해서 설명 되어 있는 블로그가 없다..못 찾는거 일수도...NAT 및 네트워크는 아래의 블로그를 참조
(김재벌의 IT 이야기 : 버추얼박스 네트워크 구성 설명)

아래와 같이 환경설정에서 NAT 네트워크에 대한 설정을 해주고 해당 이름을 지정해야만 NAT에 대한 DHCP및 통신이 가능하다. VMware만 쓰시던 분은 굳이..라고 생각하실 수도 있는데...일단 머...어떻게 보면 장단점이 있는 구성이라..




가상머신 두개 모두에서 바꿔주어야 한다!!

그리고 네트워크 얘기가 나와서인데, RHEL의 구성은 yum 구성등 copy 앤 paste가 많은데, 이를 위해서 우분투에서 하던것처럼 '가성머신 확장 CD 이미지 삽입' 하는 것보다는 호스트 네트워크를 설정하고 원격지에서 작업하는게 편하다.


왜냐하면 RHEL(또는 센트)의 경우 게스트 확장 CD 이미지로 설치해도 copy 앤 paste가 되지 않고 공유 폴더 수준만 되기 때문이다.

1. RHEL에 yum repository 구성  

우선 RHEL 7.x를 구했다면 외부 패키지를 설치하도록 구현해야 하는데..당연히 개인은 서브스크립션이 있을리 없고..따라서 돌아서 등록 시켜야 한다. 즉 카피본 Cent linux에 있는 repository를 이용한다.

1_1. cent.repo 생성

[root@Ansible ~]# vi /etc/yum.repos.d/cent.repo

를 입력하고 다음의 내용을 기입한다. 

# cd /etc/yum.repos.d
# cp rhel-debuginfo.repo rhel-debuginfo.repo.bak
# vim rhel-debuginfo.repo

[base]
name=CentOS-$releasever - Base
baseurl=http://mirror.centos.org/centos/7/os/$basearch/
gpgcheck=1

#released updates
[update]
name=CentOS-$releasever - Updates
baseurl=http://mirror.centos.org/centos/7/updates/$basearch/
gpgcheck=1

1_2. 인증키

repository를 사용하려면 인증 key가 필요한데 이를 임포트 시킨다.

[root@Ansible ~]# rpm --import http://mirror.centos.org/centos/7/os/x86_64/RPM-GPG-KEY-CentOS-7

1_3. repository 업데이트

[root@Ansible ~]# yum repolist
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
base                                         | 3.6 kB  00:00:00                                                | 3.4 kB  00:00:00   1/3): base/x86_64/group_gz                   | 155 kB  00:00:01     
(2/3): base/x86_64/primary_db                | 5.6 MB  00:00:05     
(3/3): update/x86_64/primary_db              | 5.6 MB  00:00:06     
repo id                 repo name                          status
base/x86_64        CentOS-7Server - Base                   9,363
update/x86_64      CentOS-7Server - Updates                1,851
repolist: 11,214

1_4. EPEL(Extra Packages for Enterprise Linux) 설치

추후에 pip와 git을 설치해야 하는데 기본 repo에 git이 있으나 pip는 없다. 따라서 또 사용 목적에 따라 추가 패키지가 필요한 경우가 있으니 이번 기회에 그냥 설치하자. 

[root@Ansible ~]# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Retrieving https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
warning: /var/tmp/rpm-tmp.o8oKCT: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:epel-release-7-9                 ################################# [100%]

[root@Ansible ~]# yum repolist
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
epel/x86_64/metalink                                 | 5.8 kB  00:00:00    
epel                                                 | 4.3 kB  00:00:00    
(1/3): epel/x86_64/group_gz                          | 170 kB  00:00:00    
(2/3): epel/x86_64/updateinfo                        | 809 kB  00:00:04    
(3/3): epel/x86_64/primary_db                        | 4.7 MB  00:00:06    
repo id                       repo name                              status
base/x86_64               CentOS-7Server - Base                      9,363
epel/x86_64      Extra Packages for Enterprise Linux 7 - x86_64      11,771
update/x86_64             CentOS-7Server - Updates                   1,851
repolist: 22,985


2. 컨트롤 머신 설치 

2_1. pip와 git 설치

의존성 있는 패키지까지 설치하면 총 70Mib 정도 된다. 
[root@Ansible ~]# yum install -y git python-pip

2_2. ansible 설치 

쉽게 yum install -y ansible 을 하면 된다. 역시 의존성 패키지까지 모두 설치한다. 
Brew도 있고 pip로도 가능하다고 하나.. pip의 경우 gcc패키지로 인해 오류가 나고 설치가 안된다..미리 설치해야 하는것들 중에 pip에서 관리하지 않는 것들에 대해서는 의존성 체크를 하기 어렵나 보다..(당연하겠지만..) 그래서 RHEL이라면 그냥 yum으로 통으로 하는게 제일 편할꺼 같다. 
그리고 기본 패키지에는 설치파일이 없으니 EPEL의 구성이 필수이다. 생각해 보면..pip를 안 쓸..껀데 위에서 왜 설치 했나 싶다...
차후에 python module 다운을 위해서 쓸꺼라고 위로하자..

[root@Ansible ~]# pip install ansible
Collecting ansible
  Downloading ansible-2.3.1.0.tar.gz (4.3MB)
<중략>
    gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/include/python2.7 -c build/temp.linux-x86_64-2.7/_openssl.c -o build/temp.linux-x86_64-2.7/build/temp.linux-x86_64-2.7/_openssl.o
    unable to execute gcc: No such file or directory
    error: command 'gcc' failed with exit status 1

[root@Ansible ~]# yum install ansible -y
<중략>
Install  1 Package (+15 Dependent packages)

Total download size: 9.3 M
Installed size: 42 M
......
[root@Ansible ~]# rpm -qa | grep ansible
ansible-2.3.0.0-3.el7.noarch

2_3. ansible 인벤토리 생성 

ansible(앤서블/ 나는 왜 자꾸 안시블로 읽힐까;;;) 이 관리하는 호스트들에 대한 매핑 주소를 저장해 두는 파일이다. 
여러가지의 방법이 있다고 많은 블로그에서 말을 하는데...애매하지만..우선 루트로 편하게 작업하고 추후에 유저로 한다면 유저 홈디렉토리에 만들고 앤서블 인벤토리를 export하는 방식으로 하는게 좋겠다. 

구성 : RHEL (명령 보내주는 애) <-> 우분투 (명령 받아주는 애)
          IP  10.0.2.15                       IP 10.0.2.4

[root@Ansible ansible]# echo "10.0.2.4" >> /etc/ansible/hosts



2_4. ansible 설정 파일 구성 

루트일 경우에는 할 필요가 없으나 유저일 경우에는 export해서 홈디렉터리에 만들어 주어야 한다. 

[root@Ansible ansible]# ansible --version 
ansible 2.3.0.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = Default w/o overrides
  python version = 2.7.5 (default, Oct 11 2015, 17:47:16) [GCC 4.8.3 20140911 (Red Hat 4.8.3-9)]




0 개의 댓글:

댓글 쓰기

 
Copyright © . 시스템/네트워크 자동화 전문가 블로그 - Posts · Comments
Theme Template by BTDesigner · Powered by Blogger