2024.12.24
ビジネスが急速に変化する現代は「OODAサイクル」と親和性が高い 流通卸売業界を取り巻く5つの課題と打開策
タグの継承を知らずにやらかした話(全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とか、意外といろいろなものが継承されるので、呼び出し元で使う場合は、ぜひ注意をしてください。
このあたりは全部、最初にも紹介した「はてなブログ」にまとめているので、ぜひあとでチェックしてもらえればなと思います。
以上で終わります。ありがとうございました。
2025.01.09
マッキンゼーのマネージャーが「資料を作る前」に準備する すべてのアウトプットを支える論理的なフレームワーク
2025.01.15
若手がごろごろ辞める会社で「給料を5万円アップ」するも効果なし… 従業員のモチベーションを上げるために必要なことは何か
2025.01.16
社内プレゼンは時間のムダ パワポ資料のプロが重視する、「ペライチ資料」で意見を通すこと
2025.01.07
資料は3日前に完成 「伝え方」で差がつく、マッキンゼー流プレゼン準備術
2025.01.10
プレゼンで突っ込まれそうなポイントの事前準備術 マッキンゼー流、顧客や上司の「意思決定」を加速させる工夫
2025.01.14
コンサルが「理由は3つあります」と前置きする理由 マッキンゼー流、プレゼンの質を向上させる具体的Tips
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
2025.01.08
職場にいる「嫌われた上司」がたどる末路 よくあるダメな嫌われ方・良い嫌われ方の違いとは
2025.01.10
職場にいる「できる上司」と「できない上司」の違いとは 優秀な人が辞めることも…マネジメントのNGパターン
2024.06.03
「Willハラスメント」にならず、部下のやりたいことを聞き出すコツ 個人の成長と組織のパフォーマンス向上を両立するには
安野たかひろ氏・AIプロジェクト「デジタル民主主義2030」立ち上げ会見
2025.01.16 - 2025.01.16
国際コーチング連盟認定のプロフェッショナルコーチ”あべき光司”先生新刊『リーダーのためのコーチングがイチからわかる本』発売記念【オンラインイベント】
2024.12.09 - 2024.12.09
NEXT Innovation Summit 2024 in Autumn特別提供コンテンツ
2024.12.24 - 2024.12.24
プレゼンが上手くなる!5つのポイント|話し方のプロ・資料のプロが解説【カエカ 千葉様】
2024.08.31 - 2024.08.31
育て方改革第2弾!若手をつぶす等級制度、若手を育てる等級制度~等級設定のポイントから育成計画策定まで~
2024.12.18 - 2024.12.18