Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Supporting_AnsibleCollections
Search
naka-shin1
July 20, 2021
Programming
0
750
Supporting_AnsibleCollections
Ansible Night 2021.07 のセッション資料
naka-shin1
July 20, 2021
Tweet
Share
More Decks by naka-shin1
See All by naka-shin1
OverviewOfAnsibleFest2022_and_OnsiteReport
nakashin1
0
1k
module-developing_and_operation
nakashin1
1
3k
developing_ansible_network_module
nakashin1
3
1.8k
network_cli_and_playbook
nakashin1
2
3.9k
Other Decks in Programming
See All in Programming
A Journey of Contribution and Collaboration in Open Source
ivargrimstad
0
950
WebフロントエンドにおけるGraphQL(あるいはバックエンドのAPI)との向き合い方 / #241106_plk_frontend
izumin5210
4
1.4k
Jakarta EE meets AI
ivargrimstad
0
100
TypeScript Graph でコードレビューの心理的障壁を乗り越える
ysk8hori
2
1.1k
GitHub Actionsのキャッシュと手を挙げることの大切さとそれに必要なこと
satoshi256kbyte
5
430
Pinia Colada が実現するスマートな非同期処理
naokihaba
4
230
ヤプリ新卒SREの オンボーディング
masaki12
0
130
Kaigi on Rails 2024 〜運営の裏側〜
krpk1900
1
230
CSC509 Lecture 09
javiergs
PRO
0
140
ローコードSaaSのUXを向上させるためのTypeScript
taro28
1
620
3 Effective Rules for Using Signals in Angular
manfredsteyer
PRO
0
100
Micro Frontends Unmasked Opportunities, Challenges, Alternatives
manfredsteyer
PRO
0
100
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
693
190k
Unsuck your backbone
ammeep
668
57k
Teambox: Starting and Learning
jrom
133
8.8k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Documentation Writing (for coders)
carmenintech
65
4.4k
Designing for Performance
lara
604
68k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
The Language of Interfaces
destraynor
154
24k
For a Future-Friendly Web
brad_frost
175
9.4k
The Art of Programming - Codeland 2020
erikaheidi
52
13k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
Transcript
モジュールが作りやすくなったよ! Ansible Collections 概要紹介 & 対応してみたベンダー 体験談 Ansible Night 2021.07
#ansiblejp
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 #ansiblejp 2
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
今日の内容 背景 対応前の開発・提供 なぜ Ansible Collections 対応することにしたか
現場軸の話 Ansible Colelctions 開発 OSSとして公開 ビジネス軸の話 会社として対応しよう!と判断した理由、議論した内容 まとめ Ansible Night 2021.07 #ansiblejp 4
今日の内容 背景 対応前の開発・提供 なぜ Ansible Collections 対応することにしたか
現場軸の話 Ansible Colelctions 開発 OSSとして公開 ビジネス軸の話 会社として対応しよう!と判断した理由、議論した内容 まとめ Ansible Night 2021.07 #ansiblejp 5
背景 今日の内容 対応前の開発・提供 独自のパッケージを用意して、お客様に提供 ・OSS の Ansible に含まれていないモジュールの為 ユーザのAnsible環境に、製品用のモジュールをインストールする事で利用可能に
必要な ファイル ・Module ・Plugin installer modules for Ansible Ansible Night 2021.07 #ansiblejp install 独自にパッケージ化 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
背景 ユーザーへの提供方法 お客様の入り口 会社のホームページからフォームの入力 or 訪問時に直接案内
提供方法 ユーザ毎に、個別に送付 (インストーラ含むパッケージ、ドキュメント類、リリースノート 等) ※専用ドキュメントも、単独でDLする場合はHP経由(要フォーム入力) Ansible Night 2021.07 #ansiblejp 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ヵ月
背景 対応する理由 開発面 開発時のソース管理が楽になる インストーラは ansible-galaxy に変更
<Ansible 2.9の課題 / Ansible 2.10以降の特徴> ・モジュールの修正や、機能追加をAnsibleにリリースに合わせる必要があるが、 Ansible本体とCollectionのリリースは、非同期で対応可能 → この恩恵は、OSS Ansible に取り込んでいないので、我々としては大きく変わらず ・ベンダーのモジュール類は、Collectionという単位で外だしへ → Ansibleのバージョン毎のPATH情報(ソースツリー) への依存がなくなり、 正常なソース管理が可能に Ansible Night 2021.07 #ansiblejp 10
背景 対応する理由 提供面 社内工数の削減 ・個別送付 から Ansible GalaxyサイトからのDL、GitHubでの公開
に変更 → 比較的クローズな状況から オープンな展開になる事への期待 ユーザの利便性向上 ユーザから見ると、Ansible Galaxy サイトから DL → Install という 他のベンダー製モジュールと同じようなオペレーションで構築が可能に ユーザの声 『Ansible Collections対応の要望』は、多く頂いた 11 Ansible Night 2021.07 #ansiblejp
今日の内容 背景 対応前の開発・提供 なぜ Ansible Collections 対応することにしたか
現場軸の話 Ansible Colelctions 開発 OSSとして公開 ビジネス軸の話 会社として対応しよう!と判断した理由、議論した内容 まとめ Ansible Night 2021.07 #ansiblejp 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
現場軸の話 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
現場軸の話 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 の動作確認 ・表示内容の確認 ・社内での検証用途
現場軸の話 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
現場軸の話 テスト自動化の仕組み いわゆる 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
現場軸の話 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
現場軸の話 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
現場軸の話 OSSとして公開 基本的な考えは、『公開情報』として扱うというポリシー 会社として、OSSを公開するという事自体が初の試みだったので、様々な確認は発生しましたが 部門内外含めて、後押しするような声が多く大変助かりました。 公開作業は、ソフトウェアの認定を終えた後に行う。
Ansible Collectionsは、ファイルを指定したインストールも可能なので、 必ずしも公開する必要はないと思っています。 開発 認定 作業 公開 OK 20 $ ansible-galaxy collection install seiko-smartcs-1.4.0.tar.gz Ansible Night 2021.07 #ansiblejp
現場軸の話 公開時 $ 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
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) 対応
背景 対応前の開発・提供 なぜ Ansible Collections 対応することにしたか
現場軸の話 Ansible Colelctions 開発 OSSとして公開 ビジネス軸の話 会社として対応しよう!と判断した理由、議論した内容 まとめ Ansible Night 2021.07 #ansiblejp 23
ビジネス軸の話 会社としての考えは もともと、Ansible Module は、製品の 付加価値向上 という位置づけ ↓ Ansible
Collections対応 / OSS化 について 意見の衝突などはありませんでした。 Ansibleのエコシステムに対応する事が、ユーザにとっての使いやすさになる、という考え Ansibleに関するモジュールやドキュメントについては全て公開情報に変更 元々は、DL時にユーザ情報の入力が必要だった Ansible対応して約2年、利用ユーザも少しずつ増えてきたので タイミングとしても良かった。 24 Ansible Night 2021.07 #ansiblejp
まとめ Ansible Collections に対応する為に色々と取り組んだ結果 まだまだ改善点はたくさんあると思っていますが、(特にCI/CD周り) なんとか継続してメンテナンスしていくことができる体制になってきた。 OSS対応をはじめとした社内のノウハウも蓄積、いいきっかけに
Ansible Galaxyの DL数をたまに覗く楽しみ (便りがないのは良い便り) これからも Ansible の Verup に戦々恐々しながらも新しい技術を楽しめればなと Ansible Night 2021.07 #ansiblejp 25
まとめ 本日の発表内容について 自分自身もAnsibleコミュニティの方の情報に非常に助けられました! 運用での使い方と比較して、開発視点の情報は非常に少ないと思いますので Ansible Collections対応 を考えている方に、今回の体験談が役に立てたら幸いです。
Ansible Night 2021.07 #ansiblejp 26
ご清聴ありがとうございました。 Ansible Night 2021.07 #ansiblejp Ansible Night 2021.07 #ansiblejp