てくなべ

ansible / network automation / 学習メモ / 思考メモ

タスクの変数を減らす

はじめに

(タイトルがAnsibleの話みたいになってますが別の話です)

先日の記事「自動化の難易度は機能とパラメーターのセットで考える - てくなべ」で、自動化とパラメーターは切っても切り離せない旨を書きました。

このことは「パラメーターが少ない方が自動化しやすいこともある」という側面もあります。

特に目新しい話ではありませんが、最近身近なところで実感した経験がありました。

今から一時間後にアラームを鳴らしたい

毎日行っている1 時間の作業があります。作業の終わりに気付くために、作業開始時に「今から一時間後にアラーム鳴らす設定をする」ということをやっていました。

開始時刻は毎日微妙にぶれていました。そのため「今から~」の「今」の時刻が毎回異なります。

いちいち手動で設定するのは面倒なので、スマホで Gemini「今から1時間後にアラーム」と話しかけて都度設定していました。

だんだんそれさえ面倒に

しばらく、都度 Gemini に声で依頼という運用をしていました。しかし、だんだんとそれさえも面倒になってきてしまいました。もっと効率よく「今から一時間後にアラーム」を設定できないか、と考えました。

が、なかなか妙案は思い浮かびません。もやもやを抱えながらも、ずるずると同じ方法で続けていました。

寝言で「今から一時間後にアラーム」を言ってないか心配です。

前提を変え、設定作業そのものをなくす

ふとある時、「今」が毎回ぶれているからその都度設定する必要があるんだと気が付きました。 そこで、開始時刻を毎日一定にして、その時刻から一時間後に日次アラームを設定しておくことにしました。この設定作業自体は一度キリです。

すると、当たり前ですが毎日設定しなおす手間がなくなりました。

「開始時刻から1時間後の終了時刻」という毎回可変のパラメーターをなくすことで、効率化というか、そもそも毎回のアラーム設定の必要性がなくなりました。

気が付くのが遅かったのですが「これでよかったんだ」と思いました。

おわりに

いわゆる「運用でカバー」のような構図に見えるかもしれませんし、実際そうかもしれません。

ですが、作業を減らす方向に運用の前提を変えると結構よかった、という実体験になりました。

レビュー要・不要の議論の前にレビューの目的を揃えたい

昨今、生成AI によるコードレビューの自動化が発達して「人間のレビューは必要か?不要か?」という論をよく見かけます。

私は流されやすいところももあり、必要論も不要論も「それもそうだな」と、ある種の早合点してしまう傾向があります。

必要か不要かを考える前に。そもそものレビューの目的を捉えなおさないと、軸がなくて判断がぶれてしまうなと思いました。

昔の話ですが、

レビューは、他人のコードを自分のコードにする工程だ

と言われた遠い記憶があります。一言で表すなら、共同所有のため、でしょうか。

品質の観点とはまた別モノです。

もしかしたら、この論を持ち込むのはナンセンスなのかもしれませんし、その役割を人のレビューに求めるのも違うのかもしれません。

ですが、レビューの目的の認識をそろえること自体は今も必要なのかなと思いました。

ファイアウォールのポリシーの設定変更の難しさとその自動化の難しさを考える

はじめに

ネットワークの運用作業で、ファイアウォールのポリシーや ACL の設定追加、変更、削除(以降、ポリシー設定)はよくあるのではないでしょうか。そして、なかなか大変なこと(詳細は後述)も多いです。この大変さを解消する手段の候補として自動化が挙げられます。

ただ、以前の記事「自動化の難易度は機能とパラメーターのセットで考える」でも少し触れたのですが、自動化するのがとても難しい作業だと思っています。

この難しさは、大きく以下の2つに分かれると捉えています。

  1. そもそもの作業の難しさ
  2. それをさらに自動化しようとしたときの難しさ

仮に自動化したとしても、解決したかった課題がおいてけぼりにされて残ったままだと、徒労に終わってしまうかもしれません。

この手の作業ってどんなことが課題になりがちなんだっけ、と自分が立ち止まって考えるために、ポリシー設定作業そのものの難しさと、それを自動化しようとしたときの難しさについてまとめます。

なお、本記事で何か特別な良い方法を示すのではなく、主観的な難しさや大変さを述べるのみですのでご了承ください。

本記事で挙げる難しさを解消する手法やプロダクトがすでにあるかもしれませんが、そのような特別な仕組みがないベーシックな環境を想定しています。

いきなりまとめ

ちょっと長い記事なので先に簡単にまとめます。

  • ポリシー設定作業はそもそも難しい。特に要件から設定を導き出すのが難しい
  • 難しいことを自動化するのは難しい。さらに、手動の効率化の延長に自動化がないこともある

1. 要件から設定を導き出す難しさ

通信要件をもとにして、どの機器にどのような設定を入れればいいか導き出すことの難しさについてです。

これが一番難しいかもしれません。

1.1. そもそもの難しさ

運用体制にもよりますが、どこからか「この通信を通してください」という依頼が来て、それを受けて作業に取り掛かる体制を想定します。

依頼内容は例えば以下のようなものです。

  • 送信元IPアドレス
  • 宛先IPアドレス
  • 宛先ポート番号
  • アクション: 許可/拒否

依頼元はエンドツーエンドの通信要件のみに関心があり、その間にどのようなネットワーク機器があって、どういう設定になっているかは気にしません(というケースを想定)。このこと自体は良しあしではなく、体制上の特性です。

関心の違い(一例)

この場合、依頼を受けた側は実際のどの機器にどういう設定をすればいいか導き出す必要があります。頭の中は以下のような感じです。

  • 「ここからここへの通信だから、FW101とFW801のポリシー、それからL3機器の RT101とRT102のACLが関係しそうだ」
  • 「あれ、、そもそもルーティング的には通ってるかな。どれどれ・・。あぁ大丈夫か」
  • 「それぞれの現状のポリシーをドキュメントで確認しよう」
  • 「FW101とFW801に追加が必要だな。既存のアドレスオブジェクトやサービスオブジェクトで賄えるかな・・?」
  • 「サービスオブジェクトは既にあるな。アドレスオブジェクトだけ作成が必要だ。つまり設定はこんな感じだな」

こういった過程がなかなか大変です。机上でのチェックならなおさらです。レビューする人にとっても。

ちなみに、調べ上げた結果、依頼の通信要件がすでに満たされていることもあり得ます。

1.2. 自動化の難しさ

設定の導出を自動化するには、これまで人がどうやって導き出していたのかをロジック化する必要があります。

与えられたパラメーターを投入すること自体は自動化で担保できたとしても、そもそもパラメーターが誤っていたら「正しく間違える」のようなことになってしまいます。「Garbage In, Garbage Out」にも通じます。

2. 順番を考慮する難しさ

ポリシーの類は上から順に評価されますが、それを考慮することの難しさについてです。

2.1. そもそもの難しさ

ポリシー設定は、ネットワーク機器の設定としてはかなり順序性に気を遣う設定です。

極端な例では、「全ホスト許可」のルールの後に「特定ホストのみ許可」があっても隠れてしまって、意味がありません。隠れたほうのルールを「シャドウルール」と呼ぶこともあります。

機器側の機能としてシャドウルールを検出できる場合もあります。しかし、机上で脳内で判断するのはなかなか難しいものです。

他にも、禁止のポリシーの後に許可をしても意味がないというケースもあります。

ここまでは「そうしないと意図する挙動にならない」という事情でした。

一方で「新規ポリシーを2行目に追加しても3行目に追加してもどっちでもいい」というようなケースもあります。どっちでもいいので制約がなくて楽という反面、制約がないので迷いが生まれるという面もあります。これも何かしらのルールがあるのが理想ですね。

2.2. 自動化の難しさ

先に挙げた「シャドウルール」を避けるような、相応のロジックが必要になります。機器側にシャドウルールを検出してくれる機能があれば、それを自動化の処理の中で応用する方法はあるかもしれません。そうでない場合は、ネットワーク的な計算処理を自前で作成することになり、まるでネットワーク機器側の機能の一部を書くような難しさも垣間見えてきます。

「ある程度どこに追加してもいい」という場合も、人の気分ではなく何かしらのルール化、ロジック化が必要になります。

3. 設定の自由度からくる難しさ

何かと名前付けが必要なポリシー関連の設定の難しさについてです。

3.1. そもそもの難しさ

ポリシー関連の設定は名前付けの嵐です。

  • アドレスオブジェクト名、アドレスグループ名
  • サービス名、サービスグループ名
  • ポリシー名

個人的な感覚ですが、ネットワーク機器の設定として名前を自由に決められる項目は多くないように思います。description くらいでしょうか。ポリシー関連の設定になると自由度が増して、それと同時に「どうしよう・・」という迷いや「適当でもいいかな」という気持ちが芽生えやすい気もします。

あまり適当にしてしまうと、ポリシーの目的が分からずに後で消せなくなったりもします。

名前を自由に決められることは、便利な反面、命名規則などのルールがないと混乱のもとになり得ます。これがある種の難しさの一因かなとも思います。

3.2. 自動化の難しさ

すでに名前付けの難しさを挙げましたが、自動化するには名前付けをルール化する必要があります。

なんとなくで決めていた場合は、いよいよどうするかを決めることを迫られる場面です。

4. グループ化の難しさ

ちょっと細かい話になりますが、アドレスグループのようにオブジェクトをグループ化することは、時々悩ましいことを引き起こすことがあります。

4.1. そもそもの難しさ

たとえば、/32 のアドレスオブジェクトを束ねて、以下のアドレスグループが作成されていたとします。

  • アドレスグループ: WebServers
    • アドレス: 10.0.1.1/32
    • アドレス: 10.0.1.2/32
    • アドレス: 10.0.1.3/32

このようにグループ化しておくと、何かと管理しやすくなり、効率化にもつながりますね。

さらに、上記のアドレスグループが以下のようにポリシーに適用されているとします。

  • 送信元: any
  • 宛先: WebServers
  • サービス: HTTP
  • アクション: 許可

この状態から、以下の通信要件を「削除」する場合についてです。

  • 送信元: any
  • 宛先: 10.0.1.3/32
  • サービス: HTTP
  • アクション: 許可

10.0.1.3/32WebServers のメンバーです。ですが、安直に WebServers から 10.0.1.3/32 を削除すると、WebServers を指定している他のポリシーにも意図せず影響が出てしまいます。

他のポリシーに影響が出ないようにするには、グループ化の仕方を見直すなどの対応が必要になります。

4.2. 自動化の難しさ

影響がない削除の方法をロジック化するのはなかなか難しそうです。

極端かもしれませんが、宛先の指定がアドレスグループではなく 10.0.1.1/3210.0.1.2/3210.0.1.3/32 であれば、このポリシーの宛先から 10.0.1.3/32 を削除すればいいだけなのですが。

この件については「(グループ化のように)手動前提の効率化の延長に自動化があるとは限らない」という点に気付かされます。

5. 作業当日の確認の難しさ

ポリシー変更に限りませんが、作業当日の事後確認の難しさについてです。

5.1. そもそもの難しさ

難しいというよりは、不安という表現の方が適切かもしれません。

必要な設定が揃って手順も完璧!と思って迎える当日も、不安は残ります。そもそも要件から正しい設定を導き出せていたか、それを正しく設定できたかを確認する、事後確認があるためです。

事後確認が必要なこと自体は、ほかの多くの作業に共通することで、たとえばルーティング設定であればL3レベル疎通確認を行います。

ポリシー設定の場合はそれより上のレイヤーを含む確認が必要です。そのため、確認に必要なバリエーションが多かったり、再現が難しい場合もあったりします。この辺りが難しさの要因です。

もちろん、今回の設定に関係ない(はずの)通信に影響がないかも気がかりポイントです。

5.2. 自動化の難しさ

「この通信は通るはず or 通らないはず」というチェックを、エンドツーエンドのエンド側にいる人がやっていた場合、「そこにいる人」からの通信を再現する難しさがあります。

オフィスで利用するような Windows PC から疎通確認を行っていたのを自動化したい場合、ほかの自動化の仕組みとは異なる仕組みが必要かもしれません。例えば他は Python で、エンドだけ PowerShell など。

自動化のために確認方法自体を見直す必要がある場合もあるでしょう。

番外編: ドキュメントの維持の難しさ

これまであげたパラメーターや作業とは少し毛色が異なるので番外編として扱いますが、細かいドキュメントを正しく維持することの難しさについてです。

ドキュメントが正しくメンテナンスされていない場合は、現状のポリシーをドキュメントで確認することができません。この場合は、実機の設定を確認する必要があります。複数の機器の設定を確認するとなると、やはり相応の手間になります。

ドキュメントを正しくメンテナンスしていればいい話、というのはその通りです。ですが、リッチなドキュメントとして管理しようとすると、それだけメンテナンスの負荷も高くなります。

形式 読み手の負荷 メンテナンスの負荷
コンフィグだけ取っておく 高め 低め
ポリシーを表形式にする 低め 高め

表形式の場合、メンテナンスされているのであれば読み手も安心です。そうでなく設定ドリフトがあることが予見される場合、一気に緊張感が高まります。結局、実機を見たほうがいいという心理が働きます。

仮に動的ルーティングの設定であれば、ルーティング情報は機器同士でやりとりがされて、コンフィグに表れるのはルーティングプロトコル自体の設定です。

それに対して、ポリシーの設定の類は機器同士で情報をやり取りすることはなく(そういう高度な仕組みがある場合を除く)、機器ごとのコンフィグにポリシー設定(様々なオブジェクト、ポリシー)が表れます。このような経緯もあり、ポリシー設定は表現するべき情報が多く、リッチなドキュメントにしようとすると負荷がかかりやすくなるのではないか、と思っています。

とにかく「ドキュメントのメンテナンスが大変な割には、役立つ場面がない」というのは避けたいところです。

おわりに

今回はポリシー変更作業とその自動化にフォーカスをあてましたが、総じて以下のようなことが言えるかなと思います。

  • 自動化対象の作業のそもそもの難しさが、自動化の難しさに強く反映されることがある
  • 自動化によって解決したい課題が、その難しさの中にある場合がある
  • 自動化しやすい部分だけに終始すると課題がおいてけぼりになることがあるため、整理整頓と見極めが必要

いわゆる「スモールスタートでやっていきましょう」となった場合でも、難しさや課題を見据えて始めるかどうかは、重要なことだと感じています。

リードタイムと会議体

はじめに

業務を効率化しよう、という話の時によく出てくる時間に対する概念が、リードタイムとプロセスタイムという考え方です。

  • プロセスタイム: 何かを実際に作業している時間そのもの
  • リードタイム: 待機やコミュニケーションを含めた、最初から最後までの時間

「プロセスタイムだけ短縮しても、業務の効率化になりにくい」という話も聞きます。

また、リードタイムは本当にちょっとしたことで伸びてしまうなと思うことが良くあります。

会議体がリードタイムを左右するとき

特に日常的に感じるのは、会議体によってリードタイムが左右される場合があることです。

例えば、何かを準備して誰かにレビューしてもらう場合、レビュアーの都合がつかないとなかなかレビューができません。忙しい人の場合「あとで見ておく」よりも「それ用の場(時間)を設けて、同期コミュニケーションを取りながら実施する」という形をとることもあります。

しかし忙しい人は忙しいので、

  • 予定を確保するのが難しい → 予定が先の方になる → リードタイムが伸びてしまう

ということになりかねません。

そこで、予定を確保するために「毎週水曜日15:00 - 16:00はレビュー会」のように定期イベントにする方法もあります。週次にすれば、ある程度レビューしてもらえる目途を立てることができます。

会議体エンジニアリング

(見出しは「○○エンジニアリング」と呼べば自分のモチベーションが沸くので適当な造語です)

レビューからちょっと話を広げますが、定例化が良くない方向に向かうこともあります。

「ちょっとしたことだから次の定例でついでに確認しよう」が重なると、これまたリードタイムが伸びてしまったりします。

「ちょっとしたこと」が「すぐ判断できること」だとした場合でも、その判断が次のプロセスに大きな影響がある場合は、もはやちょっとしたことではなくなってきます。

そのような場合は、可能な限り定例会を待たずに確認するがよいのでしょう。

定例会は、活用はしても依存はしない、というのが私の心がけです。

[Ansible/AAP] 実行環境(EE: Execution Environment)を1つにまとめる必要性と分ける必要性

はじめに

AAP(Ansible Automation Platform)や ansible-navigator(のデフォルト)では、コンテナ内で Playbook を実行する仕組みになっています。

この Playbook を実行するためのコンテナ環境のことを、実行環境(EE: Execution Environment)と呼びます。EE に含める ansible-core のバージョンにするか、どのコレクションのどのバージョンを入れるかなどを考える必要があります。

www.redhat.com

もう一つの考慮点としては、どういう単位で EE とまとめるか、という点もあります。

開発や運用の体制、自動化対象の種別などによって、分け方がいろいろあるかもしれません。あまり絶対的な正解がない類の話であり、「ケースバイケース」と一言で言ってしまえばそれまでです。

しかし「一つまとめる必要がある場合」や、逆に「分ける必要がある場合」もあります。私が思いつく範囲ですが、それぞれどういう時なのかを簡単にまとめます。

一つまとめる必要がある場合

EE を一つにまとめる必要がある場合についてです。

ジョブテンプレート内の処理に対応できるようにまとめる

仕様上、AAP の1つのジョブテンプレートに対して、EEは1つのみ割り当てる関係です。1つのジョブテンプレートに2つ以上の EE を割り当てることはできません(AnsibleがどちらのEEを使えばいいか分からなくなってしまう)。

そのため、そのジョブテンプレートを実行するためのあれこれ(コレクション、Pythonライブラリ、Systemパッケージなど)を1つのEEにまとめる必要があります。

たとえば、1つのジョブテンプレートのなかで、Cisco IOS 機器向けの処理とAzure 向けの処理がある場合は、それぞれの処理に必要なもの(この場合 cisco.ios コレクション、azure.azcollection コレクション、依存パッケージ)を入れた EE にしておく必要があります。

もし、「そもそも ジョブテンプレート分けちゃった方がいいね」となったらまとめる必要はなくなります(どちらでもよくなる)。

分ける必要がある場合

EE を分ける必要がある場合についてです。

ansible-core のバージョンを分ける

「ジョブテンプレートAは ansible-core 2.18 系、ジョブテンプレートBは ansible-core 2.16 系で実行する」のような場合は、利用する ansible-core のバージョンを分ける場合は、EE を分ける必要があります。

たとえば、RHEL 9 向けのジョブテンプレート、RHEL 8 向けのジョブテンプレートがあって、基本的には新しめの ansible-core を使いたい、という場合です。

現状、AAP のライフサイクルのページでは、ansible-core 2.18 では「Supported Managed OS (RHEL)」が RHEL 9 – 10 となっており、RHEL 8が含まれていません。RHEL 8 が含まれているのは ansible-core 2.16 までです。このような経緯で、RHEL 9 向けには ansible-core 2.18、RHEL 8 向けには ansible-core 2.16 を使いたい場合は EE を分ける必要があります。

ただし、Playbook は必ずしも別にする必要はありません。例えば、各OS に対して ansible.builtin.dnf モジュールを使った同じ処理をするのであれば共通の Playbook を用意したうえで、以下のような組み合わせでジョブテンプレートを作る方法があります(名称はすべて例です)。

対象 ジョブテンプレート EE Playbook
RHEL 8 update_rhel8 ee-rhel8 rhel_update.yml(共通)
RHEL 9 update_rhel9 ee-rhel9 rhel_update.yml (共通)

なお、ansible-core のバージョンによって、サポートしている Python のバージョンの範囲が決まっています。少なくとも AAP 標準の EE であれば正しい組み合わせになっているはずですが、他をベースイメージに利用しているなどの場合は気にする必要があります。組み合わせは「ansible-core support matrix」の表で分かります。

コレクションのバージョンを分ける

前述の ansible-core のバージョンを分ける場合と似ていますが、コレクションのバージョンを使い分ける場合も EE を分ける必要があります。

たとえば、しばらく前の話ですが、ネットワーク機器向けの共通コレクションである ansible.netcommon コレクションはどこかのバージョン(確か 5.0.0)で破壊的な変更があり、cisco.ios などの OS 別コレクションのバージョンとの組み合わせを強く意識する必要がありました。このような場合は、この組み合わせの EE、この組み合わせの EE・・と分ける必要があります。

依存性の問題で分ける

ちょっと記憶があやふやなのですが、とあるコレクションが多くの Python パッケージを必要としていて、ほかのコレクションと依存性の関係で相性が良くない、という話を聞いたことがあります(自分がそういったのかさえあやふや・・)。

具体的にどういうコレクションの組み合わせかというのは指し示せませんが、ない話ではないと思います。どうにもこうにもできない場合は EEを分ける必要があります。

おわりに

EEを1つにまとめる必要がある場合と、分ける必要がある場合についてまとめました。

今回は仕様上「必要がある」という温度感での話でしたが、運用管理面で「~したほうがよい」という見方の話もあるかなと思います。

自動化の難易度は機能とパラメーターのセットで考える

はじめに

Ansible のような自動化ツールを扱っていると「自動化できるか、できないか」のような調査をすることがあります。

この手のものは、機能面だけは判断できないなと思うことがあるので、簡単ですが自分の考えをまとめます。当たり前のことばかりかもしれません。

パラメーターのべた書きが通用しない

Ansible であれば、たとえば「サンプル Playbook を書いて実行したら思った通りに動いた!」と結果が得られたとします。

検証時点では、モジュールに指定するパラメーターがべた書きだったり、変数化したとしても「こういう変数があったとします」という前提で書くことが多いです。いずれの場合もうまく動くように都合よくパラメーターを準備したりするものです。

実際業務で使うにあたっては、都合のいいパラメーターはどこからか降ってくるわけではありません。むしろパラメーターを準備する方が大変、という感覚すらあります。

だとすると「機能が簡単に作れる = 簡単に自動化できる」とは限らない話になります。

パラメーターはどこからやってくる?

自動化の文脈でパラメーターといえば、何かしらのフォーマットでパラメーターが書かれたものが依頼元からやってくる業務の流れです。Excel ファイルによる申請書が代表的でしょうか。

このパラメーターをもとに自動化することになるのですが、このタイミングだけでも少なくとも以下の点が考慮点になります。

  1. このパラメーターはどのようにして求められたのだろう?どれだけ時間がかかるものなんだろう?
  2. このパラメーターを自動化にどう適用すればいいだろう?

「自動化」をシステム面だけで考えると2の方が関心ごとになります。しかし、業務面も含めて考えると1の方も関心ごとになります。

もし「実際に適用するパラメーターが決まってからの作業は実は時間がかかってなくて、上記の1と2に時間がかかっていた」という場合は、自動化の機能だけ作りこんでも、なかなか効率化が見込みにくくなってしまいます。

そのため、自動化を考えるにあたっては「機能をどう作るか」だけでなく「パラメーターをどう準備するか」もセットで考える必要があると捉えています。

たとえば ACL 変更

ちょっと抽象的な話が続いたので、少し具体的な話をします。

例えば、ACL やファイアウォールポリシーの追加、変更、削除に利用するパラメーターです。

Ansible でいうと使えそうなモジュールは割とすぐ思いつくのですが、この手の作業はパラメーター準備がかなり難しい作業だと思っています。

というのも「この通信を通すように変更してください」という要件は、エンドツーエンドだったりします。ところが、実際のネットワーク構成は、そのエンドツーエンドの間に複数の機器が挟まっていることがよくあります。

となると、そもそも

  • どの機器が設定対象か

から調べ上げる必要があります。ほかにも、

  • どのような設定を入れるか
  • どういう順番の設定にするか

など考慮点は多いです。

この話はできればもう少し深堀りして別の記事にしたいと思います。

[2026/03/23 追記] 別途以下の記事を書きました。

tekunabe.hatenablog.jp

パラメーター準備のパターン

やってきたパラメーターをそのまま自動化に適用できるのが一番簡単なパターンですが、簡単な順に上げると以下の大きな括りになるかと思います。

  • パターン1: そのまま機能に適用
  • パターン2: パラメーター内のキーなどをもとに、自動的に導出して機能に適用
  • パターン3: パラメーター内のキーなどをもとに、人が導出して機能に適用

パターン3(人が導出)がなかなか悩ましいですね。ここにリードタイムがかかっている場合は、その後のプロセスタイムを自動化で短縮できたとしても、業務全体で見ると思うような効果が得られないことになります。対比するために極端な例を挙げるとすると、実は「パラメーターの準備を自動化すべきであって、その後の処理は今までのツールを使えばいい」というケースもあるのかもしれません。

また、本記事タイトルにある「難易度」の観点とはそれますが、仮にパターン1(そのまま)だとしても、業務の流れの中でコピペが多いとミスの原因になり得てしまいます。もし、自動化の目的がオペミスの低減なのであれば、コピペをなくすにはどうすればよいか、は外せない視点になります。そうでなくてもコピペは少ない方が楽ですね。

おわりに

あまりまとまりがないですが、パラメーターをどう準備するかという点に重要性を感じる場面が多々あったため、自分なりに書きとどめてみました。

何かが難しいと感じた場合、処理自体が難しいのか(狭義の自動化処理)、そもそも業務自体が難しいのかといったところも見極めポイントに感じています。

検証フェーズだと、つい機能面に終始してまいそうですが、業務の流れや運用を見据えたうえで検証したいものです。

[Ansible] github.com/ansible 配下のリポジトリでコミット署名が必須になる(2026/03/16 から)

はじめに

Ansible 本体や関連ツールは GitHub の ansible という Organization のリポジトリで管理されています。

(コレクションは別 Organization の ansible-collections など)

ギリギリのタイミングで知ったのですが、2026/03/16 から https://github.com/ansible/ 配下のすべてのリポジトリで、署名付きコミットが必須になるそうです。

詳細は以下の Ansible Forum のトピックをご参照ください。私もこれで知りました。

forum.ansible.com

書名付きのコミットとは?

GitHub でいうと、しばしば見かける Verified がついてるコミットです。

Verified

と、あたかも元々知っているように書いてしまいましたが、正直に言いますとVerified 自体は見たことあるけどどういうことなのか分かっていませんでした。なので、このタイミングで意味をはじめて知りました。

設定

せっかくなのでこのタイミングで、 GitHub のドキュメントなどを参考にして署名付きでコミットできように設定しておきました。

docs.github.com

qiita.com

方式アンケート

皆さんがどの方式で設定しているのか気になったので、アンケートを取ってみました、ご回答いただいたみなさま、ありがとうございます。

おわりに

こういう機会がないとほっといていた気もするので、意味を知ったり設定をしたりする良い機会になりました。