Galaxy tarballGit 역할은 풀·인증·캐시가 다릅니다(타 스택 글과 겹치지 않게 이원만 다룹니다). 원격 Mac에서 ansible-galaxy가 끊기면 이후 단계가 공회전하므로 forks·timeout·재시도·TMPDIR·경로를 표로 고정합니다. ·블로그 목록·Git·Docker 풀 가속·풀 안정성 FAQ.

왜 Galaxy와 Git 역할을 분리해 생각해야 하나요?

컬렉션은 허브 tarball 풀, Git 역할은 클론·서브모듈까지 이어집니다. 같은 러너에서 Docker·npm과 겹치면 TCP·디스크가 먼저 포화되어 Galaxy만 타임아웃처럼 보일 수 있습니다.

  • 단일 변수로 섞기 금지: 미러 URL·토큰을 Galaxy와 Git에 동시에 적용하면 한쪽만 깨져도 원인 추적이 느려집니다.
  • forks 오해: forks는 플레이북 실행 병렬도이지 Galaxy 다운로드 스레드가 아닙니다. 수치를 나눠 기록하세요.
  • 임시 디렉터리 교차 장치: 느린 공유 볼륨에 TMPDIR가 잡히면 unpack 단계에서만 수 분이 날 수 있습니다.
신호 Galaxy 쪽 의심 Git 역할 쪽 의심
간헐 5xx·느린 첫 바이트 허브 레이트·경로 MTU 낮음
특정 커밋에서만 hang 낮음 shallow·서브모듈·DNS
로컬은 성공·CI만 실패 원격 Mac의 ansible.cfg 검색 경로·프록시·roles_path 불일치

실행 가능 파라미터 표: ansible.cfg·환경·재시도

복붙용 시작점입니다. 코어 버전별 옵션 차이는 있으나, 키는 의미 단위로 맞추면 됩니다.

항목 설정 위치 / 예시 권장 시작값 의사결정 기준
forks [defaults] forks=16 (ansible.cfg) 10~20 (M4 계열) 플레이북 SSH 병렬도. Galaxy 다운로드와 혼동 금지.
timeout [defaults] timeout=45 30~60초 RTT·점프박스 있으면 상향.
galaxy CLI 재시도 ansible-galaxy … --verbose를 셸 루프로 감쌈 최대 3회 플레이크 대응. 401은 토큰부터.
실패 백오프 루프 사이 sleep 2s → 4s → 8s CI retry:와 중복되지 않게 상한 계산.
TMPDIR export TMPDIR="$RUNNER_TEMP/tmp" NVMe 로컬 경로 unpack과 동일 로컬 FS.
컬렉션 설치 경로 ANSIBLE_COLLECTIONS_PATH 또는 collections_paths ~/ci-galaxy/collections CI 캐시 키에 경로 문자열 포함.
역할 경로 roles_path / ANSIBLE_ROLES_PATH ./roles:~/ci-galaxy/roles vendor와 CI 캐시 순서 분리.
동시 ansible-galaxy xargs -P 2 등 (파일 분할 시) 1~2 병렬 3+는 역효과 많음. requirements 샤드.
# 예: GitHub Actions / self-hosted macOS — Galaxy+Git 이원 풀 전에 경로 고정 export TMPDIR="${RUNNER_TEMP:-/tmp}/ansible-tmp" mkdir -p "$TMPDIR" "${HOME}/ci-galaxy/collections" "${HOME}/ci-galaxy/roles" export ANSIBLE_COLLECTIONS_PATH="${HOME}/ci-galaxy/collections" export ANSIBLE_ROLES_PATH="${HOME}/ci-galaxy/roles:./roles" # ansible.cfg 인접 또는 ANSIBLE_CONFIG 로 forks·timeout 분리 기록 export ANSIBLE_FORKS=16 export ANSIBLE_TIMEOUT=45 retry_galaxy() { local n=0 d=2 until ansible-galaxy collection install -r requirements.yml; do n=$((n+1)); [ "$n" -ge 3 ] && return 1 sleep "$d"; d=$((d*2)) done } retry_galaxy ansible-galaxy role install -r requirements.yml

[galaxy] server_list 순서는 문서에 고정하고, 허브 호스트 변경 시 캐시 키로 의도적 미스를 냅니다.

의사결정 매트릭스: 직렬 vs 소수 병렬·벤더링

전략 장점 리스크 선택 조건
직렬 galaxy + 단일 캐시 로그 단순·락 충돌 적음 월 큰 requirements에서 시간 증가 요구 수 < ~15, 회선 안정
requirements 샤드 + -P 2 대형 목록 완화 동시 실패 시 원인 분리 필요 의존 그래프가 얕을 때
Git 서브모듈 벤더 (역할만) CI 외부 풀 제거 저장소 용량·갱신 프로세스 규제망·허브 접속 불가
tarball 아티팩트 승격 재현성 최고 빌드 파이프라인 단계 증가 릴리즈 게이트·감사 로그
프리플라이트 체크리스트
  • ansible-galaxy collection list와 실제 ansible-playbook가 동일 ANSIBLE_COLLECTIONS_PATH를 보는지 확인.
  • Git 역할은 git ls-remote로 원격 Mac에서 동일 URL·자격 증명 재현.
  • 동시 빌드가 많으면 노드 업그레이드·풀 분리가 프록시 미세 조정보다 저렴한 경우가 많습니다.

캐시 키와 무효화: Galaxy 해시 vs Git ref

컬렉션 키: requirements 지문·코어 버전·ANSIBLE_COLLECTIONS_PATH. Git 역할은 커밋 SHA 고정이 안전합니다. IO 분리·백오프는 Git·Docker 풀 가속·풀 안정성 FAQ와 같이 보세요.

FAQ

Q. Automation Hub와 galaxy.ansible.com을 섞어도 되나요?
A. 가능하지만 server_list 순서와 토큰 스코프를 문서화하지 않으면 재현 사고가 납니다. 순서 변경은 캐시 무효화 이벤트로 취급하세요.

Q. 동일 워크스페이스에서 병렬 job이 캐시를 깨먹습니다.
A. job별 하위 디렉터리로 ANSIBLE_COLLECTIONS_PATH를 분리하거나, 락 파일(flock)으로 galaxy 단계를 직렬화하세요.

정리: Galaxy tarballGit 역할을 이원으로 다루고, forks·timeout은 플레이북 병목, TMPDIR·collections_paths·roles_path는 풀·unpack 병목으로 나눠 표에 고정하세요. 공유 러너에서 한도가 보이면 전용 노드로 분리하거나 상위 플랜으로 업그레이드하는 편이 종종 가장 저렴한 해결입니다. 로그인 없이 ·구매·요금·도움말(SSH)·고객 지원·기술 블로그에서 MacPull 원격 Mac을 확인할 수 있습니다.

Galaxy + Git 역할 CI

원격 Mac에서 ansible-galaxy를 재현 가능하게

전용 Apple Silicon 노드에 캐시 경로·회선을 고정하고, 필요 시 노드 수·사양을 올려 병목을 끊으세요. ·구매·도움말·고객 지원·기술 블로그는 로그인 없이 이용할 수 있습니다.

전용 Apple Silicon
SSH·CI 러너
유연한 기간
고객 지원