SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
Ansible 2.10 と Collection
株式会社エーピーコミュニケーションズ
技術開発部 自動化グループ
横地 晃
1
2020/10/07 AP Tech Fest
内部構造が変わった Ansible のおはなし
はじめに
 先日、Ansible 2.10.0 がリリースされました。
 Collection によるモジュールの配布が本格的となり、
標準モジュール は 70程度に減りました。
 Ansible 2.10 と Collection の関係や、ポータビリティなどをご紹介します。
2
2.9 2.10
自己紹介
3
所属
(株)エーピーコミュニケーションズ
技術開発部 自動化グループ
業務 ネットワーク自動化の支援、各種アウトプット
コミュニティ Ansible ユーザー会、JANOG など
共著
寄稿
Ansible 実践ガイド 第3版
Software Design 2018年12月号 他
横地 晃 @akira6592
https://book.impress.co.jp/books/1118101094
https://tekunabe.hatenablog.jp/
てくなべ(ブログ)
kindle 版半額!
(10/7現在)
内容
 Ansible 2.10 の基本
 Ansible 2.10 の導入
 Collection の操作
 今までの Playbook は動くの?
 気になるアップデート
 まとめ
4
Ansible 2.10 の基本
標準モジュールが激減
5
Collection の本格運用により標準モジュールが激減
 Ansible 2.9 までは 3000 以上あった標準モジュールは 2.10 では約 70 に
 他のモジュールは「Collection」による配布に移行
 ポータビリティはある程度確保されているため、過度な心配は不要(後述)
6
基本機能
標準モジュール
基本機能
標準モジュール
移行された
Collection 群
移行
※ 標準モジュール: https://docs.ansible.com/ansible/latest/collections/ansible/builtin/index.html#module-plugins
※ Ansible Galaxy や Automation Hub では、2.9 での標準モジュールから移行された Collection だけなく、独自のものも管理されている
2.9 2.10
Ansible Galaxy や
Automation Hub
基本機能と標準モジュールは ansible-base に
 基本機能と標準モジュールは ansible-base と呼ばれる
 「pip install ansible」は ansible-base と 、移行された Collection のセット
7
2.9 ansible-base 2.10
基本機能
標準モジュール
基本機能
標準モジュール
ansible 2.10
移行された
Collection 群
Ansible Galaxy や
Automation Hub
※ ansible-base リリース履歴: 2020/08/14 2.10.0、2020/09/15 2.10.1、2020/10/06 2.10.2
※ ansible リリース履歴: 2020/09/23 2.10.0
Collection
Collection
そもそも Collection とは
 モジュールやプラグインなどをまとめて配布する単位
 Ansible Galaxy や Automation Hub 経由で配布
 リポジトリは https://github.com/ansible-collections 配下や独自管理
 hoge.fuga のような形式の名前空間が設けられる
 含まれるモジュール類は hoge.fuga.piyo という形式(FQCN)
8
例: ansible.netcommon Collection
モジュール例 プラグイン例
ansible.necommon.cli_command
ansible.necommon.cli_config
ansible.necommon.network
ansible.necommon.ipaddr
※ FQCN: Fully Qualified Collection Name
※ Collection を取り巻く概要: https://github.com/ansible-collections/overview
モジュール
プラグイン
:
Ansible Galaxy による Collection の配布
 例: ansible.netcommon Collection
 https://galaxy.ansible.com/ansible/netcommon
9
なんで ansible-base と collection に分かれたの?(私見含む)
 ansible 本体と Collection のリリースサイクルを分類
 本体の安定性と新機能の取捨選択を両立
 「新しいモジュールを使いたいけど ansible のバージョンアップは
影響が大きそうでできない・・」といった悩みがなくなりそう
10
ansible-base 2.10
基本機能
標準モジュール
必要な Collection の
インストール・アップデート
Collection 群
※ FQCN: Fully Qualified Collection Name
※ Collection を取り巻く概要: https://github.com/ansible-collections/overview
※ 参考 Collections signal major shift in Ansible ecosystem https://www.jeffgeerling.com/blog/2020/collections-signal-major-shift-ansible-ecosystem
Ansible 2.10 の導入
インストール、アップグレード
11
インストール
 ansible-base
 ansible 基本機能と標準モジュール
 ansible
 ansible-base と 移行された Collection のセット
12
pip install ansible-base
pip install ansible
基本機能
標準モジュール
移行した
Collection 群
今まで通り
※ pip install ansible でインストールした場合、セットの Collection は <python環境>/lib/python3.X/site-packages/ansible_collections/ 配下にインストールされる
アップグレード
 ansible 2.9 から ansible 2.10 へのアップグレード
 一度アインインストールしてから再インストール
 直接アップグレードできないのは ansible 2.10.0 時点の Known Issue
13
pip uninstall ansible
pip install ansible
venv などで別環境に
したほうがよさそう
Collection の操作
インストール、アップグレード、確認
14
これからは Collection を操作する機会が増えそう
 ansible のセットの Collection をアップグレードしたい場合
 ansible-base をインストールしたあと、標準モジュール以外を利用する場合
 など
15
Collection のインストール
 Ansible Galaxy や Automation Hub で対象の Collection を見つけてインストール
 デフォルトでは ~/.ansible/collections/ansible_collections/ コレクション名/ にインストール
 -p オプションや、ansible.cfg の [defaults] 内 collections_path の指定で変更可能
16
ansible-galaxy collection install コレクション名
※ Installing collections: https://docs.ansible.com/ansible/latest/user_guide/collections_using.html#installing-collections
インストールコマンド
が載っている
Collection のアップグレード
 現状、アップグレード専用コマンドがないため、
-f オプション で強制的に最新をインストール
17
ansible-galaxy collection install コレクション名 -f
※ Installing collections: https://docs.ansible.com/ansible/latest/user_guide/collections_using.html#installing-collections
ポイント
Collection の確認
 インストールした Collection をコマンドで確認可能
 デフォルトでは ~/.ansible/collections/ansible_collections/ 配下を検索
 つまり pip install ansible でセットでインストールされた Collection がある
<python環境>/lib/python3.X/site-packages/ansible_collections/ は検索しない。
 ansible 2.10.0 時点の Known Issue。明示的に検索先を指定する場合は -p オプションなどを利用する
18
ansible-galaxy collection list
※ Listing collections: https://docs.ansible.com/ansible/latest/user_guide/collections_using.html#listing-collections
※ Known Issues: https://docs.ansible.com/ansible/latest/porting_guides/porting_guide_2.10.html#known-issues
(a210) [sakana@centos7 ~]$ ansible-galaxy collection list
# /home/sakana/.ansible/collections/ansible_collections
Collection Version
-------------------- -------
ansible.netcommon 1.1.2
cisco.nxos 1.1.0
netbox.netbox 1.0.0
実行例
補足1: Ansible Tower で利用する Collection を自動インストールする
 プロジェクトの collections/requirements.yml に
必要な Collection 名を指定しておくと自動でインストールされる
19
※ Collections Support: https://docs.ansible.com/ansible-tower/latest/html/userguide/projects.html#collections-support
※ requirements.yml の書き方例 https://docs.ansible.com/ansible/latest/user_guide/collections_using.html#install-multiple-collections-with-a-requirements-file
---
collections:
- ansible.netcommon
例
補足2: Collection と Red Hat サポートなど
 Ansible Supported Collections, Versioning, and Release Strategy
 https://access.redhat.com/articles/4993781
 Ansible Automation Platform Certified Content
 https://access.redhat.com/articles/3642632
20
今までの Playbook は動くの?
気になるポータビリティ
21
サンプル Playbook(準備)
 環境
 python 3.6.8、新規 venv に paramiko インストール
 pip install ansible でインストール
 Playbook
 Ansible 2.9 向けに書いた右記のもの
22
---
- hosts: ios
gather_facts: false
tasks:
- name: show ip route
ios_command:
commands:
- show ip route
register: resgister_show_ip_route
- name: debug route
debug:
msg: "{{ resgister_show_ip_route.stdout_lines }}"
標準ではなくなったモジュール
デモ
サンプル Playbook(実行)
 Playbook の修正なしに動いた
23
(a2100) [root@centos7 stumble]# ansible-playbook -i inventory.ini ios_show.yml
PLAY [ios] ***********************************************************************************
TASK [show ip route] *************************************************************************
ok: [rt01]
TASK [debug route] ***************************************************************************
ok: [rt01] => {
"msg": [
[
"Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP",
...(略)...
"C 10.255.255.1/32 is directly connected, Loopback0",
"O 10.255.255.2/32 [110/2] via 10.0.0.2, 04:59:05, GigabitEthernet0/3",
" 192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks",
"C 192.168.1.0/24 is directly connected, GigabitEthernet0/0",
"L 192.168.1.11/32 is directly connected, GigabitEthernet0/0"
]
]
}
PLAY RECAP ***********************************************************************************
rt01 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
デモ
動く理由1: Collection がセットだから
 「pip install ansible」で、移行された Collection もセットでインストールされる
 そのため 2.9 までの標準モジュールが 2.10 でも利用できる
 ただし、移行後も開発が進むうえで仕様変更や廃止もあり得る
24
ansible-base 2.10
基本機能
標準モジュール
ansible 2.10
移行された
collection 群
※ セットの Collection の定義 (ansible 2.10.0 の例): https://github.com/ansible-community/ansible-build-data/blob/main/2.10/ansible-2.10.0.deps
動く理由2: リダイレクト機能があるから
 コレクション名を含まないモジュール名の指定(例 ios_command)でも
cisco.ios.ios_command のような FQCN に解決するリダイレクト機能がある
 ansible-base としての機能
 もともと標準でなかったモジュールの定義は含まれない
25※ リダイレクトの定義 (ansible-base 2.10.1 の例): https://github.com/ansible/ansible/blob/v2.10.1/lib/ansible/config/ansible_builtin_runtime.yml
plugin_routing:
# ...(略)...
modules:
# ...(略)...
ios_command:
redirect: cisco.ios.ios_command
ios_static_route:
redirect: cisco.ios.ios_static_route
# ...(略)...
単に ios_command と指定すれば
cisco.ios.ios_command と
解釈してくれる
とはいえ Porting Guide はいつも通り要チェック
 バージョンごとに移行時の注意点などが記載されている
 Ansible-base 2.10 Porting Guide
 https://docs.ansible.com/ansible/latest/porting_guides/porting_guide_base_2.10.html
 Ansible 2.10 Porting Guide
 https://docs.ansible.com/ansible/latest/porting_guides/porting_guide_2.10.html
26
タスクごとの FQCN 指定が推奨
27
引用元: What's new with Ansible Content Collections
https://www.ansible.com/resources/webinars-training/whats-new-with-ansible-content-collections-webinar
FQCN
気になるアップデート
CHANGELOG などから地味に便利、ちょっと注意なアップデートを抜粋
28
地味に便利
 タスクのタイムアウトが設定可能に
 接続時間+処理時間のタイムアウトを指定、デフォルトは0(タイムアウトなし)
 https://docs.ansible.com/ansible/latest/reference_appendices/config.html#task-timeout
 ディレクトリやパスの結合に便利な path_join フィルター追加
 python の os.path.join 相当、ディレクトリ名の後の / ありなしを気にしなくていい
 https://tekunabe.hatenablog.jp/entry/2020/09/17/ansible_path_join
 regexp_replace フィルターがマルチラインサポート
 https://github.com/ansible/ansible/issues/61985
 map や selectattr などのあとの | list が不要に
 https://github.com/ansible/ansible/pull/68014
29※ ansible-base としての changelog: https://github.com/ansible/ansible/blob/stable-2.10/changelogs/CHANGELOG-v2.10.rst
ちょっと注意
 CONDITIONAL_BARE_VARS のデフォルトが False に変更
 assert モジュールや when で 変数名のみを指定してる場合は注意
 2.9で [DEPRECATION WARNING]: evaluating 'hogevar' as a bare variable のような警告があったら特に
 True/False が反転することも
 https://twitter.com/akira6592/status/1294869956891275265
 https://docs.ansible.com/ansible/latest/reference_appendices/config.html#conditional-bare-vars
 hash_behaviour が Deprecated 扱い
 代わりに combine フィルターを利用
 https://docs.ansible.com/ansible/devel/reference_appendices/config.html#default-hash-
behaviour
30※ ansible-base としての changelog: https://github.com/ansible/ansible/blob/stable-2.10/changelogs/CHANGELOG-v2.10.rst
まとめ
31
まとめ
 ansible 2.10 から Collection の本格運用が開始
 ansible-base = 基本機能 + 標準モジュール
 ansible = ansible-base + 移行された Collection
 Collection 移行に伴う影響は、過度に心配する必要はなさそう
 Collection のインストールセットやリダイレクトによりポータビリティは確保
 ゆくゆくは FQCN 表記にするのがよさそう
 その他の機能追加も多々
32
参考
 公式
 Ansible Collections Overview
 https://github.com/ansible-collections/overview
 FAQ: Where did all the modules go?
 https://docs.ansible.com/ansible/latest/reference_appendices/faq.html#where-did-all-the-modules-go
 changelog
 https://github.com/ansible/ansible/blob/stable-2.10/changelogs/CHANGELOG-v2.10.rst
 Ansible-base 2.10 Porting Guide
 https://docs.ansible.com/ansible/latest/porting_guides/porting_guide_base_2.10.html
 Ansible 2.10 Porting Guide
 https://docs.ansible.com/ansible/latest/porting_guides/porting_guide_2.10.html
 個人ブログ
 [Ansible] モジュールの指定などを FQCN 表記に移行する手順
 https://tekunabe.hatenablog.jp/entry/2020/09/19/ansible_fqcn
 [Ansible] role 単位で collections を指定する
 https://tekunabe.hatenablog.jp/entry/2020/09/20/ansible_role_collections
33

Más contenido relacionado

La actualidad más candente

Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
 

La actualidad más candente (20)

DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 
レシピの作り方入門
レシピの作り方入門レシピの作り方入門
レシピの作り方入門
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
 
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
 
Vacuum徹底解説
Vacuum徹底解説Vacuum徹底解説
Vacuum徹底解説
 
Ansible ではじめる ネットワーク自動化(Ansible 2.9版)
Ansible ではじめる ネットワーク自動化(Ansible 2.9版)Ansible ではじめる ネットワーク自動化(Ansible 2.9版)
Ansible ではじめる ネットワーク自動化(Ansible 2.9版)
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
UEFIによるELFバイナリの起動
UEFIによるELFバイナリの起動UEFIによるELFバイナリの起動
UEFIによるELFバイナリの起動
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
 
HTTP/2 入門
HTTP/2 入門HTTP/2 入門
HTTP/2 入門
 

Similar a Ansible 2.10 と Collection

OpenStack-Ansibleで作るOpenStack HA環境 Mitaka版(期間限定公開)
OpenStack-Ansibleで作るOpenStack HA環境 Mitaka版(期間限定公開)OpenStack-Ansibleで作るOpenStack HA環境 Mitaka版(期間限定公開)
OpenStack-Ansibleで作るOpenStack HA環境 Mitaka版(期間限定公開)
VirtualTech Japan Inc.
 
OpenStack-ansibleで作るOpenStack HA環境 Mitaka版
OpenStack-ansibleで作るOpenStack HA環境 Mitaka版OpenStack-ansibleで作るOpenStack HA環境 Mitaka版
OpenStack-ansibleで作るOpenStack HA環境 Mitaka版
VirtualTech Japan Inc.
 

Similar a Ansible 2.10 と Collection (20)

OpenCV2.2 Install Guide ver.0.5
OpenCV2.2 Install Guide ver.0.5OpenCV2.2 Install Guide ver.0.5
OpenCV2.2 Install Guide ver.0.5
 
Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-
 
Ansible troubleshooting 101_2021
Ansible troubleshooting 101_2021Ansible troubleshooting 101_2021
Ansible troubleshooting 101_2021
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
 
Ansibleではじめるサーバー・ネットワークの自動化(2018/07/05)
Ansibleではじめるサーバー・ネットワークの自動化(2018/07/05)Ansibleではじめるサーバー・ネットワークの自動化(2018/07/05)
Ansibleではじめるサーバー・ネットワークの自動化(2018/07/05)
 
Ansible2.9 ネットワーク対応のアップデート #ansiblejp
Ansible2.9 ネットワーク対応のアップデート #ansiblejpAnsible2.9 ネットワーク対応のアップデート #ansiblejp
Ansible2.9 ネットワーク対応のアップデート #ansiblejp
 
Displaylink : Reloaded
Displaylink : ReloadedDisplaylink : Reloaded
Displaylink : Reloaded
 
Ansibleではじめるサーバー・ネットワークの自動化(2018/08/22)
Ansibleではじめるサーバー・ネットワークの自動化(2018/08/22)Ansibleではじめるサーバー・ネットワークの自動化(2018/08/22)
Ansibleではじめるサーバー・ネットワークの自動化(2018/08/22)
 
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみたKubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
 
What is an Ansible?
What is an Ansible?What is an Ansible?
What is an Ansible?
 
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
 
Ansible Fest 2020 技術トピックまとめ
Ansible Fest 2020 技術トピックまとめAnsible Fest 2020 技術トピックまとめ
Ansible Fest 2020 技術トピックまとめ
 
Open-FCoE_osc2011tokyofall_20111119
Open-FCoE_osc2011tokyofall_20111119Open-FCoE_osc2011tokyofall_20111119
Open-FCoE_osc2011tokyofall_20111119
 
Visual studio 2015 update1 ctpとcsi
Visual studio 2015 update1 ctpとcsiVisual studio 2015 update1 ctpとcsi
Visual studio 2015 update1 ctpとcsi
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
 
Docker技術情報アップデート 2015年7月号
Docker技術情報アップデート 2015年7月号Docker技術情報アップデート 2015年7月号
Docker技術情報アップデート 2015年7月号
 
OpenStack-Ansibleで作るOpenStack HA環境 Mitaka版(期間限定公開)
OpenStack-Ansibleで作るOpenStack HA環境 Mitaka版(期間限定公開)OpenStack-Ansibleで作るOpenStack HA環境 Mitaka版(期間限定公開)
OpenStack-Ansibleで作るOpenStack HA環境 Mitaka版(期間限定公開)
 
OpenStack-ansibleで作るOpenStack HA環境 Mitaka版
OpenStack-ansibleで作るOpenStack HA環境 Mitaka版OpenStack-ansibleで作るOpenStack HA環境 Mitaka版
OpenStack-ansibleで作るOpenStack HA環境 Mitaka版
 
Pdp11 on-fpga
Pdp11 on-fpgaPdp11 on-fpga
Pdp11 on-fpga
 
Cloud OS「Apache CloudStack」をお手軽に使ってみる方法
Cloud OS「Apache CloudStack」をお手軽に使ってみる方法Cloud OS「Apache CloudStack」をお手軽に使ってみる方法
Cloud OS「Apache CloudStack」をお手軽に使ってみる方法
 

Más de akira6592

Más de akira6592 (20)

新人研修資料 向き合うエンジニア
新人研修資料 向き合うエンジニア新人研修資料 向き合うエンジニア
新人研修資料 向き合うエンジニア
 
Ansible とネットワーク自動化の概要(SmartCS と Ansible の連携による自動化の可能性を体験!)
Ansible とネットワーク自動化の概要(SmartCS と Ansible の連携による自動化の可能性を体験!)Ansible とネットワーク自動化の概要(SmartCS と Ansible の連携による自動化の可能性を体験!)
Ansible とネットワーク自動化の概要(SmartCS と Ansible の連携による自動化の可能性を体験!)
 
Ansible 実践ガイド第3版 ネットワーク担当としてのふりかえり #インフラエンジニアBooks
Ansible 実践ガイド第3版 ネットワーク担当としてのふりかえり #インフラエンジニアBooksAnsible 実践ガイド第3版 ネットワーク担当としてのふりかえり #インフラエンジニアBooks
Ansible 実践ガイド第3版 ネットワーク担当としてのふりかえり #インフラエンジニアBooks
 
Ansible でお世話になっている機能と拡張
Ansible でお世話になっている機能と拡張Ansible でお世話になっている機能と拡張
Ansible でお世話になっている機能と拡張
 
自動化の下ごしらえ
自動化の下ごしらえ自動化の下ごしらえ
自動化の下ごしらえ
 
向き合うエンジニア 2020年度版
向き合うエンジニア 2020年度版向き合うエンジニア 2020年度版
向き合うエンジニア 2020年度版
 
はじめてAnsibleのバグ修正に協力してみた
はじめてAnsibleのバグ修正に協力してみたはじめてAnsibleのバグ修正に協力してみた
はじめてAnsibleのバグ修正に協力してみた
 
CML-Personal (VIRL2)のインストールと基本機能
CML-Personal (VIRL2)のインストールと基本機能CML-Personal (VIRL2)のインストールと基本機能
CML-Personal (VIRL2)のインストールと基本機能
 
BGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみたBGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみた
 
自動化ツール Ansible に触れてみよう(技術インターン)
 自動化ツール Ansible に触れてみよう(技術インターン) 自動化ツール Ansible に触れてみよう(技術インターン)
自動化ツール Ansible に触れてみよう(技術インターン)
 
技術ブログを書こう
技術ブログを書こう技術ブログを書こう
技術ブログを書こう
 
私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた
私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた
私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた
 
show コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyshow コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudy
 
はじめた自動化をどう広めるか 書籍「Fearless Change」からのヒント
はじめた自動化をどう広めるか 書籍「Fearless Change」からのヒントはじめた自動化をどう広めるか 書籍「Fearless Change」からのヒント
はじめた自動化をどう広めるか 書籍「Fearless Change」からのヒント
 
はじめどころを探る自動化アセスメント(JANOG44 ここからはじめよう、運用自動化)
はじめどころを探る自動化アセスメント(JANOG44 ここからはじめよう、運用自動化)はじめどころを探る自動化アセスメント(JANOG44 ここからはじめよう、運用自動化)
はじめどころを探る自動化アセスメント(JANOG44 ここからはじめよう、運用自動化)
 
向き合うエンジニア
向き合うエンジニア向き合うエンジニア
向き合うエンジニア
 
ネットワークコンフィグ分析ツール Batfish との付き合い方
ネットワークコンフィグ分析ツール Batfish との付き合い方ネットワークコンフィグ分析ツール Batfish との付き合い方
ネットワークコンフィグ分析ツール Batfish との付き合い方
 
Ansibleではじめるサーバー・ネットワークの自動化(2019/04版)
Ansibleではじめるサーバー・ネットワークの自動化(2019/04版)Ansibleではじめるサーバー・ネットワークの自動化(2019/04版)
Ansibleではじめるサーバー・ネットワークの自動化(2019/04版)
 
Ansibleではじめるサーバー・ネットワークの自動化(2019/02版)
Ansibleではじめるサーバー・ネットワークの自動化(2019/02版)Ansibleではじめるサーバー・ネットワークの自動化(2019/02版)
Ansibleではじめるサーバー・ネットワークの自動化(2019/02版)
 
「自動化の行き着く先は?」をうけて
「自動化の行き着く先は?」をうけて「自動化の行き着く先は?」をうけて
「自動化の行き着く先は?」をうけて
 

Último

Último (12)

Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 

Ansible 2.10 と Collection

  • 1. Ansible 2.10 と Collection 株式会社エーピーコミュニケーションズ 技術開発部 自動化グループ 横地 晃 1 2020/10/07 AP Tech Fest 内部構造が変わった Ansible のおはなし
  • 2. はじめに  先日、Ansible 2.10.0 がリリースされました。  Collection によるモジュールの配布が本格的となり、 標準モジュール は 70程度に減りました。  Ansible 2.10 と Collection の関係や、ポータビリティなどをご紹介します。 2 2.9 2.10
  • 3. 自己紹介 3 所属 (株)エーピーコミュニケーションズ 技術開発部 自動化グループ 業務 ネットワーク自動化の支援、各種アウトプット コミュニティ Ansible ユーザー会、JANOG など 共著 寄稿 Ansible 実践ガイド 第3版 Software Design 2018年12月号 他 横地 晃 @akira6592 https://book.impress.co.jp/books/1118101094 https://tekunabe.hatenablog.jp/ てくなべ(ブログ) kindle 版半額! (10/7現在)
  • 4. 内容  Ansible 2.10 の基本  Ansible 2.10 の導入  Collection の操作  今までの Playbook は動くの?  気になるアップデート  まとめ 4
  • 6. Collection の本格運用により標準モジュールが激減  Ansible 2.9 までは 3000 以上あった標準モジュールは 2.10 では約 70 に  他のモジュールは「Collection」による配布に移行  ポータビリティはある程度確保されているため、過度な心配は不要(後述) 6 基本機能 標準モジュール 基本機能 標準モジュール 移行された Collection 群 移行 ※ 標準モジュール: https://docs.ansible.com/ansible/latest/collections/ansible/builtin/index.html#module-plugins ※ Ansible Galaxy や Automation Hub では、2.9 での標準モジュールから移行された Collection だけなく、独自のものも管理されている 2.9 2.10 Ansible Galaxy や Automation Hub
  • 7. 基本機能と標準モジュールは ansible-base に  基本機能と標準モジュールは ansible-base と呼ばれる  「pip install ansible」は ansible-base と 、移行された Collection のセット 7 2.9 ansible-base 2.10 基本機能 標準モジュール 基本機能 標準モジュール ansible 2.10 移行された Collection 群 Ansible Galaxy や Automation Hub ※ ansible-base リリース履歴: 2020/08/14 2.10.0、2020/09/15 2.10.1、2020/10/06 2.10.2 ※ ansible リリース履歴: 2020/09/23 2.10.0
  • 8. Collection Collection そもそも Collection とは  モジュールやプラグインなどをまとめて配布する単位  Ansible Galaxy や Automation Hub 経由で配布  リポジトリは https://github.com/ansible-collections 配下や独自管理  hoge.fuga のような形式の名前空間が設けられる  含まれるモジュール類は hoge.fuga.piyo という形式(FQCN) 8 例: ansible.netcommon Collection モジュール例 プラグイン例 ansible.necommon.cli_command ansible.necommon.cli_config ansible.necommon.network ansible.necommon.ipaddr ※ FQCN: Fully Qualified Collection Name ※ Collection を取り巻く概要: https://github.com/ansible-collections/overview モジュール プラグイン :
  • 9. Ansible Galaxy による Collection の配布  例: ansible.netcommon Collection  https://galaxy.ansible.com/ansible/netcommon 9
  • 10. なんで ansible-base と collection に分かれたの?(私見含む)  ansible 本体と Collection のリリースサイクルを分類  本体の安定性と新機能の取捨選択を両立  「新しいモジュールを使いたいけど ansible のバージョンアップは 影響が大きそうでできない・・」といった悩みがなくなりそう 10 ansible-base 2.10 基本機能 標準モジュール 必要な Collection の インストール・アップデート Collection 群 ※ FQCN: Fully Qualified Collection Name ※ Collection を取り巻く概要: https://github.com/ansible-collections/overview ※ 参考 Collections signal major shift in Ansible ecosystem https://www.jeffgeerling.com/blog/2020/collections-signal-major-shift-ansible-ecosystem
  • 12. インストール  ansible-base  ansible 基本機能と標準モジュール  ansible  ansible-base と 移行された Collection のセット 12 pip install ansible-base pip install ansible 基本機能 標準モジュール 移行した Collection 群 今まで通り ※ pip install ansible でインストールした場合、セットの Collection は <python環境>/lib/python3.X/site-packages/ansible_collections/ 配下にインストールされる
  • 13. アップグレード  ansible 2.9 から ansible 2.10 へのアップグレード  一度アインインストールしてから再インストール  直接アップグレードできないのは ansible 2.10.0 時点の Known Issue 13 pip uninstall ansible pip install ansible venv などで別環境に したほうがよさそう
  • 15. これからは Collection を操作する機会が増えそう  ansible のセットの Collection をアップグレードしたい場合  ansible-base をインストールしたあと、標準モジュール以外を利用する場合  など 15
  • 16. Collection のインストール  Ansible Galaxy や Automation Hub で対象の Collection を見つけてインストール  デフォルトでは ~/.ansible/collections/ansible_collections/ コレクション名/ にインストール  -p オプションや、ansible.cfg の [defaults] 内 collections_path の指定で変更可能 16 ansible-galaxy collection install コレクション名 ※ Installing collections: https://docs.ansible.com/ansible/latest/user_guide/collections_using.html#installing-collections インストールコマンド が載っている
  • 17. Collection のアップグレード  現状、アップグレード専用コマンドがないため、 -f オプション で強制的に最新をインストール 17 ansible-galaxy collection install コレクション名 -f ※ Installing collections: https://docs.ansible.com/ansible/latest/user_guide/collections_using.html#installing-collections ポイント
  • 18. Collection の確認  インストールした Collection をコマンドで確認可能  デフォルトでは ~/.ansible/collections/ansible_collections/ 配下を検索  つまり pip install ansible でセットでインストールされた Collection がある <python環境>/lib/python3.X/site-packages/ansible_collections/ は検索しない。  ansible 2.10.0 時点の Known Issue。明示的に検索先を指定する場合は -p オプションなどを利用する 18 ansible-galaxy collection list ※ Listing collections: https://docs.ansible.com/ansible/latest/user_guide/collections_using.html#listing-collections ※ Known Issues: https://docs.ansible.com/ansible/latest/porting_guides/porting_guide_2.10.html#known-issues (a210) [sakana@centos7 ~]$ ansible-galaxy collection list # /home/sakana/.ansible/collections/ansible_collections Collection Version -------------------- ------- ansible.netcommon 1.1.2 cisco.nxos 1.1.0 netbox.netbox 1.0.0 実行例
  • 19. 補足1: Ansible Tower で利用する Collection を自動インストールする  プロジェクトの collections/requirements.yml に 必要な Collection 名を指定しておくと自動でインストールされる 19 ※ Collections Support: https://docs.ansible.com/ansible-tower/latest/html/userguide/projects.html#collections-support ※ requirements.yml の書き方例 https://docs.ansible.com/ansible/latest/user_guide/collections_using.html#install-multiple-collections-with-a-requirements-file --- collections: - ansible.netcommon 例
  • 20. 補足2: Collection と Red Hat サポートなど  Ansible Supported Collections, Versioning, and Release Strategy  https://access.redhat.com/articles/4993781  Ansible Automation Platform Certified Content  https://access.redhat.com/articles/3642632 20
  • 22. サンプル Playbook(準備)  環境  python 3.6.8、新規 venv に paramiko インストール  pip install ansible でインストール  Playbook  Ansible 2.9 向けに書いた右記のもの 22 --- - hosts: ios gather_facts: false tasks: - name: show ip route ios_command: commands: - show ip route register: resgister_show_ip_route - name: debug route debug: msg: "{{ resgister_show_ip_route.stdout_lines }}" 標準ではなくなったモジュール デモ
  • 23. サンプル Playbook(実行)  Playbook の修正なしに動いた 23 (a2100) [root@centos7 stumble]# ansible-playbook -i inventory.ini ios_show.yml PLAY [ios] *********************************************************************************** TASK [show ip route] ************************************************************************* ok: [rt01] TASK [debug route] *************************************************************************** ok: [rt01] => { "msg": [ [ "Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP", ...(略)... "C 10.255.255.1/32 is directly connected, Loopback0", "O 10.255.255.2/32 [110/2] via 10.0.0.2, 04:59:05, GigabitEthernet0/3", " 192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks", "C 192.168.1.0/24 is directly connected, GigabitEthernet0/0", "L 192.168.1.11/32 is directly connected, GigabitEthernet0/0" ] ] } PLAY RECAP *********************************************************************************** rt01 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 デモ
  • 24. 動く理由1: Collection がセットだから  「pip install ansible」で、移行された Collection もセットでインストールされる  そのため 2.9 までの標準モジュールが 2.10 でも利用できる  ただし、移行後も開発が進むうえで仕様変更や廃止もあり得る 24 ansible-base 2.10 基本機能 標準モジュール ansible 2.10 移行された collection 群 ※ セットの Collection の定義 (ansible 2.10.0 の例): https://github.com/ansible-community/ansible-build-data/blob/main/2.10/ansible-2.10.0.deps
  • 25. 動く理由2: リダイレクト機能があるから  コレクション名を含まないモジュール名の指定(例 ios_command)でも cisco.ios.ios_command のような FQCN に解決するリダイレクト機能がある  ansible-base としての機能  もともと標準でなかったモジュールの定義は含まれない 25※ リダイレクトの定義 (ansible-base 2.10.1 の例): https://github.com/ansible/ansible/blob/v2.10.1/lib/ansible/config/ansible_builtin_runtime.yml plugin_routing: # ...(略)... modules: # ...(略)... ios_command: redirect: cisco.ios.ios_command ios_static_route: redirect: cisco.ios.ios_static_route # ...(略)... 単に ios_command と指定すれば cisco.ios.ios_command と 解釈してくれる
  • 26. とはいえ Porting Guide はいつも通り要チェック  バージョンごとに移行時の注意点などが記載されている  Ansible-base 2.10 Porting Guide  https://docs.ansible.com/ansible/latest/porting_guides/porting_guide_base_2.10.html  Ansible 2.10 Porting Guide  https://docs.ansible.com/ansible/latest/porting_guides/porting_guide_2.10.html 26
  • 27. タスクごとの FQCN 指定が推奨 27 引用元: What's new with Ansible Content Collections https://www.ansible.com/resources/webinars-training/whats-new-with-ansible-content-collections-webinar FQCN
  • 29. 地味に便利  タスクのタイムアウトが設定可能に  接続時間+処理時間のタイムアウトを指定、デフォルトは0(タイムアウトなし)  https://docs.ansible.com/ansible/latest/reference_appendices/config.html#task-timeout  ディレクトリやパスの結合に便利な path_join フィルター追加  python の os.path.join 相当、ディレクトリ名の後の / ありなしを気にしなくていい  https://tekunabe.hatenablog.jp/entry/2020/09/17/ansible_path_join  regexp_replace フィルターがマルチラインサポート  https://github.com/ansible/ansible/issues/61985  map や selectattr などのあとの | list が不要に  https://github.com/ansible/ansible/pull/68014 29※ ansible-base としての changelog: https://github.com/ansible/ansible/blob/stable-2.10/changelogs/CHANGELOG-v2.10.rst
  • 30. ちょっと注意  CONDITIONAL_BARE_VARS のデフォルトが False に変更  assert モジュールや when で 変数名のみを指定してる場合は注意  2.9で [DEPRECATION WARNING]: evaluating 'hogevar' as a bare variable のような警告があったら特に  True/False が反転することも  https://twitter.com/akira6592/status/1294869956891275265  https://docs.ansible.com/ansible/latest/reference_appendices/config.html#conditional-bare-vars  hash_behaviour が Deprecated 扱い  代わりに combine フィルターを利用  https://docs.ansible.com/ansible/devel/reference_appendices/config.html#default-hash- behaviour 30※ ansible-base としての changelog: https://github.com/ansible/ansible/blob/stable-2.10/changelogs/CHANGELOG-v2.10.rst
  • 32. まとめ  ansible 2.10 から Collection の本格運用が開始  ansible-base = 基本機能 + 標準モジュール  ansible = ansible-base + 移行された Collection  Collection 移行に伴う影響は、過度に心配する必要はなさそう  Collection のインストールセットやリダイレクトによりポータビリティは確保  ゆくゆくは FQCN 表記にするのがよさそう  その他の機能追加も多々 32
  • 33. 参考  公式  Ansible Collections Overview  https://github.com/ansible-collections/overview  FAQ: Where did all the modules go?  https://docs.ansible.com/ansible/latest/reference_appendices/faq.html#where-did-all-the-modules-go  changelog  https://github.com/ansible/ansible/blob/stable-2.10/changelogs/CHANGELOG-v2.10.rst  Ansible-base 2.10 Porting Guide  https://docs.ansible.com/ansible/latest/porting_guides/porting_guide_base_2.10.html  Ansible 2.10 Porting Guide  https://docs.ansible.com/ansible/latest/porting_guides/porting_guide_2.10.html  個人ブログ  [Ansible] モジュールの指定などを FQCN 表記に移行する手順  https://tekunabe.hatenablog.jp/entry/2020/09/19/ansible_fqcn  [Ansible] role 単位で collections を指定する  https://tekunabe.hatenablog.jp/entry/2020/09/20/ansible_role_collections 33