ansible 설치 및 환경 설정

2023. 1. 8. 18:26·Ansible

서버 관리를 좀 더 편하게 해 보려고 ansible 구성 

  • 컨트롤러 서버: Ubuntu 20.04.5 LTS / Python 3.8.10

 

 

Ansible?

다수의 서버를 효율적으로 관리 할 수 있게 해주는 자동화 도구

  • 구조
    • 서버 / 클라이언트 구조 (ansible 명령을 날리는 컨트롤러 서버에만 ansible 설치하면 됨)
    • Agentless 방식
    • SSH를 통한 통신으로 SSH 접속만 가능하뎐 제어 가능
  • 구성 요소
    • 인벤토리
      • ansible에 의해 제어되는 대상이 정의 된 파일 (hosts.ini)
    • 플레이북
      • 인벤토리에 정의한 대상에서 무엇을 수행할지 정의하는 역할 (yaml 포맷)
    • 모듈
      • 플레이북에서 작업이 어떻게 수행될 지 나타내는 요소로 다양한 모듈을 지원.
  • 특징
    • 멱등성(idempotence)
      • 작업을 여러번 수행해도 같은 결과값이 나오는 성질
      • 동일한 작업을 여러번 적용하더라도 변경이 필요한 부분만 수정하여, 항상 결과값은 동일하게 나옴.
  • 설치 요구 사항
    • Python 2.6 또는 3.5 이상 설치가 필요 (Python 으로 개발 된 서버라 필수)

 

 

ansible 설치 검색을 하다 보면 pip, pip3로 설치하거나 apt로 설치하는 경우가 있음

  • pip, pip3
    • 파이썬 패키지의 저장소인 PyPl(Python Package index)에서 패키지 내용을 가져옴
    • pip는 Python2에서 사용하고, pip3는 Python3에서 사용함.
    • 다양한 버전에 대한 설치가 가능
    • apt 에 비해 다양한 모듈 설치가 가능.
  • apt
    • Canonical 에서 관리하는 Ubuntu 레포지토리에서 패키지 내용을 가져옴
    • 일반적을 가장 최신 버전에 대한 설치 제공

 

 

Ansible 설치

개발용도가 아닌 서버 관리용이라 apt 로 구성 진행

# apt install ansible# ansible --version

정상 동작 확인

# ansible -m ping localhost

 

 

패스워드 없이 접근(SSH키) 설정도 가능하나, ansible 전용 일반 계정(sudo 권한)을 사용하여 패스워드 인증 방식으로 구성.

  • 구성 파일 위치: /etc/ansible/ansible.cfg
  • ansible 전용 계정으로 실행 시 해당 계정 홈디렉토리에 있는 .ansible.cfg를 참고하고, 없을 경우 기본 구성 파일 참고

 

 

Ansible 환경 설정

ansible.cfg 는 크게 2개의 섹션이 있음

  • [defaults] - ansible 작업의 기본 환경설정
    • inventory =
      • 사용할 인벤토리 파일 위치
    • remote_user =
      • 클라이언트 연결 시 사용할 계정을 표기. (별도로 등록하지 않으면 ansible 실행하는 계정이 사용 됨)
      • 여기에 설정 된 계정에 대해 [privilege_escalation] 설정을 적용.
    • ask_pass =
      • 클라이언트 접속 시 패스워드 입력 표시 (기본값 - false)
      • 패스워드 입력이 필요한 경우 true 로 변경. 

 

  • [privilege_escalation] - 컨트롤러 서버에서 ansible 권한 에스컬레이션 방법 정의
    • become =
      • remote_user를 통해 접속한 사용자에게 sudo 또는 su를 사용하여 상위 계정으로 전환 여부 확인  (기본값 - false)
      • sudo 또는 su 권한을 부여하려면 true 로 표기
    • become_method = 
      • 상위 유저로 전환하는 방식 정의 (기본값 - sudo)
    • become_user = 
      • 상위 유저로 전환 시 어떤 계정을 사용할건지 정의 (기본값 - root)
    • become_ask_pass = 
      • become_method 사용 시 패스워드 입력 표시 (기본값 - false)
      • 패스워드 입력이 필요한 경우 true로 변경.
      • [defaults] 에서 정의한 remote_user 가 접속하고자 하는 클라이언트에 대해 sudo 권한이 있는 경우 false를 사용해도 됨.

 

 

초기 실행 시 오류

"msg": "to use the 'ssh' connection type with passwords, you must install the sshpass program"

  • 패스워드 기반 ansible 사용 시 컨트롤러 서버에 sshpass 설치가 필요함 
  • # apt install sshpass
  • sshpass - ssh를 통해 다른 서버에 연결하고 명령어를 실행 할 수 있는 기능.

 

"msg": "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshp ass does not support this.  Please add this host's fingerprint to your known_hosts file to manage this host."

  • .ansible.cfg 파일 [defaults] 에 ssh host checking 을 하지 않도록 설정
  • 설정 값 - host_key_checking = False

 

 

/home/ansibleuser/.ansible.cfg 설정 값

/home/ansibleuser/inventory 파일은 아래와 같이 작성하면 됨.

-------------------------------------

[servers]

서버명

서버명

...

서버명

-------------------------------------

 

 

테스트

$ ansible all -m ping 

저작자표시 비영리 변경금지 (새창열림)
'Ansible' 카테고리의 다른 글
  • [playbook] 사용자 추가/제거
  • WinRM 구성 및 Ansible 테스트
  • playbook을 사용하여 apt update && apt upgrade
  • playbook을 사용하여 파일 복사
기억보다는 기록을...
기억보다는 기록을...
내가 보려고 정리하는 글..
  • 기억보다는 기록을...
    메모장
    기억보다는 기록을...
    • 분류 전체보기
      • 클라우드(Azure, AWS, Alibaba)
      • 모니터링(Zabbix,Grafana)
      • 가상화(VMWare, Hyper-V)
      • Docker
      • Ansible
      • Linux
      • Windows
      • 이것저것
      • SQL
      • -------------------------
      • 재테크
  • 전체
    오늘
    어제
  • hELLO· Designed By정상우.v4.10.2
기억보다는 기록을...
ansible 설치 및 환경 설정
상단으로

티스토리툴바