てくなべ (tekunabe)

ansible / network / automation / StackStorm

ansible

#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) cli_command - Run a cli command on cli-based network devices cli_config - Push text based configu…

【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 のバック…

【Ansible】 junos モジュール使用時にエラー "'NoneType' object has no attribute 'startswith'" になる場合の対処

■ 現象 junos_command や junos_config モジュールを netconf 接続で使用時に、Playbook などの書き方の不備により fatal: [172.16.0.1]: FAILED! => {"msg": "'NoneType' object has no attribute 'startswith'"} というエラーになってしまうことがあります…

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

■ はじめに 現在開発中の Ansible 2.7 (develブランチ) で、ネットワーク機器への 参照系コマンドを実行するモジュール cli_command が登場したことを知りました。 Ansible 2.7 New Modules2018/08/07cli_command名前の通り、ネットワークデバイスに対して、…

Ansible Night in Fukuoka 2018.08 で「Ansibleではじめるネットワーク自動化」という発表をしてきました

■ はじめに 【祝】初福岡開催! Ansible Nitght (旧Meetup)は2017年までは東京でのみの開催でしたが、2018年は他の場所でも開催されています。 7月には大阪で、そして8月3日には福岡で Ansible Night in Fukuoka 2018.08 が開催されました。 ansible-users.c…

Ansible もくもく会 (第4回)にメンターとして参加してきました #ansiblejp

Ansible ユーザー会主催の、Ansible もくもく会 (第3回)にメンター参加してきました。 ブログ枠で参加したわけではないですが、メンターって意外とハードル低いですよ、という感じを共有したく思います。 ansible-users.connpass.com Ansibleもくもく会へ…

Ansible でインベントリファイルを用意せずに対象ホストを指定する方法

-i にカンマ区切りで直接ホストを指定できる 通常、 ansible-playbook コマンドや ansible コマンドのオプション -i オプションでは、イベントリファイル名を指定することが多いと思います。 この -i オプションですが、インベントリファイルを用意すること…

docker run で Ansible の Playbook を実行する

ansible のリポジトリに ansible-runner なるものを見つけました。 github.com デモ用に docker で ansible を動かす例が載っていました。 docker run -it --rm -e RUNNER_PLAYBOOK=test.yml ansible/ansible-runner:latest 手元に ansible がない環境で doc…

日本のネットワーク機器ベンダーの Ansible 対応状況(Alaxala・APRESIA)

■ はじめに Ansible は Cisco、Juniper、ARISTAなどのネットワーク機器にも対応しています。 公式ドキュメント上のネットワークモジュールの一覧ページを確認すると分かりますが、日本のネットワーク機器に対応するモジュールは標準モジュールにはありません…

Ansible の loop は flatten されない(with_items ではなく with_list と同じ)

■ はじめに Ansible 2.5 で with_* の代わりに利用できる loop キーワードが利用できるようになりました。 参考: 2.5.0 CHANGELOG 今まで with_items と同じと思い込んでいたのですが、そうではなく with_list と同じ、ということに気がついたのでまとめます…

StackStorm の Ansible Pack で利用するPythonパッケージの追加インストール方法

はじめに StackStorm の Ansible Pack を利用して Junos のルーターに接続しようとしたところ、 ncclient is not installed というエラーになってしまいました。 このエラー自身はAnsible 単体で利用した時にも見かけたことがあったので対処方法を知っていま…

StackStorm と Ansible で Cisco IOS ルーターに設定を投入する(st2 run編)

■ はじめに StackStorm と Ansible 連携を試すために、Cisco IOS ルーターに設定を投入する方法を確認しました。 この記事では、環境の準備と st2 run コマンドによる簡単な Ansible 連携の方法をご紹介します。 ■ StackStorm側の準備 StackStorm 本体のイン…

Ansible 2.5.3 で ios_config モジュールのコンフィグバックアップ時に defaults オプションを参照するようになった

■ はじめに ios_config モジュールには、コンフィグのバックアップファイルを生成する際に利用するコマンドを show running-config にするか、show running-config all または full (以降 show run all) にするかを決める、defaults というオプションがあり…

Ansible ios_config モジュールで意図せず chaneged になってしまうバグが 2.5.3 で修正された

はじめに Ansible 2.5.0 - 2.5.2 の ios_configモジュールには、コンフィグが変更されていないにもかかわらず意図せず changed になってしまうバグがありました。2018/05/18 にリリースされた Ansible 2.5.3 で修正されましたので、簡単な動作確認をします。…