
2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
タグの継承を知らずにやらかした話(全1記事)
リンクをコピー
記事をブックマーク
宮﨑啓史氏:それでは、LTを始めたいと思います。今日の内容は、以前詳しく調査していて、「はてなブログ」にまとめているので、ぜひあとでチェックしてもらえればと思います。
ブログのリンクは、「Twitter」と「connpass」にもスライドを共有しているので、そちらからたどってもらえれば幸いです。
まず自己紹介です。私、「zaki」と申します。Twitterとかブログとかをやっています。右下、Ansibleのドキュメントサイトを検索しやすくするChrome拡張を作っていたりするので、ぜひ使ってみてください。
所属は、株式会社エーピーコミュニケーションズの自動化グループで、Ansibleを使って、主にネットワークの自動化などを行う部署にいます。
それでは本題です。Ansibleのタグについてお話ししていきます。タスクとかRoleとか、Playbookのいろいろなところにセットしておくことで、右側に少し書いていますが、指定したタグのタスクだけを動かすとか、逆に指定タグのみ省略して動かすということが、Ansibleのオプションで指定できます。
例えば開発中のタスクだけを動かしたいとか、逆に、処理に時間がかかるタスク、例えば設定をグリグリ更新するとか、そういうものをスキップすることが簡単にできるようになります。
この機能説明で何をやらかしたかがピンとくるかと思うのですが、ちょっと前に、タグを使って動かないようにしていたつもりのタスクをうっかり動かしてしまいました。
今日は、なぜこんなことが起きたのかについて、タグと継承という仕組みについてお話ししようと思います。
AnsibleのPlaybookにタグをセットできるとお話ししましたが、この設定は継承されるという特徴があります。
どういうことかというと、左側は、Playbookの例ですが、Roleを呼び出しています。install_serverというRoleを呼び出して、Roleの呼び出しにintallというタグをセットしています。
そうするとどうなるか。呼び出す右側にRole書いています。ここではタグにneverとつけていますが、このneverに呼び出し元のinstallというタグが追加されます。そういうタスクの定義が、実行時にそういうふうに変化してしまいます。
この結果どういうことが起こり得るかというと、Roleのタスクを作成している時は、ここ書いているとおり、neverという明示的にタグを指定しなければタスクが動かなくなるという特殊なタグを指定しています。このneverのタスクは動かすと明示的に指定しなければ動きません。そういうタスクのつもりでいました。
ところが、Roleの呼び出し元で、installというタグを設定すると、これは継承の動作で、呼び出されるタスクにもinstallが追加されてしまいます。
そうすると、このRoleのタスクは、neverで動かないようにしていたつもりが、呼び出し元にセットしているinstallというタグを指定することで、neverに関係なくタスクが動いてしまうという動作になってしまうんですね。
これをどうすれば防げたかというと、まずAnsibleのコマンドオプションに--list-tasksや--list-tagsという、実行するタスクやタグの一覧を確認できるオプションがあるので、タグをけっこう使っている方は、ぜひこのオプションを使って、想定どおりのタスクが呼ばれるかどうかを確認してほしいと思います。
チェックできるタグの一覧で、継承済みのものが確認できるので、想定していないタグの継承が行われていないかもこちらで確認が可能です。
時間の都合で特に説明をしなかったのですが、Ansibleの外部ファイル読み込みは、includeとimportという2種類の仕組みがあります。そのうち継承が行われるのは、スタティックな読み込みを行うimportを使った読み込みの場合になります。includeの時は継承はされません。
じゃあincludeを使えば安全かというと、必ずしもそういうわけではなくて、includeは実行時にダイナミックにタスク読み込みを行うので、--list-tasksとかを使った一覧チェックができないという特徴があります。そのため、注意が必要です。
今日はタグの話しかしなかったのですが、実はタグだけではなくて、whenとかcheck_modeとか、意外といろいろなものが継承されるので、呼び出し元で使う場合は、ぜひ注意をしてください。
このあたりは全部、最初にも紹介した「はてなブログ」にまとめているので、ぜひあとでチェックしてもらえればなと思います。
以上で終わります。ありがとうございました。
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.12
今までとこれからで、エンジニアに求められる「スキル」の違い AI時代のエンジニアの未来と生存戦略のカギとは
PR | 2024.11.26
なぜ電話営業はなくならない?その要因は「属人化」 通話内容をデータ化するZoomのクラウドサービス活用術
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05