🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Q&A

解決済

1回答

4118閲覧

ansible実行時のConnection type ssh is not valid for this moduleエラーについて

ansible_beginne

総合スコア1

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

1グッド

0クリップ

投稿2021/02/06 04:27

前提・実現したいこと

ansible ver 2.10でplaybookを実行しましたが、エラーが出て実行できませんでした。
このエラーを解消するにはどうしたらよいでしょうか?

発生している問題・エラーメッセージ

[admin@localhost ansible]$ ansible-playbook show_ver.yaml PLAY [ios] ********************************************************************************** TASK [run show version on remote devices] ***************************************************** fatal: [172.16.1.10]: FAILED! => {"changed": false, "msg": "Connection type ssh is not valid for this module"} PLAY RECAP ************************************************************************************ 172.1.1.10 : ok=0 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0

該当のソースコード

- hosts: ios gather_facts: no tasks: - name: show ver cisco.ios.ios_command: commands: - show version register: register_show_ver vars: cli: host: "{{ inventory_hostname }}" username: "{{ ansible_user }}" password: "{{ ansible_password }}" authorize: true auth_pass: "{{ cisco_enable_secret }}"
[admin@localhost ansible]$ cat hosts [ios] 172.16.1.10 [ios:vars] ansible_user=root ansible_password=root cisco_enable_secret=root
[admin@localhost ansible]$ cat ansible.cfg [defaults] inventory = ./hosts

補足情報(FW/ツールのバージョンなど)

[admin@localhost ansible]$ ansible --version ansible 2.10.5 config file = /home/admin/ansible-script/ansible.cfg configured module search path = ['/home/admin/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/local/lib/python3.6/site-packages/ansible executable location = /usr/local/bin/ansible python version = 3.6.8 (default, Nov 16 2020, 16:55:22) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]
endy👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Ansible には、接続方式を切り替えるコネクションプラグインと仕組みがあります。
今回の場合、デフォルトで ssh というものが選択されましたが、残念ながら cisco.ios.ios_command には対応していません。
そのため、network_cli という別のコネクションプラグインを利用するのが対策です。

ほか、一式を拝見しますと、register のインデントがずれていたり、必要な変数定義が不足しているようです。
まとめますと、以下のような Playbook、インベントリファイルでいかがでしょうか。

  • Playbook

yaml

1- hosts: ios 2 gather_facts: no 3 4 tasks: 5 - name: show ver 6 cisco.ios.ios_command: 7 commands: 8 - show version 9 register: register_show_ver # インデントをさげる
  • hosts

ini

1[ios] 2172.16.1.10 3 4[ios:vars] 5ansible_connection=ansible.netcommon.network_cli # コネクションプラグインの指定 6ansible_network_os=cisso.ios.ios # ネットワークOSの指定 7ansible_user=root 8ansible_password=root 9ansible_become=True # authorize の代わり 10ansible_become_method=ansible.netcommon.enable # 特権昇格方式の指定 11ansible_become_password=root # 特権パスワード

ios_* モジュールの実行に必要な変数は、以下の公式ドキュメントのページで確認できます。
IOS Platform Options

今回の例では、インベントリファイル内に各変数を定義しましたが、group_vars/ios.yml のようなグループ変数の YAML に書き出しても構いません。

投稿2021/02/06 05:17

編集2021/02/06 05:26
akira6592

総合スコア40

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ansible_beginne

2021/02/06 05:49

迅速かつ丁寧なご回答ありがとうございます。 ご教示いただいた通りに設定しましたら、以下のエラーになりました。 [admin@localhost ansible]$ ansible-playbook show_ver.yaml PLAY [ios] ********************************************************************************** TASK [show ver] ********************************************************************************* fatal: [172.16.1.10]: FAILED! => {"msg": "network os cisso.ios.ios is not supported"} PLAY RECAP ************************************************************************************ 172.16.1.10 : ok=0 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0 etwork os cisso.ios.ios is not supportedと出てきております。 そこで代わりに思いついた、以前のnetwork_cliを変更しても解決できませんでした。 大変恐縮ですが、ご教示お願い致します。
jir01030

2021/02/06 06:50

横槍で失礼します。 cisso → cisco のタイポかと思います
akira6592

2021/02/06 07:03 編集

おっしゃるとおりです。失礼しました。 以下のインベントリファイルでいかがでしょうか。(# によるコメントも削除しました) [ios] 172.16.1.10 [ios:vars] ansible_connection=ansible.netcommon.network_cli ansible_network_os=cisco.ios.ios ansible_user=root ansible_password=root ansible_become=True ansible_become_method=ansible.netcommon.enable ansible_become_password=root
ansible_beginne

2021/02/06 11:21

ご教授頂きありがとうございます。 ご教示頂いた内容で試行錯誤したところ、以下のエラーが出てしまいました。 paramikoがインストールされていないかのように見えます。 [admin@localhost ansible]$ ansible-playbook show_run.yaml PLAY [ios] ********************************************************************************** TASK [run show version on remote devices] ***************************************************** fatal: [172.16.1.10]: FAILED! => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "msg": "paramiko is not installed: No module named 'paramiko'"} PLAY RECAP ************************************************************************************ 172.16.1.10 : ok=0 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0 いろいろ調べてインストールしてみましたが、同様のエラーが出続けてしまいます。 なにかお気づきの点がございましたらご教示頂けますと幸いです。 度々申し訳ありません。 [admin@localhost ansible]$ pip3 list DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning. bcrypt (3.2.0) cffi (1.14.4) cryptography (3.3.1) lxml (4.6.2) monotonic (1.5) netconf (2.1.0) paramiko (2.7.2) pip (9.0.3) pycparser (2.20) PyNaCl (1.4.0) setuptools (53.0.0) six (1.15.0) sshutil (1.5.0)
akira6592

2021/02/06 13:01

おそらく今回の環境の場合、Ansible が Python 2 系を利用している(ansible --version で確認できます)のに対して、paramiko を Python3 系にインストールされたのではないでしょうか。 そのため Ansible から paramiko が見つからないという状況かと思います。 どちらかに合わせれば本エラーは出ないくなるのかと思います。
ansible_beginne

2021/02/06 15:43

ありがとうございます。 ご教示頂いた通りでした。 おかげさまで解決することができました。
akira6592

2021/02/07 01:59

よかったです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問