[Jenkins] Ansible 기본 명령어

2024. 7. 30. 14:28·Infra/Jenkins

이전 글

우리는 이전 포스트에서 Ansible를 리눅스 서버에 설치해보았고 정상 동작함을 확인했다.

Ansible에서 /etc/ansible/hosts 경로에 여러 호스트를 등록할 수 있었고,

해당 호스트들에게 아직은 설명이 없지만 -m 옵션과 함께 ping 확인 진행했다.

 

이번 포스팅에선 Ansible의 기본 명령어에 관해 알아본다.

 

Ansible의 기본 명령어 

  • 실행 옵션
    • -i (--inventory-file) -> 적용 될 호스트들에 관한 파일 정보
    • -m (--module-name) -> 모듈 선택
    • -k (--ask-pass) -> 관리자 암호 요청
    • -K (--ask-become-pass) -> 관리자 권한 상승
    • --list-hosts -> 적용되는 호스트 목록

-i 옵션은 /etc/ansible/hosts의 경로에 있는 파일을 참고하는 것이 아닌 호스트들의 정보가 등록된 파일을 직접 등록할 때 사용된다. 

-m 옵션은 모듈을 선택할 때 사용하는 것으로, Ansible 사이트에 접속하게 되면 5000개 이상의 모듈이 등록되어 있다.

(Ansible 모듈 확인)

-k 옵션은 비밀번호 등을 지정할 때 사용하는 것인데 우리는 앞선 포스팅에서 살펴본것처럼 비대칭키 암호화 방식을 사용하기 때문에 사용하지 않는다.

 

설명에 앞서 Ansible은 멱등성의 성질을 갖는 특징이 있다.

이것을 간단하게 알아보자.

 

 

멱등성

 

멱등성은 같은 설정을 여러 번 적용하여도 결과가 달라지지 않는 성질을 말한다.

즉, Ansible에서 같은 명령어를 사용하면 여러 번 적용되어도 한번만 적용이 된다는 것이다.

  • COPY를 여러번 하든, 텍스트를 여러번 복사하든 똑같이 적용된다는 것이다.
  • 예시) POST는 멱등성 X, GET은 멱등성 O
    • https://hdbstn3055.tistory.com/69
 

[HTTP] GET, POST, PUT, PATCH에 대해 알아보자

우선, HTTP Method는 REST API와 아주 관련이 깊다. 간단하게 REST API는 HTTP URI로 리소스를 명시하고 HTTP Method를 이용해 해당 리소스에 관한 CRUD 오퍼레이션을 적용하여 클라이언트/서버 사이의 요청과

hdbstn3055.tistory.com

 

 

만약, foo라는 파일이 있고 거기에 아래 명령어를 여러번 반복해보자.

echo "HI" >> foo
echo "HI" >> foo

 

 

그리고 cat 명령어로 확인을 해보면 아래 사진처럼 나오게 된다.

 

즉, 멱등하지 않다라고 생각할 수 있다.

 

 

그렇다면 위와 비슷한 작업을 Ansible로 하게 되면 어떻게 될까?

 

 

foo_dir이라는 디렉토리를 생성한 뒤 Ansible 명령어를 활용하여 해당 경로로 foo 파일을 복사했다.

 

 

그 후, 동일한 작업을 했을 때 복사가 또 이루어지지 않았다. 즉, 멱등하다고 할 수 있다.

 

이처럼, Ansible은 멱등성을 갖기에 혹시 모를 개발자의 실수를 조금이나마 방지할 수 있다.

동시에 불필요한 실행을 하지 않을 수 있다.

 


 

Ansible이 제공하는 여러 모듈의 사용

ping

 

yum

 

shell

 

위의 모듈뿐 아니라 Ansible은 AWS와 호환되는 모듈들 굉장히 많은 모듈을 갖고 있다고 한다.

더욱 모듈에 관해 궁금하다면 위에 첨부한 링크에 접속해보도록 하자.

 

 


 

Ansible이 제공하는 작업 결과 종류

Ansible은 아래와 같은 작업 결과를 내놓는다.

 

  • ok: 작업이 성공적으로 완료되었습니다.
  • changed: 작업이 성공적으로 완료되었고, 시스템의 상태가 변경되었습니다.
  • failed: 작업이 실패했습니다.
  • skipped: 작업이 건너뛰어졌습니다.
  • unreachable: 호스트에 도달할 수 없습니다.

 

unreachable에서 말하는 호스트는 말 그대로 Ansible이 관리하는 호스트들을 말한다.

 


정리

 

이번 포스팅으로 아주 간단한 Ansible 제공 모듈에 관해 알아보았다.

Ansible은 IaC로써 이보다 모듈을 적절히 활용하면 훨씬 많은 작업들이 가능하다.

 

우리는 위에서 Ansbile에서의 모듈 사용에 관해 -m 옵션을 통해 직접 스크립트로 작성을 해주었다.

하지만, 실제로는 Ansible에서 제공하는 playbook를 훨씬 더 많이 사용한다.

그와 관련해서는 다음 포스팅에서 다룬다.

 

 

 

 

참고

이도원 강사님의 Jenkins 강의

  

저작자표시 비영리 변경금지 (새창열림)

'Infra > Jenkins' 카테고리의 다른 글

[Jenkins] Jenkins + Ansible 연동하기  (0) 2024.07.31
[Jenkins] Ansible Playbook 사용  (0) 2024.07.30
[Jenkins] Docker 컨테이너로 Ansible 실행하기  (0) 2024.07.21
[Jenkins] IaC와 Ansible이란?  (0) 2024.07.20
[부록] SSH, Docker가 설치된 도커 이미지 구성  (0) 2024.07.17
'Infra/Jenkins' 카테고리의 다른 글
  • [Jenkins] Jenkins + Ansible 연동하기
  • [Jenkins] Ansible Playbook 사용
  • [Jenkins] Docker 컨테이너로 Ansible 실행하기
  • [Jenkins] IaC와 Ansible이란?
진꿈청
진꿈청
기록하는 개발자가 되기를 희망하는 진꿈청입니다. 사소한 개발 일지도 기록하기 위해 노력하겠습니다
  • 진꿈청
    기록형 개발자 희망
    진꿈청
  • 전체
    오늘
    어제
    • 분류 전체보기 (379)
      • 개발 기록 (140)
      • Language (12)
        • Java (4)
        • Python (0)
        • Kotlin (8)
      • Spring (51)
        • JPA (9)
        • AOP (1)
        • Batch (1)
        • Cloud (4)
        • WebSocket (11)
        • 유용한 정보 (9)
        • 동시성 & Lock (7)
        • Test (7)
      • DevOps (3)
        • AWS (3)
      • Docker (7)
      • Git (1)
      • PS (53)
        • 프로그래머스 (16)
        • 백준 (36)
        • goorm (1)
      • 프로젝트 (39)
        • 토이 프로젝트 (9)
        • FitTrip (16)
        • StudyWithMe (14)
      • Ceph (3)
      • CS (10)
        • Network (6)
        • OS (4)
      • Design Pattern (8)
      • Infra (40)
        • Jenkins (13)
        • DevOps (7)
        • Kubernetes (10)
        • NGINX (4)
        • Flyway (1)
        • Kafka (1)
      • DB (7)
        • Redis (5)
        • MongoDB (1)
        • PostgreSQL (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    k8s
    java
    프로그래머스
    Spring JPA
    nginx
    디자인 패턴
    openfeign
    Spring Cloud Gateway
    @Transactional
    Kubernetes
    springboot
    ansible
    Design Pattern
    ApplicationEventPublisher
    docker
    Redis
    Github Actions
    JPA
    websocket
    flyway
    백준
    AWS EC2
    kotlin
    김영한
    Spring
    spring rest docs
    Spring cloud
    fittrip
    Jenkins
    Kafka
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
진꿈청
[Jenkins] Ansible 기본 명령어
상단으로

티스토리툴바