IaC/Ansible_앤서블

[Ansible] 자주 사용하는 간단한 모듈 활용

2023. 2. 13. 22:02
목차
  1. 모듈이란?
  2. 모듈의 특징
  3. 1. Shell 모듈
  4. 2. User 모듈
  5. 3. yum 모듈
  6. 4. Copy 모듈
  7. 5. service 모듈
  8. 6. File 모듈
  9. 인벤토리 별도 생성 및 활용

모듈이란?

CLI나 playbook 작업에서 사용할 수 있는 별도의 코드 단위이다.

하나의 작은 프로그램이라고 생각하면 된다.

 

모듈의 특징

  1. 멱등성을 보장해준다.
  2. 중복 실행될 여지가 차단된다.
  3. 가독성이 좋다.
  4. 배포전에 테스트가 가능하다.

이제 서버와 인벤토리가 준비되었다고 가정 하에 모듈 실습을 진행하겠다.
(본인은 EC2 2대 사용하여 진행하였다. 시작 전 꼭 ping으로 테스트 진행할 것.)

 

 

 

1. Shell 모듈

쉘을 이용한 작업에 사용되는 모듈이다.

-a로 쉘에서 동작시킬 명령어를 입력시킬 수 있다.

위 명령어를 입력하면 inventory에 지정한 [all] 모든 그룹에게 shell 모듈로 ls 명령어를 실행하게 된다.

 

본인은 inventory를 새로 작성하여 진행했기 때문에 inventory를 -i 옵션으로 지정해주었다.

 

마찬가지로 whoami 명령어를 동작시킨 모습.

 

2. User 모듈

지정한 서버에 user를 생성하는 모듈이다.

ansible all -m user -a 'name=a'

 

위 명령어를 입력하면 user 모듈을 사용하여 cwking 이라는 사용자 계정을 생성한다.

 

chanwooking 계정이 host 서버에 생성된 것을 확인할 수 있다.

 

 

ansible all -m user -a "name=a update_password=always password={{ 'P@ssw0rd' | password_hash('sha512') }}"

qq위 명령어는 user 모듈을 사용하여 패스워드를 변경하는 방법이다.

 

ansible all -m user -a "name=a state=absent"

state=absent를 입력하면 지정한 사용자를 제거할 수 있다.

 

3. yum 모듈

지정한 서버에 yum을 사용하여 패키지 설치 및 삭제하는 모듈이다.

ansible web -m yum -a "name=httpd state=latest"

 

yum 모듈을 사용하여 httpd 패키지를 설치하는 명령어이다.

 

 

 

다음과 같이 shell 모듈을 사용하여 rpm -qa로 패키지가 설치된 것을 확인할 수 있다.

 

4. Copy 모듈

파일을 원하는 서버에 복사하는 모듈이다.

ansible web -m copy -a "src=index.html dest=/var/www/html/index.html"

src는 복사할 원본 파일의 위치를 지정하고 dest는 파일이 복사될 경로를 지정한다.

 

5. service 모듈

데몬을 동작시키기 위한 systemctl 명령어를 사용하기 위한 모듈이다.

 

ansible web -m service -a "name=httpd state=started"

이후 shell 모듈을 사용하여 웹서비스를 위한 80번 포트를 inventory에 host에 소속된 서버들에게 열어준다.

(본인은 aws ec2로 실습을 진행하여 이미 열려있다..)

마지막으로 방화벽을 재시작해주면 host에 소속된 서버들의 웹 서비스가 정상적으로 동작하는 것을 확인할 수 있다.

 

6. File 모듈

파일에 대한 상세정보 설정, 확인 및 삭제가 가능하다.

ansible web -m file -a "name=/var/www/html/index.html state=absent"

 

인벤토리 별도 생성 및 활용

vi inven.list

[ai]
anm
ann[1:3]

[webi]
ann[1:2]

[dbi]
ann3

인벤토리를 원하는 경로에 원하는 이름으로 지정하여 생성할 수 있다.

ann[1:3]은 ann1, ann2, ann3를 묶어서 작성하는 방법이다.

 

위 예시처럼 모듈에서 인벤토리를 -i옵션으로 지정하여 사용할 수 있다.

 

'IaC > Ansible_앤서블' 카테고리의 다른 글

[Ansible] cfg 파일 설정(앤서블 명령 설정, 세팅)  (0) 2023.02.27
[Ansible] Inventory 작성방법  (0) 2023.02.24
[Ansible] When 조건문 트리구조 생성(includ_tasks)  (0) 2023.01.30
[Ansible] When 조건문  (0) 2023.01.25
[Ansible] 작업 제어 구현 - 오류처리  (0) 2023.01.19
  1. 모듈이란?
  2. 모듈의 특징
  3. 1. Shell 모듈
  4. 2. User 모듈
  5. 3. yum 모듈
  6. 4. Copy 모듈
  7. 5. service 모듈
  8. 6. File 모듈
  9. 인벤토리 별도 생성 및 활용
'IaC/Ansible_앤서블' 카테고리의 다른 글
  • [Ansible] cfg 파일 설정(앤서블 명령 설정, 세팅)
  • [Ansible] Inventory 작성방법
  • [Ansible] When 조건문 트리구조 생성(includ_tasks)
  • [Ansible] When 조건문
cwpack0730
cwpack0730
개발과 운영, 박찬우의 기술 블로그입니다.
cwpack0730
Woo DEV
cwpack0730
전체
오늘
어제
  • ALL (126)
    • DevOps (91)
      • Linux_리눅스 (23)
      • Windows_윈도우 (1)
      • Network_네트워크 (9)
      • virtualization_가상화 (6)
      • Cloud_클라우드 (22)
      • Monitoring_모니터링 (12)
      • Git & Github (6)
      • open source_오픈소스 (7)
      • 기타_장비 (3)
    • IaC (26)
      • Ansible_앤서블 (15)
      • Terraform_테라폼 (11)
    • CICD (3)
      • Jenkins_젠킨스 (3)
    • 개발 (2)
      • Node.js (0)
      • Python_파이썬 (2)
      • Unity_유니티 (0)
    • 오픈소스 (0)
      • Redmine_레드마인 (0)
    • 회고 (1)
    • 자격증 (0)
    • 취미 (0)
    • Docker_컨테이너 (2)
    • K8s_쿠버네티스 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

공지사항

인기 글

태그

  • 티스토리챌린지
  • Linux
  • nginx
  • EC2
  • ansible
  • Signed URL
  • Jenkins
  • 오블완
  • 가상화
  • 테라폼
  • AWS S3
  • grafana
  • RHCSA
  • vpn
  • prometheus
  • cloud
  • shell script
  • AWS
  • GIT
  • monitoring
  • cloudfront
  • Network
  • 프로메테우스
  • CloudFront Signed URL
  • Terraform
  • docker
  • RHCE
  • Saa
  • ansible 모듈
  • Github

최근 댓글

최근 글

hELLO · Designed By 정상우.
cwpack0730
[Ansible] 자주 사용하는 간단한 모듈 활용
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.