Slide 1

Slide 1 text

モジュールが作りやすくなったよ! Ansible Collections 概要紹介 & 対応してみたベンダー 体験談 Ansible Night 2021.07 #ansiblejp

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

背景 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ヵ月

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

現場軸の話 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

Slide 15

Slide 15 text

現場軸の話 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

Slide 16

Slide 16 text

現場軸の話 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 の動作確認 ・表示内容の確認 ・社内での検証用途

Slide 17

Slide 17 text

現場軸の話  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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

現場軸の話  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

Slide 20

Slide 20 text

現場軸の話 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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

現場軸の話 公開時 $ 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

Slide 23

Slide 23 text

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) 対応

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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