Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Supporting_AnsibleCollections

 Supporting_AnsibleCollections

Ansible Night 2021.07 のセッション資料

naka-shin1

July 20, 2021
Tweet

More Decks by naka-shin1

Other Decks in Programming

Transcript

  1. モジュールが作りやすくなったよ!
    Ansible Collections 概要紹介

    対応してみたベンダー 体験談
    Ansible Night 2021.07
    #ansiblejp

    View Slide

  2. Ansible Night 2021.07
    #ansiblejp
    名前 :中山 真一 ( @naka_shin1 )
    所属 :セイコーソリューションズ株式会社
    職種 :ソフトウェアエンジニア
    業務内容 :担当NW機器の設計・開発・評価
    ・担当製品のAnsible Module開発
    ・組み込みNW機器のSW開発 / Webアプリの開発 / 開発部門のサーバ管理
    ペット:
    フクロモモンガ
    子供:
    2歳の娘はイヤイヤ期
    5歳の息子は夏休み
    欲しいもの:
    時間
    対応してみたベンダー
    体験談 パート
    1

    View Slide

  3. 対応してみたベンダー体験談
    ねらい
     国内の各ベンダーのAnsible対応が加速する一助になれればと。
    → モジュールの増加はAnsibleのできる事が広がる事に (more powerful)
     ユーザ数は圧倒的に、
    Ansible利用者 >>> Ansible Module開発者
    だと思いますので、内容が直撃する人は少ないかもしれません、、、が
    対応ベンダーが増えれば喜ぶユーザはその後ろにたくさんいると思っています。
    Ansible Night 2021.07
    #ansiblejp
    2

    View Slide

  4. 3
    対応してみたベンダー体験談 Ansible Night 2021.07
    #ansiblejp
    これまでの話
     担当製品
     ニッチなネットワーク機器
     Ansible Webinar 公開しています。
     2019年4月にAnsibleModuleを初回リリース
     初めて対応した際の話は以前の資料を参照下さい。
    NW機器のモジュール開発について内容となります。
    https://speakerdeck.com/nakashin1/developing-ansible-network-module
    3
    https://tracks.redhat.com/c/65-42?x=8XYa3o&lx=t84IoG

    View Slide

  5. 今日の内容
     背景
     対応前の開発・提供
     なぜ Ansible Collections 対応することにしたか
     現場軸の話
     Ansible Colelctions 開発
     OSSとして公開
     ビジネス軸の話
     会社として対応しよう!と判断した理由、議論した内容
     まとめ
    Ansible Night 2021.07
    #ansiblejp
    4

    View Slide

  6. 今日の内容
     背景
     対応前の開発・提供
     なぜ Ansible Collections 対応することにしたか
     現場軸の話
     Ansible Colelctions 開発
     OSSとして公開
     ビジネス軸の話
     会社として対応しよう!と判断した理由、議論した内容
     まとめ
    Ansible Night 2021.07
    #ansiblejp
    5

    View Slide

  7. 背景
    今日の内容
    対応前の開発・提供
     独自のパッケージを用意して、お客様に提供
    ・OSS の Ansible に含まれていないモジュールの為
    ユーザのAnsible環境に、製品用のモジュールをインストールする事で利用可能に
    必要な
    ファイル
    ・Module
    ・Plugin
    installer
    modules for Ansible
    Ansible Night 2021.07
    #ansiblejp
    install
    独自にパッケージ化
    6

    View Slide

  8. 背景
    今日の内容
    開発課題
     Ansibleのバージョン追従(Ver毎に変わるソース構成の変更・機能追加への対応)
    必要な
    ファイル installer
    modules for Ansible
    Ansible v2.7 Ansible v2.8
    Ansible v2.9
    ・ソースツリー(PATH情報)の変更対応
    ・Ansibleの機能追加によるファイルの修正確認
    - Optionで対応できるものはよいが、
    そもそもソースで対応していないと実現できない機能も
    Ansible Night 2021.07
    #ansiblejp
    7

    View Slide

  9. 背景
    ユーザーへの提供方法
     お客様の入り口
     会社のホームページからフォームの入力
    or
     訪問時に直接案内
     提供方法
     ユーザ毎に、個別に送付
    (インストーラ含むパッケージ、ドキュメント類、リリースノート 等)
    ※専用ドキュメントも、単独でDLする場合はHP経由(要フォーム入力)
    Ansible Night 2021.07
    #ansiblejp
    8

    View Slide

  10. 背景 Ansible Night 2021.07
    #ansiblejp
    これまでのリリース履歴
     Ansibleのリリース、担当製品のリリース
    2018 2019 2020 2021
    Ansible
    Release
    担当製品の
    Module Release
    v2.7
    2018-10
    v2.8
    2019-05
    v2.9
    2019-10
    v2.10
    2020-08
    v2.11
    2021-04
    v1.0
    2019-04
    v1.1
    2019-10
    v1.2
    2021-01
    Ansible2.7対応
    初回リリース
    Ansible2.8対応
    機能追加・不具合修正
    Ansible2.9対応
    不具合修正
     初回リリース後、AnsibleのVerupに追従するだけのVerup作業が結構大変になり、、、
     そんな中での、Ansible Collections の実装、登場でした。
    9
    6ヵ月 5ヵ月 15ヵ月

    View Slide

  11. 背景
    対応する理由
     開発面
     開発時のソース管理が楽になる
     インストーラは ansible-galaxy に変更
    <Ansible 2.9の課題 / Ansible 2.10以降の特徴>
    ・モジュールの修正や、機能追加をAnsibleにリリースに合わせる必要があるが、
    Ansible本体とCollectionのリリースは、非同期で対応可能
    → この恩恵は、OSS Ansible に取り込んでいないので、我々としては大きく変わらず
    ・ベンダーのモジュール類は、Collectionという単位で外だしへ
    → Ansibleのバージョン毎のPATH情報(ソースツリー) への依存がなくなり、
    正常なソース管理が可能に
    Ansible Night 2021.07
    #ansiblejp
    10

    View Slide

  12. 背景
    対応する理由
     提供面
     社内工数の削減
    ・個別送付 から Ansible GalaxyサイトからのDL、GitHubでの公開 に変更
    → 比較的クローズな状況から オープンな展開になる事への期待
     ユーザの利便性向上
    ユーザから見ると、Ansible Galaxy サイトから DL → Install という
    他のベンダー製モジュールと同じようなオペレーションで構築が可能に
     ユーザの声
     『Ansible Collections対応の要望』は、多く頂いた
    11
    Ansible Night 2021.07
    #ansiblejp

    View Slide

  13. 今日の内容
     背景
     対応前の開発・提供
     なぜ Ansible Collections 対応することにしたか
     現場軸の話
     Ansible Colelctions 開発
     OSSとして公開
     ビジネス軸の話
     会社として対応しよう!と判断した理由、議論した内容
     まとめ
    Ansible Night 2021.07
    #ansiblejp
    12

    View Slide

  14. 現場軸の話
    Ansible Collection 開発
    Ansible Night 2021.07
    #ansiblejp
    13
     開発にあたって
     公式ドキュメント
    Galaxy User Guide
    Galaxy Developer Guide
     既に公開されているコレクションのファイル
    https://github.com/ansible-collections
     ブログ
    [Ansible] 自作のコレクションを作ってGalaxyで公開するまで
    https://docs.ansible.com/ansible/latest/galaxy/user_guide.html
    https://docs.ansible.com/ansible/latest/galaxy/dev_guide.html
    ちょうど対応調査をしていたタイミングで、非常に助けられました。
    Thanks @zaki_hmkc

    View Slide

  15. 現場軸の話
    Ansible Collection 開発時のポイント
     NameSpace(名前空間)や Versionを決める
     galaxy.ymlというファイル内で指定
    ・英小文字のみ(a-z, 0-9, _ )、2文字以上、‘_’で開始はNG
     NameSpaceをどうするか
    ・会社として対応するので、どういうnamespaceにすべきかは結構大変でしたし、悩みましたし、苦労しました。
    ・Ansible Galaxy にログインした際に、ユーザ名をもとに自動的に NameSpace が作成されますが、
    申請すれば 任意の namespaceを取得する事ができます。(今回は申請して作成)
     Version
    ・独自リリースしていたバージョンの続きのバージョン名としました。(ベンダー独自で良い)
    https://galaxy.ansible.com/docs/contributing/namespaces.html
    Ansible Night 2021.07
    #ansiblejp
    14
    https://galaxy.ansible.com/docs/contributing/namespaces.html#galaxy-namespace-limitations
    https://galaxy.ansible.com/docs/contributing/namespaces.html#requesting-additional-namespaces

    View Slide

  16. 現場軸の話
    Ansible Collection 開発時のポイント
     Ansible Galaxy(社内用を構築)
     Ansible Galaxy は社内に構築しました。
    ・AGは、一度アップロードしたモジュールは消せず、同一バージョンを再アップする事もできない為
    ・モジュールアップロード後のLINKや表示を確認したり、社内検証や情報共有の用途として必要でした。
    https://github.com/ansible/galaxy#installing
    Ansible Night 2021.07
    #ansiblejp
    https://github.com/ansible/galaxy/blob/devel/CONTRIBUTING.rst
    15
    ・LINK の動作確認
    ・表示内容の確認
    ・社内での検証用途

    View Slide

  17. 現場軸の話
     collection_prep(Collectionsのドキュメントを自動生成するツール)
     Ansibleモジュールのソース内上部の、ドキュメントセクションから、rstファイルを自動生成してくれる。
     自動生成した、ドキュメントのLINKを、README.md に反映してくれる。
     meta/runtime.ymlの、Ansible対応バージョンを、README.mdに反映してくれる。
    ANSIBLE COLLECTIONSのモジュールドキュメントを自動生成する
    Ansible Night 2021.07
    #ansiblejp
    Ansible Collection 開発時のポイント
    https://github.com/ansible-network/collection_prep
    このブログ記事がなかったら気付きもしませんでした。
    Thanks @sky_jokerxx
    16

    View Slide

  18. 現場軸の話
     テスト自動化の仕組み
     いわゆる CI/CD の仕組み(commit毎 / version作成毎 に自動的にテスト実施)はまだ未構築ですが、
    Ansible Collections の対応に合わせて テスト自動化の実行部分を構築(チームメンバに感謝!)
    Ansible Night 2021.07
    #ansiblejp
    Ansible Collection 開発時のポイント
    ■概要
    ・テスト実行の一部はAnsible、確認部分はスクラッチで作成
    ※Playbook実行結果の差分を確認できるので、AnsibleのVersionUp による実行結果の差分抽出も可能に
    ■テスト内容(項目のベースは既存のテスト仕様書)
    ・全モジュールの全オプションを実機と連携して実行
    ・Ansible Galaxy との連携テスト
    - ansible-galaxy コマンドのオペレーション
    - DLしたファイルの内容確認
    ・ラッシュ試験相当(Playbookの連続実行)
    17

    View Slide

  19. 現場軸の話
     ansible-test sanity
     静的コードチェッカーで、Ansibleのコーディング規約の確認ができる。
     ドキュメントセクションと、コードが一致しているかなども確認してくれる。
     モジュールオプションの選択肢、デフォルト値、型 など合っているかどうか
    Ansible Night 2021.07
    #ansiblejp
    Ansible Collection 開発時のポイント
    18
    https://docs.ansible.com/ansible/latest/dev_guide/testing_sanity.html
    https://docs.ansible.com/ansible/latest/dev_guide/testing/sanity/index.html#all-sanity-tests

    View Slide

  20. 現場軸の話
    Ansible Collection 開発の流れ
     開発~テスト
    開発
    collection_prep
    公開用コードの生成
    ansible-galasy collection build

    Ansible Galaxy用 パッケージ生成
    LICENSE docs plugins
    README.md galaxy.yml requirements.txt
    changelogs meta tests
    Build用
    Playbook
    FILES.json changelogs requirements.txt
    LICENSE docs tests
    MANIFEST.json meta
    README.md plugins
    seiko-smartcs-x.y.z.tar.gz
    テスト自動化
    (社内用)
    バージョン名
    19
    Ansible Night 2021.07
    #ansiblejp
    ansible-test sanity

    View Slide

  21. 現場軸の話
    OSSとして公開
     基本的な考えは、『公開情報』として扱うというポリシー
     会社として、OSSを公開するという事自体が初の試みだったので、様々な確認は発生しましたが
    部門内外含めて、後押しするような声が多く大変助かりました。
     公開作業は、ソフトウェアの認定を終えた後に行う。
     Ansible Collectionsは、ファイルを指定したインストールも可能なので、
    必ずしも公開する必要はないと思っています。
    開発
    認定
    作業
    公開
    OK
    20
    $ ansible-galaxy collection install seiko-smartcs-1.4.0.tar.gz
    Ansible Night 2021.07
    #ansiblejp

    View Slide

  22. 現場軸の話
    公開時
    $ ansible-galaxy collection install seiko.smartcs
    ansible_collections
    ansible
    seiko
    netcommon
    smartcs
    FILES.json changelogs requirements.txt
    LICENSE docs tests
    MANIFEST.json meta
    README.md plugins
    ユーザ環境のディレクトリ
    開発したソース一式は
    GitHubにアップロード GitHubにアップロードしたソースに
    ansible-galaxy collection build
    を実行して出来たファイルを
    Ansible Galaxyにアップロード
    Ansible Night 2021.07
    #ansiblejp
    21

    View Slide

  23. Ansible Night 2021.07
    #ansiblejp
    最近のリリース
     Ansibleのリリース、担当製品のリリース
    2018 2019 2020 2021
    v2.7
    2018-10
    v2.8
    2019-05
    v2.9
    2019-10
    base v2.10
    2020-08
    core v2.11
    2021-04
    v1.0
    2019-04
    v1.1
    2019-10
    v1.2
    2021-01
     Ansible Collection対応して、体制が整ってきた。
     標準化されたエコシステムのルールに従う事でやる事が明確に。
    22
    現場軸の話
    v1.3.0
    2021-04
    core v2.12
    2021-10?
    v1.4.0
    2021-07
    5ヵ月 6ヵ月 15ヵ月 6ヵ月 3ヵ月
    Ansible Collections
    対応
    Ansible4系 (-core2.11)
    対応

    View Slide

  24.  背景
     対応前の開発・提供
     なぜ Ansible Collections 対応することにしたか
     現場軸の話
     Ansible Colelctions 開発
     OSSとして公開
     ビジネス軸の話
     会社として対応しよう!と判断した理由、議論した内容
     まとめ
    Ansible Night 2021.07
    #ansiblejp
    23

    View Slide

  25. ビジネス軸の話
    会社としての考えは
     もともと、Ansible Module は、製品の 付加価値向上 という位置づけ

    Ansible Collections対応 / OSS化 について 意見の衝突などはありませんでした。
    Ansibleのエコシステムに対応する事が、ユーザにとっての使いやすさになる、という考え
     Ansibleに関するモジュールやドキュメントについては全て公開情報に変更
     元々は、DL時にユーザ情報の入力が必要だった
     Ansible対応して約2年、利用ユーザも少しずつ増えてきたので タイミングとしても良かった。
    24
    Ansible Night 2021.07
    #ansiblejp

    View Slide

  26. まとめ
     Ansible Collections に対応する為に色々と取り組んだ結果
     まだまだ改善点はたくさんあると思っていますが、(特にCI/CD周り)
    なんとか継続してメンテナンスしていくことができる体制になってきた。
     OSS対応をはじめとした社内のノウハウも蓄積、いいきっかけに
     Ansible Galaxyの DL数をたまに覗く楽しみ (便りがないのは良い便り)
     これからも Ansible の Verup に戦々恐々しながらも新しい技術を楽しめればなと
    Ansible Night 2021.07
    #ansiblejp
    25

    View Slide

  27. まとめ
     本日の発表内容について
     自分自身もAnsibleコミュニティの方の情報に非常に助けられました!
     運用での使い方と比較して、開発視点の情報は非常に少ないと思いますので
    Ansible Collections対応 を考えている方に、今回の体験談が役に立てたら幸いです。
    Ansible Night 2021.07
    #ansiblejp
    26

    View Slide

  28. ご清聴ありがとうございました。
    Ansible Night 2021.07
    #ansiblejp
    Ansible Night 2021.07
    #ansiblejp

    View Slide