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

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

詳細はこちら
Ansible

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

Q&A

1回答

4189閲覧

Ansibleのrawモジュールやcommandモジュールの使用方法と実行エラーについて

sakusii

総合スコア1

Ansible

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

0グッド

0クリップ

投稿2021/03/24 03:05

編集2021/03/24 03:14

Linuxベースで動作する仮想デバイスがあり、この仮想デバイスはAnsibleをサポートしていない(モジュールのない)デバイスです。
Linux上での自動化もあれば、その仮想デバイス上での自動化も一部必要な環境ですが、その仮想デバイス環境で自動化をするため、rawモジュールを使用したタスクを追加しました。

質問1
以下について、ご教示頂けますでしょうか。
rawモジュールを実行すると、以下のエラーが発生します。
このエラーの解決方法はございますでしょうか。

  • hosts: linux
    gather_facts: no
    connection: local

    tasks:

    • name: raw module
      raw : "do_enable do_admin"
      register: result_admin_enable

    • name: debug
      debug:
      msg: "{{ result_admin_enable }}"

    vars:
    cli:
    host: "{{ inventory_hostname }}"
    username: "{{ ansible_user }}"
    password: "{{ ansible_password }}"

PLAY [linux] ****************************************************************************************************************

TASK [raw module] **************************************************************************************************
fatal: [192.168.1.101]: FAILED! => changed=true
msg: non-zero return code
rc: 127
stderr: |-
/bin/sh: do_enable: command not found
stderr_lines: <omitted>
stdout: ''
stdout_lines: <omitted>

PLAY RECAP ******************************************************************************************************************
192.168.1.101 : ok=0 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0

質問2
また、今回はいろいろ調べて、rawモジュールを手探りで使用しておりますが、モジュールのサポートされていないデバイスを操作する際に使用する方法として、この方法は一般的に想定された方法なのでしょうか。
他に適切な方法はございますでしょうか?

※3/24 12:10
追記です。
commandモジュールを使用した方法でも以下のエラーが出てしまいます。
解決方法はございますでしょうか。

tasks:

  • name: command
    command : "do_enable do_admin"
    register: result_admin_enable

TASK [command] **************************************************************************************************
fatal: [192.168.1.101]: FAILED! => changed=false
ansible_facts:
discovered_interpreter_python: /usr/libexec/platform-python
cmd: do_enable do_admin
msg: '[Errno 2] No such file or directory: b''do_enable'': b''do_admin'''
rc: 2

以上です。
ご教示お願い致します。

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

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

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

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

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

guest

回答1

0

その do_enable do_admin コマンドというのは 192.168.1.101 で実行できるものなのでしょうか。

Ansible を使わないときは手で実行すると思いますが、どこからどのような手段で実行するものなのかがわかりますと何か解決策が見つかるかもしれません。

投稿2021/03/24 03:45

SugiTK

総合スコア495

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

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

sakusii

2021/03/24 03:50

Ansibleから192.168.1.101に対してSSH接続し、do_enable do_admin コマンドを実行することを想定しております。他にもshow xxxxxコマンド等ございます。 分かりにくく申し訳ありません。
SugiTK

2021/03/24 04:06

そのままコマンドを実行しようとして見つからないというエラーになっていますが、絶対パスで指定すると動いたりしますでしょうか。
sakusii

2021/03/24 07:48

実在するコマンド(show interface等)に変更しても同じエラーとなっております。 絶対パスというのはコマンドの絶対パスでしょうか。理解が浅く申し訳ありません。
SugiTK

2021/03/24 08:27

その「Linuxベースで動作する仮想デバイス」についての詳細がわからないため、なんとも言えません。お手伝いできなくてすみません。
SugiTK

2021/03/24 09:05 編集

もしそれがネットワーク機器であれば、ansible_connection=network_cli を定義して接続するともしかしたらできるかもしれません。わからないことが多いのでできないかもしれませんが一度お試しいただけましたらと思います。
Irix_jp

2021/03/26 09:04

`connection: local` になっているので、Ansibleサーバー上でコマンドが実行されちゃってるんじゃないですかね? まずはこの行を削除して、 `raw` で基本的なコマンドを送り込んで試してみるのはいかがでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問