てくなべ (tekunabe)

ansible / network / automation

ansible

[Ansible] モジュールのオプションのデフォルトを自分で指定できる module_defaults

■ はじめに Network Features Coming Soon in Ansible Engine 2.9 を見ているときにたまたま知ったのですが、モジュールのオプションのデフォルトを自分で指定できる module_defaults というディレクティブがあります。 タスクごとに、毎回指定しているよう…

[Ansible] AWX を RHEL 8 にインストールする(HTTPS化もあり)

■ はじめに Red Hat Enterprise Linux 8 (以下、RHEL 8)に、Ansible Tower のアップストリームである AWX をインスールする手順をまとめます。 環境 RHEL 8.0 on AWS EC2 t2-medium (ami-0520e698dd500b1d1) Python 3.6.8 デプロイ方法 docker-compose AWX …

[Ansible] CentOS 8 に Ansible をインストールする(Python 3 + venv + pip)

■ はじめに CentOS 8 では、システムで利用する Python が Python 3 になったり、デフォルトでは python コマンドが利用できなかったりと、CentOS 7 とは Python 事情が異なります。そのため、Ansible を pip でインストールする場合も、CentOS 7 とは少し手…

[Ansible] 利用する Python をタスクごとに切り替える方法(ansible_python_interpreter をタスク変数で指定)

■ はじめに Ansible では、ターゲットノード(SSH接続先)で利用する Python を ansible_python_interpreter という変数で明示的に指定できます。 この変数は、インベントリ変数や host_vars の他にも、タスク変数としても指定できます。そのため、タスクご…

[Ansible] Cisco ACI モジュールの REST API ログイン処理の流れ

はじめに Ansible には Cisco ACI 対応のモジュールが多数用意されています。 ACI の REST API を利用しているのだろうな、という予想はすぐついたのですが、実際のログインの処理を覗いてみたくなりました。 ACI モジュール共通だと思いますが、ここでは代…

[Ansible] Collection 管理の mazer は Ansible 2.9 で非推奨に、ansible-galaxy collection サブコマンドに統合へ

はじめに Ansible 2.8 から Ansible Collection という新たな配布方式が、Experimental support という位置づけではじまりました。 ロールだけでなく、モジュール、プラグインもまとめて配布できるのが特徴です。 galaxy.ansible.comでも、Type を Collectio…

[Ansible] 見知らぬ Ansible 環境に入った時に確認したいこと

はじめに 「ここに Ansible があります。あなたはこの環境をを使います。」と言われた時、何をすればよいでしょうか。 この記事では、自分で管理していない環境の Ansible を使う事になった場合に、環境を調査するためのコマンドを紹介します。 以下ツイート…

[Ansible] Visual Studio Code で Playbook を書く時に便利な拡張たち

はじめに Visual Studio Code(以下、VS Code)で Ansible の Playbook を書く時に、私が便利に利用させてもらっている拡張をご紹介します。 「自分は Windows で VS Code 使ってて、Ansible は SSH 先の Linux だから関係ないや。」という方も、最後の「Rem…

[Ansible] フィルターを手軽に試行錯誤したいときの ansible-console コマンドの使い方

はじめに Anislbe には、値を変換したり取り出したりする、さまざまなフィルター機能があります。 しかし、Playbook を書かく時、なかなか意図通りにフィルターできないこともあるのではないしょうか。 このようなときは、毎回 Playbook を実行するのも手間…

[Ansible] 変数 ansible_network_os に指定できる値 (eos/ios/nxos/junosなど)

変数 ansible_network_os とは Ansible のネットワークモジュールでは、多くの場合ansible_network_os という変数に、どのプラットフォーム(Cisco IOS、Arista EOS など)を対象とするか指定する必要あります。 サンプルの Playbook でも見かけることは多い…

[Ansible] 小ネタ: 順番が違うだけで読みにくい Playbook

はじめに 頭の体操なので、実運用で利用するのはおすすめしませんシリーズです。 Playbook は YAML で書きます。ディクショナリの順番には処理上の意味はありません。ところが、慣例上は以下のように hosts から書くことが書くことが多いのでしょうか。 - ho…

[Ansible] restconf_config モジュールで Cisco IOS XE のSyslogサーバー設定追加・削除してみる

■ はじめに Ansible 2.8 では、RESTCONF でネットワーク機器の情報を取得したり、設定を変更したりできる RESTCONF モジュールが導入されました。 以前、本ブログでは、モジュールを利用してIOS-XE へ RESTCONF でアクセスしてインターフェース情報の取得を…

show コマンド結果をパースする方法あれこれ(TextFSM / Genie Parser と Netmiko / Ansible の組み合わせ)

2019/09/05 に、ネットワークプログラマビリティ勉強会 #18で、「show コマンド結果をパースする方法あれこれ」という発表をさせていだきました。サンプルコードが中心だったため、コピペしやすいように、ブログ記事として書きおこします。 ■ 1. はじめに ■ …

[Ansible] ipaddr フィルターで特定の範囲のIPアドレスを抽出する

■ はじめに Ansible には、IP アドレスに対してさまざまフィルターをかける ipaddrというフィルタープラグインがあります。 過去記事参考: [ipaddr フィルターでプレフィックス表記とネットマスク表記を変換する) このフィルターを使って、IPアドレスのリス…

[Ansible] TRANSFORM_INVALID_GROUP_CHARS を ignore に設定したときの表示が Ansible 2.8.2 から変更された

はじめに Ansible 2.8.0 から、グループ名に利用できる文字が厳格化されました。 たとえば、ハイフンが入っていると不正とみなされ、WARNING が表示されます。 https://www.slideshare.net/akira6592/ansible28update/21 この挙動は、TRANSFORM_INVALID_GROU…

[Ansible] ipaddr フィルターでプレフィックス表記とネットマスク表記を変換する

■ はじめに Ansible には、IP アドレスに対してさまざまフィルターをかける ipaddrというフィルタープラグインがあります。 このフィルターを使って、プレフィックス表記とネットマスク表記を相互に変換する方法をまとまめす。 プレフィックス表記からネット…

[Ansible] 実行ログで全タスク中の何タスク目なのかを表示する counter_enabled コールバックプラグインを検証する

■ はじめに ansible-playbook コマンドを実行中、流れる実行ログを眺めながら「あとどのくらいのタスクが残っているんだろう?」と考えたことはありませんでしょうか。 counter_enabled というコールバックプラグインを利用すると、全タスク中の何タスク目な…

[Ansible] 実行ログに OK やスキップしたタスクを表示しないようにする (display_ok_hosts / display_skipped_hosts)

■ はじめに ansible-playbook コマンドの実行ログは通常、OK なタスクを非常時にする機能があります。ansible.cfg や環境変数で表示、非表示を切り替えます。 ok なタスクを非表示にする設定 [defaults] display_ok_hosts = no スキップしたタスクを非表示に…

[Ansible] callback plugin を yaml に変更して標準出力の改行を見やすくする

■ はじめに Ansible には callback plugin という仕組みがあり、結果出力の形式を変更したりすることができます。 yaml に変更すると、改行コードごとに改行された形で標準出力されます。 本記事でも、callback plugin を yaml に変更する方法ど、出力例をご…

[Ansible] 実験的サポートが開始された名前空間機能 Ansible Collections

はじめに [Ansible] Ansible 2.8 リリース、便利機能や注意点まとめ - てくなべ (tekunabe) でも少し触れたた通り、Ansible 2.8 から Ansible Collections という機能が実験的サポートとして追加されました。 正直、詳細はまだ理解できていないのですが、名…

[Ansible] ネットワークプラットフォームのバージョンとサポートの関係

はじめに Ansible は、Ansible 2.8 現在 50以上のネットワークプラットフォームに対応しています。 プラットフォームごとに、どのバージョンでテスト、サポートされているかの情報が、探すのにやや手間取ってしまうので、こちらにリンクまとめておきます。 A…

[Ansible] 小ネタ: Playbook は JSON で書ける

はじめに ※あくまで小ネタの話なので実運用で利用するのはおすすめしません。 YAML は JSON のほぼスーパーセットなのであれば、JSON で Playbook を書けるのでは?と思ったことがあったので試してみました。 Playbook $ cat test.yml [ { "gather_facts": f…

[Ansible] エラー「paramiko is not installed: No module named 'paramiko'」の原因と対策

■ エラーの原因と対策 Ansible コントールノードに paramiko (Python の SSHクライアント実装ライブラリ)がインストールされていない環境で、Ansible を実行すると、以下のようなエラーが表示されて異常終了してしまいます。 fatal: [iosao1]: FAILED! => {"…

[Ansible] Ansible 2.8 リリース、便利機能や注意点まとめ

■ はじめに 2019/05/16 に Ansible 2.8.0 がリリースされました。多数のモジュールの追加や、機能追加、バグ修正、機能削除、機能の非推奨化、仕様変更が含まれています。 大きめなトピックとしては以下のものがあります。 Python のインタープリターを探索…

[Ansible] restconf_get モジュールで Cisco IOS XE のインターフェース情報を取得してみる

■ はじめに Ansible 2.8 では、RESTCONF でネットワーク機器の情報を取得したり、設定を変更したりできる RESTCONF モジュールが導入されます。(本記事執筆時現在 RC段階) この記事では restconf_get モジュールを利用して、IOS-XE へ RESTCONF でアクセスし…

[Ansible] 「ポート管理表+パラメータ表+Jinja2テンプレートから、L2SWのConfigを自動生成してみた」を Ansible で

■ はじめに 以下の記事(以下、元記事)を拝見し、Ansible でもできるかなと思って試してみました。 qiita.com 開発中の Ansible 2.8 で導入予定の read_csv モジュールを利用しています。現在(2019/04/02)安定版の Ansible 2.7 系では利用できませんのでご…

[Ansible] read_csv モジュールの基本的な使い方(CSVファイルをリストやディクショナリとして読み込む)

■ はじめに 2019年5月リリース予定の Ansible 2.8 では、CSV ファイルをリストやディクショナリとして読み込む read_csv モジュール が導入されます。カンマ区切りのファイルだけでなく、別のデリミタ(;など)を指定することもできます。 この記事では、 read…

[Ansible] ファイルや変数内の改行ごとに分割してリストにする splitlines() の使い方

■ はじめに ファイルの内容や変数に改行が含まれている場合、1行ごとにリストにしてループなどの処理をしたい場合があります。そんなときに利用できるのが、 splitlines() です。split() が引数で指定した文字で分割するのに対して、splitlines() は改行で分…

[Ansible] グループAとBの両方に所属しているホストを対象にする方法

■ はじめに Ansible では、管理対象のホストをグループ化してインベントリファイルに定義できます。Playbook 内にグループを指定すると、指定したグループに所属するホストのみが対象になります。 では「グループAとBに両方に所属しているホスト」を対象にし…

[Ansible] Playbook(YAML)のための vim のインデント関連設定

■ はじめに Ansible の Playbook を書いて試すときは、普段 VSCode を使っているため、あまり vim は使っていません。ですが、vim しか使えない環境に置かれたときのために vim で Playbook (YAML) を書くときに便利そうな設定を調べました。 インデント関連…