たそ@ITインフラ初心者

taso@初心者エンジニア

新卒1年目 エンジニアが適当に語るブログてす

Ansible Night Online 2021.07 について

はじめに

こんにちは たそ(@taso_int)です。
今回は7月20日に開催されたAnsible nightの振り返り記事です。
(こんな事やってたよ的なまとめ)
ブログ枠に参加してないですが(あることに気が付いてなかった)
書いていきたいと思います。

オープニング

司会はなかむらまこと(@fideleruuth)さん
極力自動化Tシャツはこちら
https://suzuri.jp/fideleruuth
今回の趣旨
前回は運用フェーズへ移行する上での考慮ポイントについて取り上げてました。
今回はAnsibleを実際に活用していく中での実体験をLTやパネルディスカッション等
で掘り下げることでAnsible力を上げていこう。

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

スピーカー:@naka_shin1さん、@sky_jokerxxさん
スライド資料 https://speakerdeck.com/sky_joker/ansible-collectionsgai-yao?slide=2

@sky_jokerxxさんからAnsible Collectionsの概要のお話

Ansible2.9の課題
ver2.9のモジュールで修正や機能追加を使用としても
Ansibleのリリースサイクルに合わせないといけないので
モジュールの対応が不十分になってしまう
モジュール開発者の視点からすれば修正や機能追加はすぐに対応して欲しい

ver2.10以降について
Ansible本体と最低限のモジュールに削ぎ落して軽量化へ
今まで含んでいたモジュールはCollectionという単位へ外だしすることになった*
Ansible本体とCollectionのリリースは非同期で対応可能に
ユーザが必要に併せてCollectionをインストールすることが可能になった
※anisble 3.V(base) ansible4.v(core)

Collectionsの特徴
独立して管理ができることによってCollections単位でリリースが可能になった
Ansible Galaxyからの配布が可能でgithub等のリポジトリから
ダウンロードしてインストールも可能になった

@naka_shin1さんから対応してみたベンダー体験談のお話

背景について
以前は独自のパッケージを用意して、お客様に提供
問題点としてAnsibleのバージョン追従によってソースの対応するのがむずかしい

対応する理由
ベンダーのモジュール類は、Collectionという単位で外だし可能
これにより正常なソース管理ができるようになった
またインストール方法をanisble-galaxyに変更へ

Ansible Collection開発のポイント
Namespaceをどうするかについて 会社で対応するのでどのようにすべきか悩んだ
テスト自動化の仕組みの作成
OSSとして公開へ

「やらかしAnsible / ハマったところ」LT大会

LT1: 気軽にpip install ansibleを実行して、Ansible Towerでエラーが起きた話

スピーカー:@mizuto1217さん
スライド資料 https://speakerdeck.com/mito201/sudo-pip-install-ansible

やらかし
バージョンを合わせるため、
sudo pip install ansible==2.9.20を実行してしまって動かなくなってしまった

対策
気軽にsudo pip install を実行しないこと
Pythonの仮想環境を構築できるvirtualenvを利用すること

LT2: 本当にあった怖い話 Ansible SaaS運用編

スピーカー: @jir01030さん
スライド資料

やらかし
間違えて既存環境のパスを指定してしまい参照場所が変わってしまいそうになった
大事件にはならなかったものの今のところ根本的な解決策がない

対策?
自動化は便利だけど使い方を間違えると環境を壊しかねない
責任感を持たないとだめだよね

LT3: やらかしlineinfine 〜冪等性が失われた日、そしてreplaceへ〜

スピーカー: @morihaya55さん
スライド資料 https://www.slideshare.net/ssuser1f3c12/my-misstake-on-ansibles-lineinfile-module

やらかし
ansible.builtin.lineinfileモジュールが便利な上でのやらかし
linefileをPlaybookを書いたが走らせるだけ文字が追記されてしまった
複数箇所を変更しようとしたら1箇所しか変更されず迷惑をかけた

対策
複数回実行しても問題ないか(冪等性)を確認する
複数箇所変更ならreplaceモジュールを使おう

LT4: タグの継承を知らずにやらかした話

スピーカー: @zaki_hmkcさん
スライド資料 https://speakerdeck.com/zaki_lknr/ansible-tag-inherit

やらかし
タグを使って動かないつもりのタスクが動いてしまった
タグは継承されるので呼び出し元のRoleのタグを動かすと動く

対策
実行されるタスクやタグを確認するオプションを活用すること
--list-tasks
--list-tags

参考ブログ https://zaki-hmkc.hatenablog.com/entry/2021/03/24/100317

LT5: whenはいつも見ているぞというお話

スピーカー: @sonic5555さん
スライド資料

やらかし
WhenはIfと違う
loop処理をしようとしたらループしなかった
blockに対するWhenは途中のタスク中全てに個別反応してしまう

対策
loop判定変数をblockの最後に定義した

Ansibleユーザー会 活動アップデート

Ansibleもくもく会

概要
教材および環境を個別に提供する無料のセルフハンズオン会
経験者によるQA回答&デバッグ支援付き

たそコメント
私もかなりの頻度で参加しています。
Ansible初心者にはもってこいですね。
いろいろな題材があるので定期的に参加してみよう!(connpassから)

katacoda

ブラウザだけでAnsibleを一通り学べるコンテンツ
101 https://www.katacoda.com/irixjp/scenarios/ansible-101

Anisbleネットワーク部

概要
ネットワーク設定変更・可視化に関する座談会
みんなの発言でいい時間を過ごす
協力者求ム(興味ある方はぜひ)

Developer部

概要
Ansible開発における情報のシェア会
開発ならなんでもありな分科会!
協力者求ム(興味ある方はぜひ)

VMware

概要
Ansible × VMwareの分科会!
協力者求ム(興味ある方はぜひ)

やらかさない ansible-playbook パネルディスカッション

パネラー:SAITO Hideki(@saito_hideki)さん、よこち(@akira6592)さん、えんでぃ(@stopendy0122)さん

参考資料 https://docs.google.com/document/d/1irJWgwIs0rwFaveZ081u_xrJjt9FR1YM_1kwkBIvnQI

型関連の操作
・数字と文字列の足し算等でエラーが起きたりした
・型を間違えると計算を見誤る
・型に不安があるならフィルターをかけておく
・ユーザーが入力するパターンになると面倒になる(考えられる入力を置換した)

辞書の結合問題
update_factモジュール
https://docs.ansible.com/ansible/latest/collections/ansible/utils/update_fact_module.html

変数について
・変数定義の場所による優先順位
https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#understanding-variable-precedence
・意識はしてないけど弱い変数から使う
・そもそも変数をかぶらせない
・galaxy内にあるCollectionsのroleを参考にする(書き方がわかる)
・playbook_dir 他人のplaybookのデバッグに便利
・groupsは予約変数

最後に

スポンサーおよび司会、登壇者の皆様お疲れ様でした。
私は新卒の身でまだ語れるほどやらかしをしてないので
やらかさないようにという構えをしつつ
やらかしたらいつかLTで話してみたいなと思います。  

あとがansible automation platform 2.0気になりますね。
まずはansible-builderとansible-runnerに慣れた方がよさそうな気がしましたね。