Ansible 가이드: Ad-Hoc 명령
이 페이지에서
- 전제 조건
- 무엇을 할 것인가?\n
- 기본 임시 명령 사용
- 1. 기본 명령
- 2. 호스트 그룹 및 단일 호스트 필터링\n
- 3. SSH 암호 사용\n
- 4. 권한 에스컬레이션\n
- 1. 호스트에 파일 업로드\n
- 2. 호스트에서 파일 다운로드\n
- 3단계 - 저장소 업데이트 및 패키지 업그레이드
- 1. 패키지 설치
- 2. 패키지 제거
- 3. 자동 제거
- 1. 서비스 시작
- 2. 서비스 재시작
- 3. 서비스 중지
- 1. 사용 가능한 디스크\n
- 2. RAM 메모리 사용량
- 3. CPU 사용량
- 4. 열린 포트
- 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인 프로비저닝 서버를 가져옵니다.
우리는 무엇을 할 것입니까?
- 기본 임시 명령
- 파일 전송
- 업데이트 및 업그레이드
- 패키지 관리
- 서비스 관리
- 체크 시스템
기본 임시 명령 사용
먼저 서버 관리를 위한 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