コレクションと requirements.yml でバージョンを固定する
Pro会員限定上級約39分6レッスン
同じプレイブックが、人によって・CI によって違う動きをする原因の多くは、入っているコレクションの版の違いです。コレクションの探し方(collections_path)を確かめ、requirements.yml から入れ、メジャーバージョンの破壊的変更を版の範囲指定で防ぎ、CI と同じ条件で動くことを確かめます。
対象者: 「自分の PC では動くのに CI で落ちる」を経験した方 / チームでコレクションを使い始めた方
前提知識: プレイブックの構成設計: import と include 修了程度
この教材を終えると、できるようになること
- ansible-galaxy collection list と ansible-config dump で、使われるコレクションの場所と版を説明できるようになる。
- requirements.yml の書き方を読み、ansible-galaxy collection install -r でリポジトリの collections/ に入れられるようになる。
- コレクションの更新でロールの入力が変わったことを、エラーと argument_specs から読み取れるようになる。
- requirements.yml に版の範囲を書き、意図した版が入ってプレイブックが動くことを確かめられるようになる。
- ホームのコレクションに頼っていないかを、CI と同じ collections_path で確かめられるようになる。
修了後の姿: 大規模・複数チームで使えるAnsibleコードを設計・テスト・配布し、変更をエラーを出さずに安全に本番へ流せる自動化エンジニアへ。
Chapter 1どのコレクションの、どの版が使われるか
collections_path の順序、requirements.yml からのインストール、範囲指定による固定、CI と同じ条件での確認を練習します。
- どこにある、どの版が使われるかを確かめるcollections_path の先頭から探し、最初に見つかった版が使われる約7分(有料会員限定)
- requirements.yml からリポジトリに入れる-r requirements.yml で、チームの決めた版を collections/ に入れる約7分(有料会員限定)
- メジャーバージョンアップで壊れる2.0.0 で変数名が変わり、argument_specs の検証で止まる約7分(有料会員限定)
- 範囲指定でメジャーバージョンを固定する">=1.3.0,<2.0.0" で、修正版は受け取りつつ破壊的変更は入れない約8分(有料会員限定)
- CI と同じ条件で確かめるANSIBLE_COLLECTIONS_PATH でホームの版を見えなくして再現する約7分(有料会員限定)
Chapter 2確認クイズ
コレクションの版管理の理解度をチェック。