티스토리 뷰

IaC/Ansible

[Ansible] Ad-hoc 명령 사용하기

나미의 로그포스 2023. 3. 19. 22:18

구성을 완료한 각 node들에 대해 명령어를 이용해 작업을 수행해보겠습니다.

 

1. Ad-hoc : Ansible 명령을 이용해 단일 작업 수행

 

/etc/hosts에 노드 등록 → 명령 전달을 위한 ssh 설정(key 생성) → /etc/hosts/ansible/hosts에 Inventory 설정

 

위 과정을 모두 마쳤다면 Ad-hoc 명령어를 통해 원하는 작업을 수행할 수 있습니다.

 

# ansible [hosts] [options] 구조 로, 옵션은 다음과 같습니다.

-i 인벤토리 파일 지정 (미지정 시 /etc/ansible/hosts)

-m 실행 모듈 호출

-a 뒤 인자값(명령 내용)

 

 

2. 모듈(module) 사용하기

 

2.1 shell module 사용

 

우선 shell 모듈을 사용해 linux 명령어를 쓰던 익숙한 방식으로 작업해보겠습니다. 

 

ansible [node] -m shell -a "명령어"

 

ansible all -m shell -a "useradd a"
# 모든 노드에 대해 유저 a 생성

ansible all -m shell -a "echo 'abc1'|passwd --stdin a"
# 모든 노드의 유저 a에 대한 패스워드를 abc1로 생성

ansible all -m shell -a "tail -1 /etc/passwd"
# 모든 노드의 /etc/shadow 파일 내용을 조회
# 유저 a 생성한 사실을 이동할 필요 없이 ansible이 설치된 controller server에서 한 번에 확인 가능

 

모든 노드에서 유저 a가 생성된 것을 확인

 

ansible all -m shell -a "userdel -r a"
# 모든 노드에 대해 유저 a 삭제

 

2.2 user module 사용

 

같은 과정을 이번에는 user module을 사용해 진행해보겠습니다.

 

ansible [node] -m user -a "명령어" 

 

ansible all -m user -a "name=a"
# 모든 노드에 대해 유저 a 생성

ansible all -m user -a "name=a update_password=always password={{'abc1'|password_hash('sha512')}}"
# 모든 노드에 대해 유저 a 생성
# 패스워드는 abc1로, sha512로 hash

ansible all -m user -a "name=a state=absent"
# 상태 코드(state)를 이용해 a 유저를 한 번에 삭제

 

 

2.3 file module 사용

 

파일 및 디렉토리에 관한 작업을 file 모듈을 통해 진행해보겠습니다.

 

ansible [node] -m file -a "명령어"

 

ansible web -m file -a "dest=/test mode 600"
# web 노드에 대해 /test의 권한을 600으로 변경

ansible web -m file -a "dest=/test owner=a group=a"
# web 노드에 대해 /test의 소유자를 유저 a로, 그룹도 a로 변경

ansibel web -m file -a "dest=/test state=absent"
# web 노드에 대해 /test를 삭제

 

*** state 파라미터

 

file default, 파일 소유자/그룹/모드를 변경하는 작업 수행
directory 디렉토리가 존재하지 않는 경우 생성
touch 파일 생성 (linux의 touch 명령과 유사)
hard 하드 링크 생성
link 심볼릭 링크 생성
absent 삭제(심볼릭 링크도 삭제)

 

 

이렇게 간단하고 자주 쓰이는 기본적인 모듈을 사용해 보았습니다.

 

이 외에도 ansible에는 아주 다양한 모듈이 있습니다.

적절한 모듈과 파라미터를 이용해 원하는 작업을 자유롭게 할 수 있도록 익히는 것이 ansible 공부의 전부입니다.

 

모듈들을 외울 필요는 전혀 없으며, 아래 Ansible Documentation을 참고하면 됩니다.

 

Introduction to ad hoc commands — Ansible Documentation

 

Introduction to ad hoc commands — Ansible Documentation

An Ansible ad hoc command uses the /usr/bin/ansible command-line tool to automate a single task on one or more managed nodes. ad hoc commands are quick and easy, but they are not reusable. So why learn about ad hoc commands? ad hoc commands demonstrate the

docs.ansible.com

 

 

다음 포스팅에서는 이 모듈들을 가지고 Ad-hoc 명령어를 playbook으로 작성해보도록 하겠습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함