てくなべ (tekunabe)

ansible / network / automation

[Ansible] 「つまずき Ansible 【Part9】Ansible Tower か AWX」ふりかえり

はじめに 2020/07/04 に、YouTube Live で「つまずき Ansible 【Part9】Ansible Tower か AWX」という配信をしました。 実際に作業しながらエラーと戦って進めるシリーズです。 tekunabe.connpass.com 今回は、こまで作ったインベントリファイルやPlaybookな…

[Ansible] eos_command モジュールで show コマンドの結果を JSON で取得する

はじめに Arista EOS のネットワーク機器向けに、主に show コマンドを実行する eos_command というモジュールがあります。 このモジュールでは、コマンドの実行結果を JSON 形式でも取得できます。 簡単なサンプルでご紹介します。 試した限り コネクション…

[Ansible] 明示的なグループに所属しないホストが暗黙的に所属する ungrouped グループ

はじめに Ansible には、all と ungrouped というデフォルトで定義されたグループがあります。 all はすべてのホストが所属するグループです。 一方で、 ungrouped は、明示的なグループに所属さないホストが暗黙的に所属するグループです。 言葉では少しわ…

GitLab の WebIDE が開かないときの対処(external_url の修正)

はじめに GitLab には、Web ブラウザ上でファイルの修正などができる WebIDE という機能があります。 先日、WebIDE を開くためのボタンを押してもガワだけ表示されて、中身が表示されないような現象で出くわしました。 この記事では、現象と対処を簡単にまと…

[Ansible] 通常時は実行せず、タグが指定されたときのみタスクを実行する

はじめに Playbook には タグ機能があり、ansible-playbook コマンドから特定のタグを持ったタスクのみ実行できます。 タグの中には、いくつか特別なものがあります。 never タグをつけたタスクは、通常時は無視されます。他のタグをあわせて付けると、その…

[Ansible] 「つまずき Ansible 【Part8】Collection を使う」ふりかえり

はじめに 2020/06/27 に、YouTube Live で「つまずき Ansible 【Part8】Collection を使う」という配信をしました。 実際に作業しながらエラーと戦って進めるシリーズです。 tekunabe.connpass.com 今回は、Collectionのインストールと、Collection のモジュ…

[Ansible] 「つまずき Ansible 【Part7】Ansible 2.10.0b1 でずっこける」ふりかえり

はじめに 2020/06/21 に、YouTube Live で「つまずき Ansible 【Part7】Ansible 2.10.0b1 でずっこける」という配信をしました。 実際に作業しながらエラーと戦って進めるシリーズです。 tekunabe.connpass.com 今回は、前日リリースされた Ansible 2.10.0b1…

[Ansible] cisco.ios collection 0.0.3 リリース、ACL や OSPF などのモジュールなどが追加

はじめに 追加モジュール cisco.ios.ios_acl_interfaces cisco.ios.ios_acls cisco.ios.ios_ospfv2 cisco.ios.ios_static_routes これらモジュールを利用するには? おわりに はじめに Ansible は、Ansible 本体の標準モジュールの他に、Collection という形…

[Ansible] 「つまずき Ansible 【Part6】Juniper Junos に何かしてみる」ふりかえり

はじめに 2020/06/20 に、YouTube Live で「[つまずき Ansible 【Part6】Juniper Junos に何かしてみる(https://www.youtube.com/watch?v=jJedVzaGDRU)」という配信をしました。 実際に作業しながらエラーと戦って進めるシリーズです。 tekunabe.connpass.co…

[Ansible] user01、user02・・のように数値を任意の桁数にゼロパディングする

はじめに なにか連番を生成する際に、user1、user2・・user10 ではなく、user01、user02・・のように 特定の桁数でゼロパディングしたいことはないでしょうか。 Jinja2 の filter でフォーマットするのが便利です。 動作確認環境 Ansible 2.9.9 Jinja2 2.11.…

CentOS 8.2 で dnf install python38 すると Python 3.8 がインストールできる

はじめに Red Hat Enterprise Linux 8.2 リリースノートに、yum install python38 で Python 3.8 がするっとインストールできる旨の記述をみかけました。 access.redhat.com 新しいモジュール python38 が導入されました。 先日、CentOS 8.2 もリリースされ…

[Ansible] Network Resource Module で実際に実行されるコマンドを確認する方法

はじめに Ansible のネットワークモジュールの中には、コンフィグを直接指定しないタイプのものがあります。 中でも Ansible 2.9 から追加された Network Resource Module の機能は強力です。 とはいえ、ネットワークエンジニアとしては「実際どういうコマン…

[nornir] NETCONF で Cisco IOS XE 機器のコンフィグや状態の情報を取得する

はじめに Python 製自動化フレームワーク nornir は、接続方法として netmikoや、NAPALM の他に、NETCONF にも対応しています。 この記事では NETCONF 経由で、Cisco IOS XE 機器の runnin-config、インターフェース、ルーティングテーブを取得するサンプル…

[Ansible] 「つまずき Ansible 【Part5】Arista EOS に何かしてみる」ふりかえり

はじめに 2020/06/13 に、YouTube Live で「つまずき Ansible 【Part5】Arista EOS に何かしてみる」という配信をしました。 実際に作業しながらエラーと戦って進めるシリーズです。 tekunabe.connpass.com 今回は、Arista EOS の機器(cEOS-lab) への接続…

[Ansible] netconf_get モジュールで Cisco IOS XE の情報を NETCONF で取得する

はじめに 以前、restconf_get モジュールで Cisco IOS XE のインターフェース情報を取得してみる という記事で、Ansible で RESTCONF 経由で情報取得する Playbook をご紹介しました。 この記事では RESTCONF ではく、netconf_get モジュールでCisco IOS XE …

[Ansible] 変数名に使える文字

利用できない変数名を利用しようとしてハマったことはありませんでしょうか。 私はあります。 変数名に使える文字は公式ドキュメントに掲載されています。一度目を通しておくと、ハマらなくて済みそうです。 docs.ansible.com 上記は devel ブランチのドキュ…

[Ansible] 変数名を参照する際に "{{ varname }}" のようにクォーテーションで囲う理由

はじめに 2020/06/09 開催の【リモート開催】Ansibleもくもく会 (サーバ編 & NW編)2020.06 にメンターとして参加させていただきました。 いただいた質問の中に、変数名の参照の際にダブルクォーテーションで囲う場合と囲わない場合があるが必須?というも…

[Ansible] 「つまずき Ansible 【Part4】インターフェースとOSPFの設定」ふりかえり

はじめに 2020/06/06 に、YouTube Live で「つまずき Ansible 【Part4】インターフェースとOSPFの設定」という配信をしました。 実際に作業しながらエラーと戦って進めるシリーズです。 tekunabe.connpass.com 今回は、Cisco IOS の機器に、インターフェース…

CML(VIRL2)のエラー「 Failed to start node XX: Unable to define node (Unable to clone image)」の対処

エラー内容 CML でラボ上に機器を追加して起動すると以下のエラーに遭遇しました。 Failed to start node XX: Unable to define node (Unable to clone image) XX はcsr1000v-0 などのノード名です。 エラーのポップアップ エラーのログ 原因 各種機器のイメ…

直前に実行したコマンドの最後の引数を取得する方法3つ

はじめに よく忘れてしまうのですが、直前に実行したコマンドの最後の引数を取得する方法があります。 例えば、 mkdir hoge したあとに、hoge に cd したい時に便利です。 最近、tiwtter でいくつか方法があることを知りました。 忘れる自信があるので書き留…

[Ansible] つまずきながら進める Ansible 【Part3】ふりかえり

はじめに 2020/05/30 に、YouTube Live でつまずいきながら進める Ansible 【Part3】という配信をしました。 実際に作業しながらエラーと戦って進めるシリーズです。 tekunabe.connpass.com 前回までは、Ansible のインストールとインベントリファイルの作成…

[Ansible] ios_config モジュールで save_when: modified 指定時に常に changed になる原因

はじめに Cisco IOS 機器に設定コンフィグを流し込む、ios_config モジュールには、コンフィグの保存(copy running-config startup-config)する条件を指定する、save_whenをいうオプションがあります。 ここで、modified を指定すると「running-config と …

[Ansible/AWX] ジョブテンプレートやワークフロージョブテンプレートを一括削除するワンライナー

はじめに awx コマンドを利用すると、API を通じて Ansible Tower / AWX 上の 様々な操作ができます。 少し組み合わせて、ジョブテンプレートやワークフロージョブテンプレートを一括削除するワンライナーをご紹介します。 awx コマンドのインストールや接続…

[Ansible] コマンド版で使用している Playbook を Ansible Tower / AWX に載せる前にチェックしたいポイント

はじめに Ansible Tower / AWX は、GUI からジョブという実行単位を経由して、Playbook を実行します。 そのため、CLI からの対話的な操作は受け付けられません。 Ansible Tower / AWX に載せる前に他の方法に変える必要があります。 vars_prompt による対話…

[Ansible] つまずきながら進める Ansible 【Part2】ふりかえり

はじめに 2020/05/23 に、YouTube Live でつまずいきながら進める Ansible 【Part2】という配信をしました。 実際に作業しながらエラーと戦って進めるシリーズです。 前回の Part1(動画、ふりかえりブログ)では、Ansible のインストール、インベントリファ…

[Ansible] Ansible Tower 3.7.0 でワークフローノード作成モジュール(awx.awx.tower_workflow_job_template_node)が使えるようになった

はじめに 先日、Ansible Tower 3.7 がリリースされました。 ワークフロージョブテンプレートに対して、ワークフローノードを定義する awx.awx.tower_workflow_job_template_node が、Asnible Tower 3.6 系に対しては使えなかったのですが、3.7 に試したら使…

[Ansible] 特定バージョンの collection をインストールするには

基本コマンド collection をインストールするコマンドは ansible-galaxy collection install です。 たとえば、cisco.ios であれば以下のとおりです。 ansible-galaxy collection install cisco.ios この場合、最新の安定版リリースがインストールされます。…

AWS 上の Cisco CSR1000V インスタンスにユーザーデータを指定する

はじめに AWS で EC2 インスタンス起動時にスクリプト実行させるユーザーデータという機能があります。 サーバーが対象であれば、普通にスクリプトを書くようにコマンドを羅列すればよいわけですが、仮想ルーターなどの仮想アプライアンスの場合は、個別の指…

[Ansible] 変数優先順位の「20. role (and include_role) params」とは何なのか

はじめに Ansible は、様々な場所に変数を定義できます。便利な半面、優先順位がどうだったか混乱してしまうこともあります。 調べたいときに確認するのが、以下の公式ドキュメントのページです。 docs.ansible.com この中で、20. role (and include_role) p…

[Ansible/AWX] AWX コマンドで git プロジェクトを更新する

はじめに 先日以下のツイートを拝見しました。煩わしさ同感です。 1.新規playbookをリポジトリに追加 → 2.プロジェクト同期 → 3.ジョブテンプレートで新規playbookを選択としたい場合に、2.で同期しないとplaybook選択するプルダウンに新規playbookが出てこ…