てくなべ (tekunabe)

ansible / network automation / 学習メモ

[Ansible] 新コンテツの Ansible もくもく会に参加してみた

この記事は、Ansible Advent Calendar 2021 (Adventar版) 17日目の記事です。

はじめに

ひさびさに開催された Ansible もくもく会に参加しました。

ansible-users.connpass.com

今回から新しいコンテンツ。環境は Ansible Automation Platform 2.0 Early Access (ansible-core は 2.11)。

無謀にもメンター枠ではいって、答えられそうなものがあれば答えつつ、新しいコンテンツに取り組もうと思いました。

途中、エラーや疑問が発生したので、やりながら調べた結果も合わせてまとめます。(冷静に調べればもっと正確かもしれません・・)

ネットワーク編に挑戦

ネットワーク編をやりました。コンテンツはこちら。新しいのはまだ英語版のみ。

aap2.demoredhat.com

コマンドライン

あたらしいコンテツらしく、ansible-navigator による環境確認や Playbook 実行がありました。

ansible-playbook コマンドは使いませんでした。

ansible-navigatorコマンドラインとして使い方は難しいものではなさそうですが、実行環境のコンテナ化とそれの運用方法などは、考えることがあるなという感覚です。

GUI

GUI は Automation Controller (旧 Ansible Tower)4.0.0 でした。

コンフィグバックアップのジョブを実行。これは前にもあった気がします。

このジョブが呼び出している Playbook はこちら。

github.com

新しい発見は Survey の複数選択。項目が分かれてるのでわかりやすく感じました。ただ、ペーストしていっぺんに入力はしにくいかもです。

バナーを設定した様子。

Junos のエラー発生と調査

ワークフローは、途中で設定ジョブを複数同時並行で実行させるものでした。ここでrtr3 (ツイートの rtr2 は間違い)の Junosでエラーが発生。

JunosとJunosモジュールの仕様上、不整合が起こらないらように排他処理がかかり、タイミングが重なるとあとからログインしたセッションが負けてエラーになってしまいます。

タイミングによるので、再現率は100%ではありませんでした。10回以上繰り返し実行しましたが再現しませんでした。

インベントリに他のOSのネットワーク機器もあるため、Junosがぶつかりにくかった状態だったようです。

ためしに、インベントリで他のネットワーク機器を無効化し、Junos のみでワークフローを再実行したら、あっさり再現しました。

直列にしてあげると、安定します。

リストアのエラー発生と調査

このワークフローはもう一エラーが。最後のジョブで設定をリストア仕様とした際に、バックアップファイルが見つからないというエラーです。

これは、最初のジョブで作るバックアップファイル名に、txt がついたりつかなかったりするためのようです。リストアの処理側を正とするなら、バックアップファイルはすべて txt をつけるのが正しいのでしょう。

バックアップのPlaybookの処理を追っていくと、OSごとにタスクファイルが別れていて、ios 向けは txt がついて、他はつかない形になっていました。

※ 2021/12/20 追記 後日、txt が付くように修正して動作確認する様子(スレッドに続きます)

リストアジョブの Survey で気になったこと(意図したコンフィグでリストアできない)

リストアのジョブで、もう一点気になったのが Servey です。ワークフローを組んでいくときに、リストアのジョブを選択すると、ロールバック対象の日時(つまり /backup ディレクトリ配下のディレクトリ名)をどうするか選択します。Survey の設定上、必須なのでなにか選択しないといけません。

f:id:akira6592:20211216221429p:plain
リストアジョブの Survey

この選択肢は、バックアップジョブを実行するたびに追加されます。この段階では、前の Exercise で実行したジョブによって、1つだけ選択肢がある状態なので、それを選択しました。

しかしこれでは選択が固定され、ここで選択した日時のバックアップファイル(今回の場合、/backup/2021-12-16-10-34 配下)が無条件にリストアされてしまいます。これでは、せっかくワークフローの最初のジョブで取得した、「設定直前のバックアップコンフィグ」がリストアに使われないことになります。

ここが気になった点でした。

なお、リストアは IOS については ios_config モジュールの src オプションを利用しています。今回のタスクの場合、もともと「A、B、C」という設定が入っている状態で「A、C」というバックアップファイルでリストアしても変化がありません。このあたりは現象の切り分け時に意識する必要があるかなと思います。

もしこの「意図したコンフィグがリストアで使用されない」現象を解消するのであれば、

  • リストアジョブの日時選択 Survey は必須でなくする
  • バックアップジョブでバックアップファイルを保存したパスを set_statsアーティファクトとして覚えておく
  • それをリストアジョブで利用する

という感じでしょうか。(未検証)

リストアジョブの Survey が画面から開けなくなってしまったのもちょっと気になっています。

f:id:akira6592:20211216224819p:plain
リストアジョブの Survey

まとめ

新しいコンテンツ、環境でハンズオンができてよかったです。CLI のほうで、ansible-playbook を使わないのは新鮮でした。

コンテンツや環境、機会を用意していただいたレッドハットさん、ありがとうございました!

また近いうちに開催予定があるようです。気になった方は、Ansible ユーザー会 の connpass グループに入っておくと通知が来るので便利です。

Ansible ユーザー会 - connpass

また参加したいと思います。