ansible로 다양한 명령어를 통해 node들을 제어할 수 있습니다. 예를 들어 web이라는 node들에게 test.txt를 삭제하게 명령하려면 아래와 같습니다. ansible web -m shell -a "rm /home/test.txt" -b 여기서 -m 은 모듈을, -a 는 명령어를, -b는 root 권한을 의미합니다. 해석하자면 web이라는 node들에게 shell 명령어와 sudo권한으로 rm /home/test.txt를 수행하라는 의미입니다. 기본적으로 ansible의 node들, host들은 /etc/ansible/hosts 파일에 담겨져 있습니다. main PC와 node PC간 SSH 통신이 가능하면 위의 명령어를 수행할 수 있습니다. 다음은 이런식으로도 변형이 가능합니다. ansibl..
DevOps

준비물은 Grafana의 기본적인 설정과 시각화 할 수 있는 데이터 소스입니다. 현재 Grafana를 통해 Alert를 설정하고 있습니다.개인 프로젝트이기에 엄청 심화된 내용은 다루지 않으니 처음 하시는 분들이 참고하시기에 좋을 것 같습니다. 먼저 Grafana의 Alert 메뉴입니다.1. Alert rules - 임계값이나 여러 표현식을 사용하여 알람을 설정하는 메뉴입니다.2. Contact points - Alert message의 템플릿을 만들거나 Alert를 어떠한 플랫폼(gmail, slack 등)으로 전송할지 정하는 메뉴입니다.3. Notification policies - Label을 체계적으로 정리하여 그룹화 시켜 확인할 수 있는 메뉴입니다.4. Silences - 특정 시간에 Alert를..
먼저 준비물은 다음과 같습니다. ansible이 설치된 서버와 다른 pc와 연결된 상태여야 합니다. 연결이 됐는지 확인하려면 ansible hosts에 다른 pc IP를 입력한 후 ansible all -m ping 을 통해 연결이 됐는지 확인할 수 있습니다. 연결 방법에 대해서는 개개인의 설정이 다르기에 알맞은 정보를 찾아서 연결하셔야 됩니다. ping을 통해 연결이 된 것을 확인하면 다음과 같이 ansible playbook을 작성합니다. node-exporter.yml --- - hosts: exporter gather_facts: no tasks: - name: Create node-exproter dir # exporter가 설치 될 디렉토리를 만들어 줍니다. file: path: /home/d..

준비물은 Docker가 설치된 node pc가 필요하며, 해당 node pc와는 연결이 되어있는 상태여야 합니다. node pc에 Docker와 Docker-compose를 설치하는 방법은 아래와 같습니다. https://cleaning-toolbox.tistory.com/90 Ansible playbook으로 Docker를 설치시켜보자 준비물은 이렇습니다. Ansible의 hosts파일에 연결될 node pc의 IP를 작성하고, 해당 node pc를 ansible ping을 통해 연결이 된 후에 아래의 playbook을 실행시킬 수 있습니다. 위의 준비물은 다른 게시글에도 cleaning-toolbox.tistory.com docker-compose.yml version: "3" services: no..

현재 Grafana는 V8.4.4를 사용하고 있고 제가 원하는 바는 이렇습니다. 아래와 같은 Grafana의 대시보드가 있으면파랑색 박스는 그 전날과 비슷한 시간에 똑같이 CPU의 사용률이 올랐기에 Alert를 발생하지 않고빨간색 박스는 그 전날과 다르게 CPU의 사용률이 측정되었기에 Alert를 발생시킵니다. 이것을 응용한다면 어제가 아닌 지난 주의 값을 비교할 수 있고 반복적인 작업이 있다면 그 부분을 제외하고 Alert를 발생할 수 있는 것입니다. 위와 같이 설정하고 싶다면 Grafana의 Alert Rule의 쿼리 부분을 계산해야합니다.먼저 새로운 Alert Rule을 만든 다음 핵심적인 부분은 2개의 빨간색 박스입니다.먼저 전날과 비교하려면 총 2개의 Query와 3개의 Expression이..
준비물은 이렇습니다. Ansible의 hosts파일에 연결될 node pc의 IP를 작성하고, 해당 node pc를 ansible ping을 통해 연결이 된 후에 아래의 playbook을 실행시킬 수 있습니다. 위의 준비물은 다른 게시글에도 많기에 저는 playbook내용을 준비했습니다. 핵심인 playbook의 내용입니다. --- - hosts: exporter gather_facts: no tasks: - name: Create main dir # 없어도 되는 부분입니다. file: path: /home/daou_docker/exporters state: directory - name: Install packages # docker-compose를 위해 wegt을 설치해줍니다. vars: ansibl..
ansible을 사용하던 중 playbook의 작성요령을 숙지하고 있어야 된다는 생각이 들었습니다. 그렇기에 따로 공부하면서 계속해서 작성해보도록 하겠습니다. --- - name: install nginx # playbook의 이름을 정합니다. hosts: all # 어떤 그룹에 실행할지 선정합니다. become: yes # 대상 호스트에 root 사용자로 작업을 수행합니다. connection: local # 대상 호스트가 ssh대신 local 연결을 합니다. gather-facts: no # facts를 수집하지 않음으로써 성능을 향상시킵니다. tasks: # 수행할 업무들입니다. - name: install epel-release # 업무에 대한 이름을 정합니다. yum: # yum과 관련된 모듈을..
개인 프로젝트를 진행하면서 docker의 쓰임새를 알게 되었고 다른 블로그의 글들을 보면서 필요한 코드들만 뽑아서 쓰는게 아닌 이해하면서 쓰고 싶었기에 문법 정리에 대한 글을 작성해보려고 합니다. FROM app FROM app:test # app이라는 Container image를 base로 사용합니다. # 태그가 없으면 latest를 사용합니다. RUN pip install -r requirements.txt RUN echo "Hello world" > /tmp/hello RUN apt-get install -y niginx RUN git clone https://github.com/test # RUN 형식이며 셸 스크립트 구문을 사용할 수 있습니다. # FROM의 이미지에 포함된 /bin/sh 실행..