웹사이트 검색

패브릭 - Linux에서 SSH를 통해 원격으로 셸 명령 실행


끊임없이 변화하는 소프트웨어 개발 세계에서는 효율적인 원격 서버 관리가 중요합니다. 시스템 관리자, 소프트웨어 엔지니어, 소프트웨어 개발자 모두 원격 서버에서 Linux 명령을 실행할 수 있는 것은 일반적인 작업입니다.

SSH를 통해 원격으로 Linux 명령을 실행하도록 설계된 고급 Python 라이브러리인 Fabric은 원격 시스템을 관리해야 하는 모든 사람에게 필수적인 도구입니다. Python의 강력한 기능을 활용합니다.

패브릭이란 무엇입니까?

Fabric은 SSH 연결을 통해 원격 서버에서 셸 명령을 실행하는 프로세스를 단순화하는 다목적 Python 라이브러리입니다. 처음에는 Jeff Forcier가 개발했으며 나중에 오픈 소스 프로젝트가 되었습니다.

원격 시스템 작업을 위한 높은 수준의 Python 인터페이스를 제공하므로 작업을 자동화하고, 코드를 배포하고, 여러 서버에서 구성을 쉽게 관리할 수 있습니다.

왜 패브릭을 사용하나요?

원격 명령 실행 요구 사항에 따라 Fabric을 선택해야 하는 몇 가지 설득력 있는 이유가 있습니다.

  • Pythonic 접근 방식 – Fabric은 Python의 철학을 고수하므로 개발자와 시스템 관리자가 이미 익숙한 언어로 스크립트를 쉽게 작성할 수 있습니다.
  • SSH 및 Paramiko – Fabric은 Paramiko 라이브러리를 사용하여 원격으로 명령을 실행할 수 있는 안전하고 안정적인 방법을 제공하는 SSH 연결을 처리합니다.
  • 작업 기반 워크플로 – Fabric은 원격 명령 실행에 대한 작업 중심 접근 방식을 권장합니다. 기본적으로 Python 함수인 작업을 정의하면 Fabric이 원격 서버에서 해당 작업을 실행합니다.
  • 사용 사례 – Fabric은 애플리케이션 배포, 서버 구성 관리, 시스템 유지 관리 작업 실행 등 다양한 사용 사례에 적합한 다용도 도구입니다.

이 가이드에서는 Fabric을 사용하여 서버 그룹에 대한 서버 관리를 향상시키는 방법을 소개하고 시작하는 단계를 설명합니다.

Linux에서 패브릭 자동화 도구를 설치하는 방법

패브릭의 중요한 특징은 관리해야 하는 원격 시스템에 표준 OpenSSH 서버만 설치하면 된다는 것입니다.

시작하기 전에 원격 서버를 관리하는 서버에 특정 요구 사항만 설치하면 됩니다.

요구사항:

  • 개발 헤더가 포함된 Python 2.5+
  • Python-setuptools 및 pip(선택 사항이지만 권장됨) gcc

Fabric은 pip 패키지 관리자를 사용하여 쉽게 설치되지만 기본 패키지 관리자 yum, dnf 또는 apt/apt-get을 선택하여 fabric 패키지를 설치하는 것이 더 나을 수도 있습니다. , 일반적으로 fabric 또는 python-fabric이라고 합니다.

RHEL 시스템에 패브릭 설치

CentOS Stream, Rocky LinuxAlmaLinux와 같은 RHEL 기반 배포판에서는 시스템에 EPEL 저장소를 설치하고 활성화해야 합니다. fabric 패키지를 설치합니다.

sudo dnf install epel-release
sudo dnf install fabric

Debian 시스템에 Fabric 설치

UbuntuLinux Mint와 같은 Debian 기반 배포판에서 사용자는 간단히 apt를 실행하여 fabric 패키지를 다음과 같이 설치할 수 있습니다. 표시됨:

sudo apt install fabric

PiP를 사용하여 패브릭 설치

시스템 저장소에서 fabric을 사용할 수 없는 경우 pip를 사용하여 표시된 대로 설치할 수 있습니다.

sudo yum install python3-pip       [On RedHat based systems] 
sudo dnf install python3-pip       [On Fedora 22+ versions]
sudo apt install python3-pip       [On Debian based systems]

pip가 성공적으로 설치되면 pip를 사용하여 다음과 같이 fabric의 최신 버전을 가져올 수 있습니다.

pip3 install fabric

Fabric을 사용하여 Linux 관리 작업을 자동화하는 방법

Fabric 사용 방법을 시작해 보겠습니다. 설치 프로세스의 일부로 'fab'라는 Python 스크립트가 시스템 PATH의 디렉터리에 추가되었습니다. 'fab' 스크립트는 Fabric을 사용할 때 모든 작업을 처리합니다.

로컬에서 Linux 명령 실행

관례적으로 선호하는 텍스트 편집기를 사용하여 fabfile.py라는 Python 파일을 생성하는 것부터 시작해야 합니다. 이 파일에 원하는 대로 다른 이름을 지정할 수 있지만 다음과 같이 파일 경로를 지정해야 합니다.

fab --fabfile /path/to/the/file.py

Fabric'fabfile.py'를 사용하여 작업을 실행합니다. 'fabfile'을 실행하는 동일한 디렉터리에 있어야 합니다. 직물 도구.

예 1: 먼저 기본 Hello World를 만들어 보겠습니다.

vi fabfile.py

다음 코드 줄을 파일에 추가합니다.

def hello():
       print('Hello world, Tecmint community')

파일을 저장하고 아래 명령을 실행하세요.

fab hello

이제 로컬 시스템에서 uptime 명령을 실행하는 fabfile.py의 예를 살펴보겠습니다.

예 2: 다음과 같이 새 fabfile.py 파일을 엽니다.

vi fabfile.py

그리고 파일에 다음 코드 줄을 붙여넣습니다.

#!  /usr/bin/env python
from fabric.api import local
def uptime():
  local('uptime')

그런 다음 파일을 저장하고 다음 명령을 실행합니다.

fab uptime

SSH를 통해 원격으로 Linux 명령 실행

Fabric API는 Python에서 env로 알려진 연관 배열에 해당하는 구성 사전을 사용합니다. 이 사전은 Fabric이 수행하는 작업을 제어하는 값을 저장합니다.

env.hostsFabric 작업을 실행하려는 서버 목록입니다. 네트워크가 192.168.0.0이고 fabfile을 사용하여 호스트 192.168.0.2192.168.0.6을 관리하려는 경우 , 다음과 같이 env.hosts를 구성할 수 있습니다.

#!/usr/bin/env python
from  fabric.api import env
env.hosts = [ '192.168.0.2', '192.168.0.6' ]

위의 코드 줄은 Fabric 작업을 실행할 호스트만 지정하고 그 이상은 수행하지 않습니다. 따라서 일부 작업을 정의할 수 있으며 Fabric은 원격 시스템과 상호 작용하는 데 사용할 수 있는 기능 세트를 제공합니다.

많은 기능이 있지만 가장 일반적으로 사용되는 기능은 다음과 같습니다.

  • run – 원격 시스템에서 셸 명령을 실행합니다.
  • local – 로컬 컴퓨터에서 명령을 실행합니다.
  • sudo – 루트 권한으로 원격 시스템에서 셸 명령을 실행합니다.
  • 가져오기 – 원격 컴퓨터에서 하나 이상의 파일을 다운로드합니다.
  • Put – 하나 이상의 파일을 원격 시스템에 업로드합니다.

예 3: 여러 컴퓨터에서 메시지를 에코하려면 아래와 같은 fabfile.py를 만듭니다.

#!/usr/bin/env python
from fabric.api import env, run
env.hosts = ['192.168.0.2','192.168.0.6']
def echo():
      run("echo -n 'Hello, you are tuned to Tecmint ' ")

작업을 실행하려면 다음 명령을 실행합니다.

fab echo

예 4: 이전에 생성한 fabfile.py를 개선하여 로컬 시스템에서 uptime 명령을 실행하도록 할 수 있습니다. uptime 명령을 실행하고 다음과 같이 여러 시스템에서 df 명령을 사용하여 디스크 사용량도 확인합니다.

#!/usr/bin/env python
from fabric.api import env, run
env.hosts = ['192.168.0.2','192.168.0.6']
def uptime():
      run('uptime')
def disk_space():
     run('df -h')

파일을 저장하고 다음 명령을 실행합니다.

fab uptime
fab disk_space

원격 Linux 서버에 LAMP 스택 자동 설치

예 4: LAMP(Linux, Apache, MySQL/MariaDB 및 PHP) 서버를 배포하는 예를 살펴보겠습니다. 원격 Linux 서버.

루트 권한을 사용하여 LAMP를 원격으로 설치할 수 있는 함수를 작성하겠습니다.

RHEL/CentOS 및 Fedora의 경우
#!/usr/bin/env python
from fabric.api import env, run
env.hosts = ['192.168.0.2','192.168.0.6']
def deploy_lamp():
  run ("yum install -y httpd mariadb-server php php-mysql")
Debian/Ubuntu 및 Linux Mint용
#!/usr/bin/env python
from fabric.api import env, run
env.hosts = ['192.168.0.2','192.168.0.6']
def deploy_lamp():
  sudo("apt-get install -q apache2 mysql-server libapache2-mod-php php-mysql")

파일을 저장하고 다음 명령을 실행합니다.

fab deploy_lamp

참고: 출력이 크기 때문에 이 예에서는 스크린캐스트(애니메이션 gif)를 만들 수 없습니다.

이제 위에 제공된 Fabric과 해당 기능 및 예제를 사용하여 Linux 서버 관리 작업을 자동화할 수 있습니다.

패브릭 유용한 옵션

  • fab --help를 실행하면 유용한 정보와 사용 가능한 명령줄 옵션의 긴 목록을 볼 수 있습니다.
  • fabfile.py 외에 가져올 다른 Python 모듈 파일을 지정하는 데 도움이 되는 중요한 옵션 --fabfile=PATH.
  • 원격 호스트에 연결할 때 사용할 사용자 이름을 지정하려면 --user=USER 옵션을 사용하세요.
  • 인증 및/또는 sudo에 비밀번호를 사용하려면 --password=PASSWORD 옵션을 사용하세요.
  • NAME 명령에 대한 자세한 정보를 인쇄하려면 --display=NAME 옵션을 사용하세요.
  • 형식을 보려면 --list 옵션을 사용하고, 짧은, 일반, 중첩 중에서 선택하고 --list-format=FORMAT 옵션을 사용하세요.
  • 가능한 명령 목록을 인쇄하고 종료하려면 --list 옵션을 포함하세요.
  • --config=PATH 옵션을 사용하여 사용할 구성 파일의 위치를 지정할 수 있습니다.
  • 컬러 오류 출력을 표시하려면 --colorize-errors를 사용하세요.
  • 프로그램의 버전 번호를 보고 종료하려면 --version 옵션을 사용하세요.
요약

Fabric은 SSH를 통한 원격 명령 실행을 간소화하는 강력한 Python 라이브러리로, 사용자 친화적인 Python 접근 방식을 제공합니다. 복잡한 작업을 단순화하고 시스템 관리를 자동화하는 기능은 시스템 관리자, 개발자 및 DevOps 전문가에게 귀중한 도구입니다.

단일 서버를 관리하든 대규모 배포를 조율하든 관계없이 Fabric은 작업을 효율적이고 효과적으로 완료하는 데 도움이 될 수 있습니다.