てくなべ (tekunabe)

ansible / network / automation / StackStorm

ansible

[Ansible] 2018年のAnsible ネットワークモジュールのアップデートまとめ(詳細版)

これは Ansible Advent Calendar 2018 の15日目の記事です。 ■ はじめに 2018年、Ansible は 2.5、2.6、2.7 とバージョンアップを重ねてきました。ネットワーク関連では、新規対応プラットフォームやモジュールの追加の他にも、ネットワークモジュール用コネ…

[Ansible] ansible-playbook コマンドの -e (--extra-vars) オプションは変数ファイル名も指定できる

-e (--extra-vars) オプションとは ansible-playbook コマンドには、-e(または --extra-bars) という、extra vars(一番優先される変数の種類)を指定するオプションがあります。複数指定する場合は、複数の -e オプションを使用します。 ansible-playbook…

[Ansible] Playbook Debugger でタスク変数の値を変更してもタスクに反映されない現象について

■ はじめに Ansible には Playbook Debugger という、Playbook 実行時に変数の値を確認、変更などできる機能があります。 参考 Playbook Debugger 使えばきっと一目置かれるAnsibleのちょっと高度な機能 Ansible の Playbook Debugger を常に起動させる方法…

[Ansible] ios_config モジュールはデフォルトでは copy run start しない

■ デフォルトでは copy run start によるコンフィグ保存をしない Ansible には、Cisco IOS ネットワーク機器に対して設定変更などができる ios_config モジュールがあります。 lines オプションなどを利用して実行したいコマンドを指定します。 使用例 - nam…

Ansibleもくもく会を誘致して自社会場で開催した話

■ はじめに 2018/12/10 に弊社を会場として「Ansibleもくもく会 2018.12 ネットワーク編 in エーピーコミュニケーションズ」を開催しました。 ansible-users.connpass.com Ansibleもくもく会は、Ansible ユーザー会というコミュニティ主催とするハンズオンの…

[Ansible] null コールバックプラグインをためしてみた

はじめに:コールバックプラグインとは Ansible には コールバックプラグインという仕組みがあり、たとえば json コールバックプラグインを利用すると、ansible-playbook 実行結果の表示は JSON に変更できます。 Ansible 2.5 から null コールバックプラグ…

ネットワークエンジニアがはじめてプルリクを出した話(Ansible)

これは DevLOVE Advent Calendar 2018 の 6日目の記事です。 はじめに DevLOVE のコンセプトは以前は以下の2つでした。 開発の楽しさを発見しよう。広げよう。 開発の現場を前進させよう。 今年は 3つめが追加されました。 自分から越境しよう。 越境とは何…

[Batfish/Ansible] Batfish と Ansible によるネットワークコンフィグ事前検証のウェビナーのまとめ

これは Batfish Advent Calendar 2018 の1日目の記事です。 先日、Ansible と Batfish を使ったネットワークコンフィグの事前検証についてのウェビナーがあり、Ansible 公式サイトに動画も公開されました。 この記事では、動画の内容のまとめと補足をしたい…

[Ansible] グループ変数を活用したネットワーク機器への Syslog サーバー追加

この記事は、Software Design 2018年12月号 の 特集1「[超速]入門 Ansible」内の「第3章:Ansibleでネットワーク作業も自動化」(以下、基本編)の続きです。 ソフトウェアデザイン 2018年12月号作者: 中島倫明,横地晃,齊藤秀喜,楠正憲,三廻部大,鷲北賢,くつ…

【Ansible】ios_config モジュールでべき等性を考慮せずにコンフィグを投入する方法(match: none)

■ match オプション を none にするとべき等性を考慮しない Ansible には、Cisco IOS 機器にコンフィグ投入などができる ios_config というモジュールがあります。 このモジュールはデフォルトで、べき等性を保とうとする仕様になっています。 大まかな流れ…

【Ansible】ios_config モジュールで特権ユーザーにもかかわらず operation requires privilege escalation が発生する不具合について(2.7.1で修正)

■ 現象: 特権ユーザーにもかかわらずエラーに 特定条件下で、Ansible の ios_config モジュール使用時に、特権ユーザーを利用しているにもかかわらず、operation requires privilege escalation というエラーが表示され、Playbook の処理が中断されてしまう…

RED HAT ANSIBLE NETWORK AUTOMATION のアップデート情報(翻訳)

この翻訳記事は Ansible 公式ブログである THE INSIDE PLAYBOOK の記事、RED HAT ANSIBLE NETWORK AUTOMATION UPDATESを、筆者であるSean Cavanaughさん及びRed Hat の許可を得て翻訳したものです。 先日、今まで最大の AnsibleFest は成功を収めました。Ans…

#ssmjp 2018/10 で「Ansibleではじめるサーバー・ネットワークの自動化 (Ansible2.7情報つき)」という発表をしました

■ Ansibleではじめるサーバー・ネットワークの自動化 (Ansible2.7情報つき) 2018/10/12 開催の #ssmjp 2018/10 で「Ansibleではじめるサーバー・ネットワークの自動化 (Ansible2.7情報つき)」という発表をさせていだきました。 Ansibleではじめるサーバ…

【Ansible】データから「select * from users where name="hoge"」的な抽出ができる selectattr

SQL の where 句のように ディクショナリのリストから抽出するには selectattr を利用 以下のようなディクショナリのリストがあるとします。DBにおけるテーブルのデータのような構造です。 users: - name: yamada age: 42 - name: tanaka age: 26 - name: su…

【Ansible】pip モジュールでバージョン指定しながら複数のパッケージを指定できるようになった(Ansible 2.7新機能)

■ Ansible 2.7 で pip モジュールの name オプションで、バージョン指定しながら複数のパッケージを指定できるように Ansible の pip モジュールでは、これまで name オプションの値をリストで指定すると、pip install pkgA pkgB pkgC のように、複数のパッ…

[Ansible] The invalid attribute in Playbook causes error by default in Ansible 2.7

(日本語版はこちら) Sample playbook - hosts: localhost gather_facts: no tasks: - name: invalid attribute test debug: msg: test xxxxx: yyyy # invalid attribute In Ansible version >= 2.6: WARNING $ ansible-playbook -i localhost, attr.yml [WAR…

【Ansible】ホストに到達不能だった状態を無視する ignore_unreachable について(Ansible 2.7 新機能)

■ はじめに Ansible 2.7 で、ターゲットホストに到達不能の状態を無視する ignore_unreachable キーワードが追加されました。 changelog New keyword ignore_unreachable for plays and blocks. Allows ignoring tasks that fail due to unreachable hosts, …

【Ansible】Ansible 2.7 からデフォルトで無効なタスク属性があるとエラーになる

(English version) はじめに 以下の例のように、Playbook 内に無効な属性が指定されいる場合のデフォルトの挙動が Ansible 2.7 で変更されました。 - hosts: localhost gather_facts: no tasks: - name: invalid attribute test debug: msg: test xxxxx: yyy…

【Ansible】Ansible 2.7 リリース、Mikrotik RouterOS などに対応。マルチベンダー対応コマンドモジュールの登場など、ネットワーク対応も強化

■ 1. はじめに 2018/10/04 に Ansible 2.7 がリリースされました。 pip install ansible で 2.7.0.0 がインストールされます。 Changelog https://github.com/ansible/ansible/blob/stable-2.7/changelogs/CHANGELOG-v2.7.rst#v2-7-0 ネットワーク対応につい…

【Ansible】Ansible 2.7 で追加されたネットワークモジュールのリスト(rc4)

Ansible 2.7 で追加されたネットワークモジュールのリスト(rc4版)です。 aci_interface_policy_ospf - Manage OSPF interface policies (ospf:IfPol) bigip_appsvcs_extension - Manage application service deployments bigip_cli_alias - Manage CLI ali…

【Ansible】 Playbook Debugger を特定のタスクだけ起動する方法

Playbook Debugger Ansible には、Playbook 実行時に変数値の確認や、オプション値の変更ができる Playbook Debugger という機能があります。 デバッガーの起動条件 Ansible 2.5 以降では、debugger キーワードで、デバッガーの起動条件を指定できます。 た…

【Ansible】--tags オプションを複数した時にタグをマージするバージョンとしないバージョンがある

■ はじめに Ansible 2.7 への ポーティングガイドを眺めていたら、このような記載がありました。 If you specify --tags or --skip-tags multiple times on the command line, Ansible will merge the specified tags together. In previous versions of Ans…

【Ansible】インベントリファイルのグループ親子関係の確認には ansible-inventory コマンドの --graph オプションが便利

Ansible には インベントリファイル の情報を表示するansible-inventory コマンドがあります。グループの親子関係を階層化して表示する--graph オプションが便利なのでご紹介します。 インベントリファイル 8個のホストを、種別(web/router)や地域、東日本…

【Ansible】ios_command / ios_config モジュールでエラー "unable to set terminal parameters" が表示される場合の対処

■ はじめに 検証環境で、ios_command モジュールや、ios_config モジュールを利用した Playbook 実行時に、以下のようなエラーメッセージに遭遇しました。 fatal: [172.16.0.2]: FAILED! => {"msg": "unable to set terminal parameters"} 自分が調べた方法…

Ansible 2.7 で導入予定のネットワークモジュール cli_configを試す

■ はじめに 現在開発中の Ansible 2.7 (develブランチ) で、ネットワーク機器への 設定系 コマンドを投入するモジュール cli_config が登場しました。 なお、同じく Ansible 2.7 で開発中の 参照系 コマンドを実行するモジュール cli_command については過去…

【Ansible】ping 系モジュールまとめ(ping/win_ping/ios_ping/nxos_ping/net_ping)

Ansible には ping モジュールや net_ping モジュールなど、モジュール名に ping が含まれるものがいくつかあります。 名前は似ていますが、どこからどこへの ping なのか、何のプロトコルを使うのか、などの点で性質が異なります。 例えば、 公式ドキュメン…

【Ansible】when はタスクの最後に指定しなくても良い

(このツイートのブログ版です) どこで聞いたか覚えてないのですが、Ansible の Playbook のタスクで 「when による条件をつけるとき、タスクの最後に指定するのが違和感がある。プログラムの if 分だと頭につけるが。」という意見があって、when はどこで…

【Ansible】junos_facts でバージョン情報が取得できない場合の対処

■ はじめに Ansible には junos_facts という Juniper Junos の機器のファクトを収集するモジュールがあります。 通常であれば、 ansible_net_version または、 ansible_facts.net_version という変数で、Junos のバージョンを取得できるのですが、(そそら…

【Ansible】公式ドキュメントの対応バージョンの確認と切り替え方法

■ はじめに Ansible の調べ物をしていて、モジュールの説明ページなどを見るときは、そのドキュメントの対応バージョンを気にするようにしています。 使っている Ansible バージョンでそのモジュールが使えるかどうか、など。 この記事では、対応バージョン…

【Ansible】net_get モジュールで SCP でコンフィグをバックアップする

■ はじめに Ansible 2.6 で SCP/SFTP でネットワーク機器とファイルを送受信する net_get モジュールと、 net_put モジュール ができました。 このうち、この記事ではファイルを受信する net_get モジュールを使って、Cisco IOS の startup-config のバック…