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 Night 2021.07 #ansiblejp 名前 :中山 真一 ( @naka_shin1 )

    所属 :セイコーソリューションズ株式会社 職種 :ソフトウェアエンジニア 業務内容 :担当NW機器の設計・開発・評価 ・担当製品のAnsible Module開発 ・組み込みNW機器のSW開発 / Webアプリの開発 / 開発部門のサーバ管理 ペット: フクロモモンガ 子供: 2歳の娘はイヤイヤ期 5歳の息子は夏休み 欲しいもの: 時間 対応してみたベンダー 体験談 パート 1
  2. 対応してみたベンダー体験談 ねらい  国内の各ベンダーのAnsible対応が加速する一助になれればと。 → モジュールの増加はAnsibleのできる事が広がる事に (more powerful)  ユーザ数は圧倒的に、

    Ansible利用者 >>> Ansible Module開発者 だと思いますので、内容が直撃する人は少ないかもしれません、、、が 対応ベンダーが増えれば喜ぶユーザはその後ろにたくさんいると思っています。 Ansible Night 2021.07 #ansiblejp 2
  3. 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
  4. 今日の内容  背景  対応前の開発・提供  なぜ Ansible Collections 対応することにしたか

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

     現場軸の話  Ansible Colelctions 開発  OSSとして公開  ビジネス軸の話  会社として対応しよう!と判断した理由、議論した内容  まとめ Ansible Night 2021.07 #ansiblejp 5
  6. 背景 今日の内容 開発課題  Ansibleのバージョン追従(Ver毎に変わるソース構成の変更・機能追加への対応) 必要な ファイル installer modules for

    Ansible Ansible v2.7 Ansible v2.8 Ansible v2.9 ・ソースツリー(PATH情報)の変更対応 ・Ansibleの機能追加によるファイルの修正確認 - Optionで対応できるものはよいが、 そもそもソースで対応していないと実現できない機能も Ansible Night 2021.07 #ansiblejp 7
  7. 背景 ユーザーへの提供方法  お客様の入り口  会社のホームページからフォームの入力 or  訪問時に直接案内 

    提供方法  ユーザ毎に、個別に送付 (インストーラ含むパッケージ、ドキュメント類、リリースノート 等) ※専用ドキュメントも、単独でDLする場合はHP経由(要フォーム入力) Ansible Night 2021.07 #ansiblejp 8
  8. 背景 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ヵ月
  9. 背景 対応する理由  開発面  開発時のソース管理が楽になる  インストーラは ansible-galaxy に変更

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

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

     現場軸の話  Ansible Colelctions 開発  OSSとして公開  ビジネス軸の話  会社として対応しよう!と判断した理由、議論した内容  まとめ Ansible Night 2021.07 #ansiblejp 12
  12. 現場軸の話 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
  13. 現場軸の話 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
  14. 現場軸の話 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 の動作確認 ・表示内容の確認 ・社内での検証用途
  15. 現場軸の話  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
  16. 現場軸の話  テスト自動化の仕組み  いわゆる CI/CD の仕組み(commit毎 / version作成毎 に自動的にテスト実施)はまだ未構築ですが、

    Ansible Collections の対応に合わせて テスト自動化の実行部分を構築(チームメンバに感謝!) Ansible Night 2021.07 #ansiblejp Ansible Collection 開発時のポイント ▪概要 ・テスト実行の一部はAnsible、確認部分はスクラッチで作成 ※Playbook実行結果の差分を確認できるので、AnsibleのVersionUp による実行結果の差分抽出も可能に ▪テスト内容(項目のベースは既存のテスト仕様書<Excel>) ・全モジュールの全オプションを実機と連携して実行 ・Ansible Galaxy との連携テスト - ansible-galaxy コマンドのオペレーション - DLしたファイルの内容確認 ・ラッシュ試験相当(Playbookの連続実行) 17
  17. 現場軸の話  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
  18. 現場軸の話 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
  19. 現場軸の話 OSSとして公開  基本的な考えは、『公開情報』として扱うというポリシー  会社として、OSSを公開するという事自体が初の試みだったので、様々な確認は発生しましたが 部門内外含めて、後押しするような声が多く大変助かりました。  公開作業は、ソフトウェアの認定を終えた後に行う。 

    Ansible Collectionsは、ファイルを指定したインストールも可能なので、 必ずしも公開する必要はないと思っています。 開発 認定 作業 公開 OK 20 $ ansible-galaxy collection install seiko-smartcs-1.4.0.tar.gz Ansible Night 2021.07 #ansiblejp
  20. 現場軸の話 公開時 $ 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
  21. 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) 対応
  22.  背景  対応前の開発・提供  なぜ Ansible Collections 対応することにしたか 

    現場軸の話  Ansible Colelctions 開発  OSSとして公開  ビジネス軸の話  会社として対応しよう!と判断した理由、議論した内容  まとめ Ansible Night 2021.07 #ansiblejp 23
  23. ビジネス軸の話 会社としての考えは  もともと、Ansible Module は、製品の 付加価値向上 という位置づけ ↓ Ansible

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