웹사이트 검색

Ansible 가이드: Ad-Hoc 명령


이 페이지에서

  1. 전제 조건
  2. 무엇을 할 것인가?\n
  3. 기본 임시 명령 사용
    1. 1. 기본 명령
    2. 2. 호스트 그룹 및 단일 호스트 필터링\n
    3. 3. SSH 암호 사용\n
    4. 4. 권한 에스컬레이션\n

    1. 1. 호스트에 파일 업로드\n
    2. 2. 호스트에서 파일 다운로드\n
    3. 3단계 - 저장소 업데이트 및 패키지 업그레이드

    1. 1. 패키지 설치
    2. 2. 패키지 제거
    3. 3. 자동 제거

    1. 1. 서비스 시작
    2. 2. 서비스 재시작
    3. 3. 서비스 중지

    1. 1. 사용 가능한 디스크\n
    2. 2. RAM 메모리 사용량
    3. 3. CPU 사용량
    4. 4. 열린 포트
    5. 5. 가동 시간

    Ad-Hoc 명령은 대상 호스트에서 하나의 작업을 수행하는 한 줄짜리 ansible 명령입니다. 인벤토리 파일 구성에 정의된 하나 또는 호스트 그룹에 대해 간단한 한 줄 작업을 실행할 수 있습니다. Ad-Hoc 명령에는 작업을 수행할 호스트 그룹과 실행할 Ansible 모듈의 두 가지 매개변수만 있습니다.

    Ad-Hoc 명령은 ansible 자체를 탐색하는 데 더 많은 이점을 제공합니다. 서버 재부팅, 서비스 관리, 라인 구성 편집, 하나의 호스트에만 파일 복사, 하나의 패키지만 설치와 같은 플레이북을 먼저 만들지 않고도 작업을 수행할 수 있습니다.

    이 자습서에서는 Ansible Ad-Hoc 명령의 기본 사용법을 보여줍니다. 저는 Ad-Hoc 명령을 사용하여 시스템 관리자로서 일상적으로 필요할 수 있는 간단한 작업을 수행할 것입니다.

    전제 조건

    이 가이드에서는 두 개의 Ubuntu 18.04 LTS 서버인 Bionic Beaver를 사용합니다. ansible 서버는 IP 주소가 10.5.5.20인 호스트 이름 ansible-node와 호스트 이름 제공 및 IP 주소가 10.5.5.21인 프로비저닝 서버를 가져옵니다.

    우리는 무엇을 할 것입니까?

    1. 기본 임시 명령
    2. 파일 전송
    3. 업데이트 및 업그레이드
    4. 패키지 관리
    5. 서비스 관리
    6. 체크 시스템

    기본 임시 명령 사용

    먼저 서버 관리를 위한 Ansible Ad-Hoc의 기본 사용법을 배웁니다. Ansible Ad-Hoc 기본 명령, ssh 암호 인증과 함께 Ad-Hoc 명령 사용, 권한 에스컬레이션 및 호스트 그룹에 대한 Ad-Hoc 명령 사용에 대해 알아봅니다.

    1. 기본 명령어

    인벤토리 파일의 모든 호스트에 대해 ping 모듈을 사용하는 ansible ad-hoc의 기본 명령입니다.

    ansible all -m ping

    • 인벤토리 파일의 모든 호스트에 대한 첫 번째 매개변수 all입니다.\n
    • ping 모듈을 실행하는 모듈에 대한 -m 옵션 내부의 두 번째 매개변수입니다.\n

    이제 아래와 같은 결과를 얻을 수 있습니다.

    프로비저닝 서버에 대한 Ad-Hoc 명령은 서버에서 변경 사항 없이 성공했으며 프로비저닝 서버 pong에서 ping 모듈의 결과를 얻습니다.

    2. 호스트 그룹 및 단일 호스트 필터링

    이제 인벤토리 파일에 이미 정의된 호스트 그룹에 대해 Ad-Hoc 명령을 사용할 수 있습니다. 사용자 지정 인벤토리 파일을 사용하거나 기본 인벤토리 파일 /etc/ansible/hosts를 사용할 수 있습니다.

    다음은 기본 인벤토리 구성 파일에 이미 정의된 hakase-testing이라는 호스트 그룹에 대해 ad-hoc 명령을 실행하는 예입니다.

    ansible hakase-testing -m setup -a "filter=ansible_distribution*"

    사용자 지정 인벤토리 파일을 사용하는 경우 인벤토리 파일 이름 다음에 -i 옵션을 추가합니다.

    ansible hakase-testing -i hosts -m setup -a "filter=ansible_distribution*"

    당신은 같은 결과를 얻을 것입니다.

    이제 인벤토리 구성에서 단일 호스트에 대해 실행하려는 경우 아래와 같은 호스트 이름을 사용할 수 있습니다.

    ansible provision -m setup -a "filter=ansible_distribution*"

    그리고 ad-hoc 명령은 프로비저닝 서버에서만 실행됩니다.

    3. SSH 비밀번호 사용

    이제 프롬프트된 ssh 암호 인증을 사용하여 Ad-Hoc 명령을 수행합니다. 그리고 이를 위해서는 ansible-node에 sshpass라는 추가 패키지를 설치해야 합니다.

    아래의 apt 명령을 사용하여 sshpass 패키지를 설치합니다.

    sudo apt install sshpass -y

    이제 ad-hoc 명령을 실행하고 끝에 --ask-pass 옵션을 추가하십시오.

    ansible hakase-testing -m ping --ask-pass

    그러면 서버의 SSH 비밀번호를 묻는 메시지가 표시됩니다.

    ssh 암호를 입력하면 ad-hoc 명령이 서버에 대해 실행됩니다.

    4. 권한 에스컬레이션

    ansible은 서버에 대한 권한 에스컬레이션 기능을 제공합니다. 루트가 아닌 사용자로 ad-hoc 명령을 실행하려는 경우 --become 옵션을 사용하여 루트 권한을 얻고 -K 옵션을 사용하여 암호를 프롬프트할 수 있습니다.

    권한 옵션 --become 및 -K를 사용하여 사용자 hakase로 임시 명령 fdisk -l을 실행하여 SUDO 암호를 묻습니다.

    ansible hakase-testing -m shell -a 'fdisk -l' -u hakase --become -K

    아래는 결과입니다.

    파일 전송

    이제 서버와의 파일 전송을 위해 Ad-Hoc 명령을 사용하려고 합니다. 복사 모듈을 사용하여 프로비저닝 서버로 파일을 전송하고 가져오기 모듈을 사용하여 서버에서 파일을 다운로드할 수 있습니다.

    1. 호스트에 파일 업로드

    이 예에서는 ad-hoc 명령을 실행하고 복사 모듈을 사용하여 사용자 hakase에 대한 sudoers 구성을 hakase-testing 그룹의 /etc/sudoers.d 디렉토리에 업로드하려고 했습니다.

    아래 임시 명령을 실행합니다.

    ansible hakase-testing -m copy -a 'src=/home/hakase/hakase-sudo.conf dest=/etc/sudoers.d/hakase owner=root mode=0644' -u hakase --become -K

    이제 hakase 사용자의 SUDO 비밀번호를 묻는 메시지가 표시됩니다. 비밀번호를 입력하면 아래와 같은 결과를 얻을 수 있습니다.

    파일이 대상 디렉터리에 업로드되었으며 변경된 결과가 true로 표시됩니다.

    2. 호스트에서 파일 다운로드

    이제 프로비저닝 서버에서 로컬 ansible-node 서버로 파일을 다운로드하기 위해 가져오기 모듈과 함께 임시 명령을 사용하려고 합니다.

    구성 파일 /etc/sudoers.d/hakase를 프로비저닝 서버에서 backup이라는 로컬 디렉터리로 다운로드합니다.

    ansible provision -m fetch -a 'src=/etc/sudoers.d/hakase dest=/home/hakase/backup/hakase-sudoers flat=yes'

    그러면 백업 디렉토리에 hakase-sudoers라는 파일이 생깁니다.

    3단계 - 리포지토리 업데이트 및 패키지 업그레이드

    Ubuntu 서버의 리포지토리를 업데이트하고 업그레이드하려면 apt 모듈과 함께 ad-hoc 명령을 사용할 수 있습니다.

    hakase-testing 그룹의 리포지토리를 업데이트합니다.

    ansible hakase-testing -m apt -a 'update_cache=yes' --become

    이제 리포지토리를 업데이트하고 upgrade=dist 옵션을 사용하여 모든 패키지를 최신 버전으로 업그레이드하십시오.

    ansible hakase-testing -m apt -a 'upgrade=dist update_cache=yes' --become

    모든 패키지가 업그레이드될 때까지 기다립니다.

    패키지 관리

    이는 자신만의 플레이북을 빌드하고 디버그하려고 할 때 매우 유용합니다. 때로는 시스템에 추가 패키지를 설치해야 하기 때문입니다. 따라서 이 임시 명령을 사용하면 각 서버에 로그인하지 않고도 해당 패키지를 쉽게 설치할 수 있습니다.

    1. 패키지 설치

    아래와 같이 apt 모듈과 함께 ad-hoc 명령을 사용하여 단일 패키지를 설치합니다.

    ansible hakase-testing -m apt -a 'name=nginx state=latest' --become

    2. 패키지 제거

    패키지를 제거하고 패키지와 관련된 모든 구성을 제거합니다.

    ansible hakase-testing -m apt -a 'name=nginx state=absent purge=yes' --become

    3. 자동 제거

    아래 예는 nginx 패키지를 제거하고 관련된 모든 구성을 제거한 다음 시스템에서 사용하지 않는 모든 패키지를 제거합니다.

    ansible hakase-testing -m apt -a 'name=nginx state=absent purge=yes autoremove=yes' --become

    서비스 관리

    이 단계에서는 프로비저닝 서버에서 시스템 서비스를 관리하기 위해 ad-hoc 명령에서 서비스 모듈을 사용하려고 했습니다.

    1. 서비스 시작

    nginx 서비스를 시작하고 부팅 시간에 추가하십시오.

    ansible hakase-testing -m service -a 'name=nginx state=started enabled=yes' --become

    true로 변경되고 활성화된 결과를 얻게 됩니다.

    2. 서비스 재시작

    서비스를 다시 시작하려면 다음 명령을 사용할 수 있습니다.

    ansible hakase-testing -m service -a 'name=nginx state=restarted' --become

    nginx 서비스가 다시 시작되었습니다.

    3. 서비스 중지

    서비스를 중지하려면 상태 값을 중지됨으로 변경합니다.

    ansible hakase-testing -m service -a 'name=nginx state=stopped' --become

    hakase-testing 서버의 nginx 서비스가 중지되었습니다.

    시스템 확인

    이제 ad-hoc 명령 내에서 쉘 모듈을 사용하려고 했습니다. 그리고 Ansible ad-hoc을 통해 간단한 Linux 명령을 사용하여 간단한 시스템 모니터링을 수행합니다.

    먼저 아래 ad-hoc 명령을 사용하여 모든 서버에 sysstat 패키지를 설치합니다.

    ansible hakase-testing -m apt -a 'name=sysstat state=latest' --become

    sysstat 패키지 설치를 기다립니다.

    완료되면 모든 서버를 확인할 준비가 된 것입니다.

    1. 사용 가능한 디스크

    fdisk 명령을 사용하여 루트 파티션에서 사용 가능한 디스크를 확인합니다.

    ansible hakase-testing -m shell -a 'df -h /dev/sda2' --become

    자신의 경로로 /dev/sda2를 변경합니다.

    2. RAM 메모리 사용량

    이제 free -m 명령을 사용하여 모든 서버에서 RAM 메모리 사용량을 확인하십시오.

    ansible hakase-testing -m shell -a 'free -m' --become

    그러면 아래와 같이 결과가 표시됩니다.

    3. CPU 사용량

    mpstat 명령을 사용하여 모든 서버의 CPU 사용량을 확인합니다.

    ansible hakase-testing -m shell -a 'mpstat -P ALL' --become

    mpstat 명령은 sysstat 패키지의 일부입니다.

    4. 포트 열기

    ad-hoc 명령을 통해 netstat를 사용하여 모든 시스템에서 열린 포트를 확인합니다.

    ansible hakase-testing -m shell -a 'netstat -plntu' --become

    5. 가동 시간

    이제 각 서버의 가동 시간을 확인하십시오.

    ansible hakase-testing -m shell -a 'uptime' --become