웹사이트 검색

Ubuntu 18.04 LTS에서 Ansible을 설치 및 구성하는 방법


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • Ubuntu 22.04(Jammy Jellyfish)
  • Ubuntu 18.04(Bionic Beaver)

이 페이지에서

  1. 요구 사항\n
  2. 시작하기\n
  3. Ansible 설치 및 구성
  4. 클라이언트 시스템용 SSH 키 구성
  5. Ansible 작업

Ansible은 소프트웨어 프로비저닝, 구성 관리 및 애플리케이션 배포를 자동화하는 데 사용할 수 있는 무료 오픈 소스 소프트웨어입니다. Puppet이나 Chef와 달리 Ansible을 사용하기 전에 클라이언트-서버 환경을 설정할 필요가 없습니다. 중앙 위치에서 여러 호스트를 관리할 수 있습니다. 이 도구는 복잡한 다중 계층 IT 애플리케이션 환경을 자동화하는 데 매우 간단하면서도 강력합니다. Ansible은 일반 SSH 채널을 통해 통신하여 원격 시스템에서 정보를 검색하고 작업을 수행합니다.

이 튜토리얼에서는 Ubuntu 18.04 서버에 Ansible을 설치하고 사용하는 방법을 배웁니다.

요구 사항

  • OpenSSH 서버가 설치된 두 개의 Ubuntu 18.04 서버 시스템.
  • 정적 IP 주소 192.168.0.101은 서버 시스템에 설정되고 192.168.0.104는 클라이언트 시스템에 설정됩니다.
  • Sudo 권한이 있는 루트가 아닌 사용자가 두 시스템 모두에 설정되어 있습니다.\n

시작하기

시작하기 전에 다음 명령을 사용하여 시스템을 최신 버전으로 업데이트하십시오.

sudo apt-get update -y
sudo apt-get upgrade -y

시스템이 최신 상태이면 시스템을 다시 시작하여 변경 사항을 적용하십시오.

Ansible 설치 및 구성

기본적으로 최신 버전의 Ansible은 Ubuntu 18.04 기본 리포지토리에서 사용할 수 없습니다. 따라서 서버에 Ansible PPA를 추가해야 합니다. 다음 명령을 실행하여 이를 수행할 수 있습니다.

sudo apt-add-repository ppa:ansible/ansible

그런 다음 리포지토리를 업데이트하고 다음 명령을 사용하여 Ansible을 설치합니다.

sudo apt-get update -y
sudo apt-get install ansible -y

설치가 완료되면 다음 명령어로 Ansible 버전을 확인할 수 있습니다.

sudo ansible --version

산출:

ansible 2.7.1
  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/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.15rc1 (default, Nov 12 2018, 14:31:15) [GCC 7.3.0]

다음으로 Ansible 호스트 파일에서 관리하려는 클라이언트 시스템을 정의해야 합니다. /etc/ansible/hosts 파일을 편집하여 이를 수행할 수 있습니다.

sudo nano /etc/ansible/hosts

다음 줄을 추가합니다.

[Client]
node1 ansible_ssh_host=192.168.0.104

완료되면 파일을 저장하고 닫습니다.

클라이언트 시스템용 SSH 키 구성

Ansible은 SSH를 사용하여 클라이언트 호스트와 통신합니다. 따라서 클라이언트 호스트에 대해 키 기반 ssh 인증을 구성해야 합니다.

먼저 다음 명령을 사용하여 SSH 키 쌍을 생성합니다.

ssh-keygen

산출:

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:bTVjTCKqxD8rnIw7/6mB6ZH9cnhzzOFg+/+x4clSOow 
The key's randomart image is:
+---[RSA 2048]----+
|        . . .    |
|   .   . . +     |
|    o .     *    |
|   . o   . o o   |
|    . o S o      |
|   O .oo..  .    |
|  * Bo.* + oo    |
| ..oo+=.E =o =   |
|  ooo*++...+*    |
+----[SHA256]-----+

그런 다음 다음 명령을 사용하여 이 공개 키를 클라이언트 시스템에 복사합니다.

ssh-copy-id -i ~/.ssh/id_rsa.pub 4

산출:

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh ''"
and check to make sure that only the key(s) you wanted were added.

앤서블 작업

이제 Ansible이 설치 및 구성되었습니다. 시간 테스트 Ansible.

Ansible 서버에서 다음 명령과 함께 Ansible을 사용하여 클라이언트 시스템에 ping을 시도합니다.

ansible -m ping Client

산출:

node1 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

Ansible 호스트 파일에 여러 클라이언트가 구성되어 있는 경우. 그런 다음 다음 명령을 사용하여 모든 클라이언트 시스템을 ping할 수 있습니다.

ansible -m ping all

다음 명령을 사용하여 클라이언트 시스템에서 Apache 웹 서버의 상태를 확인할 수 있습니다.

ansible -m shell -a 'service apache2 status' Client

산출:

node1 | CHANGED | rc=0 >>
 * apache2 is running

클라이언트 시스템의 파티션 크기를 확인하려면 다음 명령을 실행하십시오.

ansible -m shell -a 'df -h' Client

산출:

node1 | CHANGED | rc=0 >>
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       138G   48G   83G  37% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            1.9G  4.0K  1.9G   1% /dev
tmpfs           384M  1.2M  383M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            1.9G   67M  1.9G   4% /run/shm
none            100M   36K  100M   1% /run/user
/dev/sda5       225G   35G  180G  16% /Data

축하합니다! Ubuntu 18.04 서버에 Ansible을 성공적으로 설치하고 구성했습니다. 이제 Ansible을 사용하여 간단한 작업을 원격으로 쉽게 실행할 수 있습니다.