Galaxy 集合とGit 役割の二源で律速が分岐する CI 向けに、
ansible.cfg の forks/timeout、ansible-galaxy --timeout、TMPDIR と ANSIBLE_COLLECTIONS_PATHS、並列取得と指数バックオフを一枚化します。ホーム・技術ブログ・Git/Docker プル加速ガイド。
二源の対比
集合は Hub/API+ tarball、役割は git+https の RTT と認証が支配的。ansible-galaxy collection install と role install(または先立ち git clone)をログ上で分離してください。
- 429/5xx 多発 → Galaxy の
--timeoutと同時パイプラインを先に抑える。 - forks はホスト並列。HTTP 並列や
xargs -Pと混同しない。
実行パラメータ表(ansible.cfg・環境・CLI)
出発点。出口 NAT・同時パイプライン p と掛け算して上限を見積もります。
| キー/手段 | 設定箇所 | 推奨初期値 | メモ |
|---|---|---|---|
forks | [defaults] または -f | 10〜25 | SSH ホスト並列。 |
timeout | [defaults] | 60→90 | SSH。 |
retries/delay | タスク | 3/5 | 一時障害。 |
--timeout | galaxy CLI | 120〜300 | API/tarball。 |
TMPDIR | 環境 | SSD 上 mktemp | 展開先。 |
ANSIBLE_COLLECTIONS_PATHS | 環境 | runner 恒久 | req ハッシュを CI キーに。 |
| 並列 Git | xargs -P | 2〜4 | 枯渇→2。 |
| 退避 | シェル | 2・4・8・16s | galaxy を包む。 |
コピペ例(集合+バックオフ)
export TMPDIR="$(mktemp -d /var/tmp/ag.XXXXXX)"
export ANSIBLE_COLLECTIONS_PATHS="/var/lib/ci/ac"
mkdir -p "$ANSIBLE_COLLECTIONS_PATHS"
for s in 0 2 4 8 16; do
[ "$s" -gt 0 ] && sleep "$s"
ansible-galaxy collection install -r collections/requirements.yml \
-p "$ANSIBLE_COLLECTIONS_PATHS" --timeout 240 && break
done
決定マトリクス(シナリオ別)
| シナリオ | Galaxy | Git 役割 | 並列の扱い | キャッシュ鍵 |
|---|---|---|---|---|
| 社内 Hub | 低 RTT、単一サーバ | Deploy Key | forks 中程度可 | req ハッシュ+core 版 |
| 跨境+公開 Galaxy | --timeout 長め、429 でジョブ削減 | 浅複製、xargs -P 2〜4 | forks と HTTP 同時増加を避ける | collections/roles を別キー |
| ハイブリッド | 先に collection 固定パス | 別 TMPDIR で roles | 二段ログで律速分離 | 二層キャッシュ |
プリフライト・チェックリスト
- 構文チェックで意図パスから読込めている。
- 失敗ログを HTTP と git に分類済み。
TMPDIRは SSD または検証済み NFS。
まとめ
Galaxy と Git を別律速にし、表の数値+シェル退避で外向き揺らぎを吸収するのが扱いやすいです。取得律速ならリージョンに近いリモート Mac へ寄せるかプラン昇格で帯域を上げるのが効きます。