Ansible Night 2021.07 のセッション資料
モジュールが作りやすくなったよ!Ansible Collections 概要紹介&対応してみたベンダー 体験談Ansible Night 2021.07#ansiblejp
View Slide
Ansible Night 2021.07#ansiblejp名前 :中山 真一 ( @naka_shin1 )所属 :セイコーソリューションズ株式会社職種 :ソフトウェアエンジニア業務内容 :担当NW機器の設計・開発・評価・担当製品のAnsible Module開発・組み込みNW機器のSW開発 / Webアプリの開発 / 開発部門のサーバ管理ペット:フクロモモンガ子供:2歳の娘はイヤイヤ期5歳の息子は夏休み欲しいもの:時間対応してみたベンダー体験談 パート1
対応してみたベンダー体験談ねらい 国内の各ベンダーのAnsible対応が加速する一助になれればと。→ モジュールの増加はAnsibleのできる事が広がる事に (more powerful) ユーザ数は圧倒的に、Ansible利用者 >>> Ansible Module開発者だと思いますので、内容が直撃する人は少ないかもしれません、、、が対応ベンダーが増えれば喜ぶユーザはその後ろにたくさんいると思っています。Ansible Night 2021.07#ansiblejp2
3対応してみたベンダー体験談 Ansible Night 2021.07#ansiblejpこれまでの話 担当製品 ニッチなネットワーク機器 Ansible Webinar 公開しています。 2019年4月にAnsibleModuleを初回リリース 初めて対応した際の話は以前の資料を参照下さい。NW機器のモジュール開発について内容となります。https://speakerdeck.com/nakashin1/developing-ansible-network-module3https://tracks.redhat.com/c/65-42?x=8XYa3o&lx=t84IoG
今日の内容 背景 対応前の開発・提供 なぜ Ansible Collections 対応することにしたか 現場軸の話 Ansible Colelctions 開発 OSSとして公開 ビジネス軸の話 会社として対応しよう!と判断した理由、議論した内容 まとめAnsible Night 2021.07#ansiblejp4
今日の内容 背景 対応前の開発・提供 なぜ Ansible Collections 対応することにしたか 現場軸の話 Ansible Colelctions 開発 OSSとして公開 ビジネス軸の話 会社として対応しよう!と判断した理由、議論した内容 まとめAnsible Night 2021.07#ansiblejp5
背景今日の内容対応前の開発・提供 独自のパッケージを用意して、お客様に提供・OSS の Ansible に含まれていないモジュールの為ユーザのAnsible環境に、製品用のモジュールをインストールする事で利用可能に必要なファイル・Module・Plugininstallermodules for AnsibleAnsible Night 2021.07#ansiblejpinstall独自にパッケージ化6
背景今日の内容開発課題 Ansibleのバージョン追従(Ver毎に変わるソース構成の変更・機能追加への対応)必要なファイル installermodules for AnsibleAnsible v2.7 Ansible v2.8Ansible v2.9・ソースツリー(PATH情報)の変更対応・Ansibleの機能追加によるファイルの修正確認- Optionで対応できるものはよいが、そもそもソースで対応していないと実現できない機能もAnsible Night 2021.07#ansiblejp7
背景ユーザーへの提供方法 お客様の入り口 会社のホームページからフォームの入力or 訪問時に直接案内 提供方法 ユーザ毎に、個別に送付(インストーラ含むパッケージ、ドキュメント類、リリースノート 等)※専用ドキュメントも、単独でDLする場合はHP経由(要フォーム入力)Ansible Night 2021.07#ansiblejp8
背景 Ansible Night 2021.07#ansiblejpこれまでのリリース履歴 Ansibleのリリース、担当製品のリリース2018 2019 2020 2021AnsibleRelease担当製品のModule Releasev2.72018-10v2.82019-05v2.92019-10v2.102020-08v2.112021-04v1.02019-04v1.12019-10v1.22021-01Ansible2.7対応初回リリースAnsible2.8対応機能追加・不具合修正Ansible2.9対応不具合修正 初回リリース後、AnsibleのVerupに追従するだけのVerup作業が結構大変になり、、、 そんな中での、Ansible Collections の実装、登場でした。96ヵ月 5ヵ月 15ヵ月
背景対応する理由 開発面 開発時のソース管理が楽になる インストーラは ansible-galaxy に変更<Ansible 2.9の課題 / Ansible 2.10以降の特徴>・モジュールの修正や、機能追加をAnsibleにリリースに合わせる必要があるが、Ansible本体とCollectionのリリースは、非同期で対応可能→ この恩恵は、OSS Ansible に取り込んでいないので、我々としては大きく変わらず・ベンダーのモジュール類は、Collectionという単位で外だしへ→ Ansibleのバージョン毎のPATH情報(ソースツリー) への依存がなくなり、正常なソース管理が可能にAnsible Night 2021.07#ansiblejp10
背景対応する理由 提供面 社内工数の削減・個別送付 から Ansible GalaxyサイトからのDL、GitHubでの公開 に変更→ 比較的クローズな状況から オープンな展開になる事への期待 ユーザの利便性向上ユーザから見ると、Ansible Galaxy サイトから DL → Install という他のベンダー製モジュールと同じようなオペレーションで構築が可能に ユーザの声 『Ansible Collections対応の要望』は、多く頂いた11Ansible Night 2021.07#ansiblejp
今日の内容 背景 対応前の開発・提供 なぜ Ansible Collections 対応することにしたか 現場軸の話 Ansible Colelctions 開発 OSSとして公開 ビジネス軸の話 会社として対応しよう!と判断した理由、議論した内容 まとめAnsible Night 2021.07#ansiblejp12
現場軸の話Ansible Collection 開発Ansible Night 2021.07#ansiblejp13 開発にあたって 公式ドキュメントGalaxy User GuideGalaxy Developer Guide 既に公開されているコレクションのファイルhttps://github.com/ansible-collections ブログ[Ansible] 自作のコレクションを作ってGalaxyで公開するまでhttps://docs.ansible.com/ansible/latest/galaxy/user_guide.htmlhttps://docs.ansible.com/ansible/latest/galaxy/dev_guide.htmlちょうど対応調査をしていたタイミングで、非常に助けられました。Thanks @zaki_hmkc
現場軸の話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.htmlAnsible Night 2021.07#ansiblejp14https://galaxy.ansible.com/docs/contributing/namespaces.html#galaxy-namespace-limitationshttps://galaxy.ansible.com/docs/contributing/namespaces.html#requesting-additional-namespaces
現場軸の話Ansible Collection 開発時のポイント Ansible Galaxy(社内用を構築) Ansible Galaxy は社内に構築しました。・AGは、一度アップロードしたモジュールは消せず、同一バージョンを再アップする事もできない為・モジュールアップロード後のLINKや表示を確認したり、社内検証や情報共有の用途として必要でした。https://github.com/ansible/galaxy#installingAnsible Night 2021.07#ansiblejphttps://github.com/ansible/galaxy/blob/devel/CONTRIBUTING.rst15・LINK の動作確認・表示内容の確認・社内での検証用途
現場軸の話 collection_prep(Collectionsのドキュメントを自動生成するツール) Ansibleモジュールのソース内上部の、ドキュメントセクションから、rstファイルを自動生成してくれる。 自動生成した、ドキュメントのLINKを、README.md に反映してくれる。 meta/runtime.ymlの、Ansible対応バージョンを、README.mdに反映してくれる。ANSIBLE COLLECTIONSのモジュールドキュメントを自動生成するAnsible Night 2021.07#ansiblejpAnsible Collection 開発時のポイントhttps://github.com/ansible-network/collection_prepこのブログ記事がなかったら気付きもしませんでした。Thanks @sky_jokerxx16
現場軸の話 テスト自動化の仕組み いわゆる CI/CD の仕組み(commit毎 / version作成毎 に自動的にテスト実施)はまだ未構築ですが、Ansible Collections の対応に合わせて テスト自動化の実行部分を構築(チームメンバに感謝!)Ansible Night 2021.07#ansiblejpAnsible Collection 開発時のポイント■概要・テスト実行の一部はAnsible、確認部分はスクラッチで作成※Playbook実行結果の差分を確認できるので、AnsibleのVersionUp による実行結果の差分抽出も可能に■テスト内容(項目のベースは既存のテスト仕様書)・全モジュールの全オプションを実機と連携して実行・Ansible Galaxy との連携テスト- ansible-galaxy コマンドのオペレーション- DLしたファイルの内容確認・ラッシュ試験相当(Playbookの連続実行)17
現場軸の話 ansible-test sanity 静的コードチェッカーで、Ansibleのコーディング規約の確認ができる。 ドキュメントセクションと、コードが一致しているかなども確認してくれる。 モジュールオプションの選択肢、デフォルト値、型 など合っているかどうかAnsible Night 2021.07#ansiblejpAnsible Collection 開発時のポイント18https://docs.ansible.com/ansible/latest/dev_guide/testing_sanity.htmlhttps://docs.ansible.com/ansible/latest/dev_guide/testing/sanity/index.html#all-sanity-tests
現場軸の話Ansible Collection 開発の流れ 開発~テスト開発collection_prep公開用コードの生成ansible-galasy collection build↓Ansible Galaxy用 パッケージ生成LICENSE docs pluginsREADME.md galaxy.yml requirements.txtchangelogs meta testsBuild用PlaybookFILES.json changelogs requirements.txtLICENSE docs testsMANIFEST.json metaREADME.md pluginsseiko-smartcs-x.y.z.tar.gzテスト自動化(社内用)バージョン名19Ansible Night 2021.07#ansiblejpansible-test sanity
現場軸の話OSSとして公開 基本的な考えは、『公開情報』として扱うというポリシー 会社として、OSSを公開するという事自体が初の試みだったので、様々な確認は発生しましたが部門内外含めて、後押しするような声が多く大変助かりました。 公開作業は、ソフトウェアの認定を終えた後に行う。 Ansible Collectionsは、ファイルを指定したインストールも可能なので、必ずしも公開する必要はないと思っています。開発認定作業公開OK20$ ansible-galaxy collection install seiko-smartcs-1.4.0.tar.gzAnsible Night 2021.07#ansiblejp
現場軸の話公開時$ ansible-galaxy collection install seiko.smartcsansible_collectionsansibleseikonetcommonsmartcsFILES.json changelogs requirements.txtLICENSE docs testsMANIFEST.json metaREADME.md pluginsユーザ環境のディレクトリ開発したソース一式はGitHubにアップロード GitHubにアップロードしたソースにansible-galaxy collection buildを実行して出来たファイルをAnsible GalaxyにアップロードAnsible Night 2021.07#ansiblejp21
Ansible Night 2021.07#ansiblejp最近のリリース Ansibleのリリース、担当製品のリリース2018 2019 2020 2021v2.72018-10v2.82019-05v2.92019-10base v2.102020-08core v2.112021-04v1.02019-04v1.12019-10v1.22021-01 Ansible Collection対応して、体制が整ってきた。 標準化されたエコシステムのルールに従う事でやる事が明確に。22現場軸の話v1.3.02021-04core v2.122021-10?v1.4.02021-075ヵ月 6ヵ月 15ヵ月 6ヵ月 3ヵ月Ansible Collections対応Ansible4系 (-core2.11)対応
背景 対応前の開発・提供 なぜ Ansible Collections 対応することにしたか 現場軸の話 Ansible Colelctions 開発 OSSとして公開 ビジネス軸の話 会社として対応しよう!と判断した理由、議論した内容 まとめAnsible Night 2021.07#ansiblejp23
ビジネス軸の話会社としての考えは もともと、Ansible Module は、製品の 付加価値向上 という位置づけ↓Ansible Collections対応 / OSS化 について 意見の衝突などはありませんでした。Ansibleのエコシステムに対応する事が、ユーザにとっての使いやすさになる、という考え Ansibleに関するモジュールやドキュメントについては全て公開情報に変更 元々は、DL時にユーザ情報の入力が必要だった Ansible対応して約2年、利用ユーザも少しずつ増えてきたので タイミングとしても良かった。24Ansible Night 2021.07#ansiblejp
まとめ Ansible Collections に対応する為に色々と取り組んだ結果 まだまだ改善点はたくさんあると思っていますが、(特にCI/CD周り)なんとか継続してメンテナンスしていくことができる体制になってきた。 OSS対応をはじめとした社内のノウハウも蓄積、いいきっかけに Ansible Galaxyの DL数をたまに覗く楽しみ (便りがないのは良い便り) これからも Ansible の Verup に戦々恐々しながらも新しい技術を楽しめればなとAnsible Night 2021.07#ansiblejp25
まとめ 本日の発表内容について 自分自身もAnsibleコミュニティの方の情報に非常に助けられました! 運用での使い方と比較して、開発視点の情報は非常に少ないと思いますのでAnsible Collections対応 を考えている方に、今回の体験談が役に立てたら幸いです。Ansible Night 2021.07#ansiblejp26
ご清聴ありがとうございました。Ansible Night 2021.07#ansiblejpAnsible Night 2021.07#ansiblejp