Workflow Template은 여러 Job Template들을 엮어서 하나의 큰 작업 흐름으로 만든다. 마치 플로우차트처럼 성공/실패에 따라 다른 단계를 실행할 수 있다. Workflow Template 구성은 AWX UI에서 그래픽하게 이루어지므로, 여기서는 각 노드가 될 수 있는 Playbook의 특징이나 Workflow의 개념적 흐름을 코드로 확인 한다.환경 준비 및 검증 (첫 단계)Workflow의 시작점에서 인프라 상태, 의존 서비스 가용성 등을 체크. 실패 시 Workflow를 중단시켜 불필요한 배포 시도를 막는다. # wf_node_01_prepare_env.yml- name: 배포 환경 준비 및 검증 hosts: all # 또는 특정 검증 서버 그룹 gather_facts:..
AWX를 Jenkins, GitLab CI, GitHub Actions 같은 CI/CD 도구와 연결하면 자동화의 꽃을 피울 수 있어! 코드가 빌드되고 테스트되면, AWX가 알아서 배포. 가정: AWX_TOKEN (AWX API 토큰), AWX_URL (AWX 서버 주소), JT_ID_DEPLOY_DEV (개발 환경 배포 Job Template ID) 등은 CI/CD 시스템의 환경 변수나 Secret으로 관리된다고 가정.curl로 AWX Job Template 실행 (기본)가장 기본적인 연동 방식. 빌드/테스트 후 AWX Job Template을 실행시켜. -s는 silent 모드. // Jenkins Pipeline (Declarative) 예시pipeline { agent any e..
AWX의 프로젝트, 인벤토리, Job Template은 Ansible 자동화의 핵심 구성 요소야. 여기서는 이들을 활용하는 Playbook 작성 팁과 AWX 기능 연계 방법을 살펴본다.Job Template의 추가 변수 (Extra Variables) 활용Job Template 실행 시 추가 변수에 YAML 형식으로 값을 넘겨주면 Playbook에서 바로 사용할 수 있어. CI/CD 연동 시 동적으로 값을 전달할 때 매우 유용. # playbook.yml# AWX Job Template의 "추가 변수"에서 아래와 같이 YAML로 변수 전달 가능:# ---# package_name: "htop"# deploy_env: "production"# user_email: "user@example.com"..
AWX는 Ansible을 웹에서 쉽게 쓰고 팀과 공유할 수 있게 해주는 멋진 도구. 여기서는 AWX의 핵심 기능들을 어떤 식으로 활용하는지 개념 위주로 설명하고, API 호출 예시를 살짝 확인 한다. (실제 UI 설정은 AWX에 접속해서 직접 해보는 게 최고!)새 프로젝트 생성 및 Git SCM 연동AWX에서 프로젝트 > +추가 클릭.이름, 설명, 조직(Organization) 지정.SCM 유형을 Git으로 선택.SCM URL에 Playbook이 있는 Git 저장소 주소 입력 (예: https://github.com/your-org/ansible-playbooks.git).필요시 SCM 브랜치/태그/커밋 지정.SCM 자격증명 선택 (Private 저장소인 경우 Git 접근용 SSH 키 또는 토큰).저장하..
Playbook이 상황에 따라 다르게 행동하거나, 같은 작업을 여러 번 반복해야 할 때 조건문과 반복문이 빛을 발해. 마치 프로그래밍 언어의 if문과 for문과 동일when 기본 사용 (변수 값 비교)when 뒤에 오는 조건이 참(true)일 때만 해당 작업이 실행. - name: 특정 조건일 때만 작업 실행 hosts: webservers vars: deploy_mode: "production" # 또는 "staging" tasks: - name: 프로덕션 모드일 때만 알림 보내기 ansible.builtin.debug: msg: "프로덕션 배포가 완료되었습니다!" when: deploy_mode == "production" - name: 스..
API 키, DB 패스워드 같은 비밀 정보는 Git에 그냥 올리면 큰일나! Ansible Vault를 쓰면 이런 정보들을 안전하게 암호화해서 관리할 수 있다.Vault로 암호화된 변수 파일 생성 (secrets.yml)이렇게 생성된 secrets.yml 파일은 암호화되어 저장. # 터미널에서 실행ansible-vault create group_vars/all/secrets.yml# 암호 입력/확인 후, 에디터가 열리면 내용 입력# 예:# db_user: myapp_user# db_password: "ThisIsASecretPassword!@#" 기존 파일 암호화/복호화/편집 ansible-vault encrypt vars/prod_secrets.yml # 기존 파일 암호화ansi..
Role은 관련된 작업, 변수, 템플릿 등을 하나의 묶음으로 만들어 재사용하기 쉽게 한 거야. 웹 서버 설정, DB 설정처럼 공통 작업을 Role로 만들어두면 아주 유용.Role 기본 구조 (ansible-galaxy init my_nginx_role 실행 시 생성됨): my_nginx_role/├── README.md├── tasks/│ └── main.yml # 이 Role의 주요 작업들├── handlers/│ └── main.yml # 작업 결과에 따라 실행될 핸들러├── templates/ # Jinja2 템플릿 파일 (예: nginx.conf.j2)├── files/ # 정적 파일 (예: 로고 이미지)├── vars/│ └── ..
변수와 템플릿을 쓰면 Playbook이 훨씬 유연해지고 재사용성이 높아져. 마치 요리 레시피에서 재료 양을 조절하거나, 편지지 양식을 만드는 것과 비슷Playbook 내 변수 정의 (vars 섹션)vars 섹션에 변수를 정의하고, {{ variable_name }} 형태로 사용. - name: 사용자 및 패키지 관리 hosts: all become: yes vars: user_name: "developer" packages_to_install: - vim - git - tree tasks: - name: 사용자 {{ user_name }} 생성 ansible.builtin.user: name: "{{ user_name }}"..