Devops/Ansible

DB 서비스가 실행 중인지 확인하는 Ansible 코드

BabyTT 2023. 3. 17. 20:30

DB 엔진을 설치할 때 이미 DB가 실행되고 있는 경우가 있다. 가끔 IP기반으로 설치하다보니 서비스를 중복으로 설치하는 분들이 있어서 방어 코드를 추가 하였다.
 
defaults/main.yml

db_port_check:
  - 1433
  - 3306
  - 27017
  .
  .
  .

 
tasks/port_check.yml

- name: netstat
  shell: | 
    /bin/netstat -tln | grep ":{{ item }} " | sed -e 's/.*\///'
  register: netstat_result
  with_items:
    - "{{ db_port_check }}"
    
- name: result
  set_fact:
    process_result: "{{ netstat_result.results | map(attribute='stdout') | join('') }}"

- name: failure
  fail:
    msg: "Database is running on {{ ansible_hostname }}."
  when: process_result != ''

 
포트만 변경하면 Application 이 실행되고 있는 상태에서 추가 작업을 막기 위해 사용이 가능하다.
작업 중 이미 실행되고 있는 것이 있는지 포트 기반으로 확인한 후 작업이 진행되지 않게 활용할 수 있다.