전체 글

DevOps/Ansible

Ansible serial 활용

Serial 기본적으로 ansible은 모든 호스트에서 각 태스크를 병렬로 실행하지만 serial을 통해 한 번에 몇 개의 호스트가 play를 수행할지 지정할 수 있는데 사용 예시는 다음과 같다. 한 번에 하나의 호스트에서만 실행 - name: serial-one hosts: all serial: 1 tasks: - name: get info - name: remove host from elb group - name: update - name: put host into elb group 위와 같은 playbook을 통해 한 번에 하나의 호스트에서만 실행하도록 전달할 수 있다. 또한 위와 같은 상황에선 특정 비율 이상의 실패 발생 시에 이후 작업들도 실패가 발생할 확률이 높기에 서비스가 중단될 수 있으므로..

DevOps/Ansible

Ansible host 지정 패턴

Host Ansible 사용 시 호스트를 지정해서 사용하게 되는데 ansible에서는 다양한 상황에서 유연하게 대처할 수 있도록 패턴을 통해 호스트 범위를 지정할 수 있도록 한다. 일반적인 예시 hosts: web 모든 호스트 hosts: all 합집합 hosts: web:production 교집합 hosts: database:&production 그 외에도 다양한 패턴을 지원한다. 액션 사용법 모든 호스트 all 모든 호스트 * 합집합 dev:production 교집합 dev:&production 배제 dev:!production 와일드카드 *.example.com 번호 범위 web[5:10] 정규식 ~web\d+.example.(com 또한 —limit 옵션을 통해 실행할 호스트를 지정할 수 있습니다..

DevOps/Ansible

Ansible lookup

Lookup 기본적으로 Ansible에서는 vars를 통해 변수를 정의할 수 있다. 다만 자동화 환경 구축을 진행하다보면 다양한 곳에서 입력되는 변수를 처리해야할 필요가 있는데, 때문에 Ansible에서는 lookup plugin을 통해 이러한 변수 처리에 도움을 준다. (lookup 플러그인은 jinja2 template language의 Ansible-specific extension이다.) Support 해당 글에서는 lookup에서 사용할 수 있는 대표적인 조회 몇 가지만 제시한다. --- - name: lookup_test hosts: localhost tasks: # 파일 내용 조회 후 반환 - name: file debug: msg="file {{lookup('file', '/Users/an..

DevOps/Ansible

requirements.txt 을 활용해 Ansible에서 package 설치

requirements.txt Python Project에서는 requires.txt 파일에 버전과 함께 패키지 의존성 라이브러리를 지정한다. 이를 통해 추후 python package의 버전 업그레이드로 인한 불안정한 호환 문제에서 해방되었다. 또한 이러한 의존성 관리는 virtualenv에도 영감을 주었는데, venv를 active 할 시 해당 가상환경에 포함된 패키지들만 남게됨을 알고 있을 것이다. 이를 활용해 아래와 같이 requirements.txt 파일을 생성해 공급할 수 있다. $ source project/bin/active $ pip freeze > requirements.txt Use on ansible requirements.txt를 사용해 아래와 같이 패키지를 설치할 수 있다. - ..

DevOps/Ansible

Ansible facts

Facts ansible에서 제공하는 호스트에 대한 정보. $ ansible-playbook test.yaml PLAY [show return value of command module] ********************************************************************************************************************************************************************************************************** TASK [Gathering Facts] *******************************************************************..

DevOps/k8s

k8s SealedSecret 사용법

SealedSecret이란? k8s에서 가장 많이 함께 이용되는 개념 중 하나인 GitOps에서는 매니페스트를 저장소에 배치한다. 이때 배치된 저장소에는 secret도 함께 올라가게 되는데 이 소스는 Base64 encode되있을 뿐 암호화되지 않는다. 때문에 이를 암호화하여 서비스 노드에서 작동할 수 있도록 하여야하는데, 이때 사용하는 대표적인 도구가 SealedSecret이다. Problem: "I can manage all my K8s config in git, except Secrets." Solution: Encrypt your Secret into a SealedSecret, which is safe to store - even inside a public repository. > The Se..

xlwdn98767
개발 조무사 IT 개발 블로그