YAMAHAルーターへAnsible telnetモジュールを使ってユーザー名なしでログイン


YAMAHAのルーターへ定期的にtelnetでログインして各種ステータスを取得するのをAnsibleで自動化しようとして詰まったのでメモ。

ルーターを用意できていなかったときに、テスト用に立てていたtelnetサーバーへは問題なく処理できていた。
そのうち、ルーターが用意できたのでユーザー名を指定せずに共通ユーザーでログインしようと下記のように設定したら、タスクがいつまでたっても進まなくなった。

tasks/main.yml
- name: ルーター情報取得
  telnet:
    password: soge
    prompts:
      - "[$|>]|Password: "
    command:
      - console character en.ascii
      - show status dhcpc

このとき、telnetモジュールは、userパラメータを省略すると"remote_user"を使用してアクセスしようとしてしまうので、存在しないユーザーのパスワードを要求される自体に陥っていた。
そこで、下記のように修正することで、ユーザー名なしでアクセスすることに成功した。

tasks/main.yml
- name: ルーター情報取得
  telnet:
    user: soge
    login_prompt: "Password: "
    prompts:
      - "[$|>]"
    command:
      - console character en.ascii
      - show status dhcpc

「user: ""」と設定するとansibleに怒られるので、これしか方法がない?

参考:
Ansible telnetモジュールでYamahaルータを操作
 https://qiita.com/sat0ken/items/1bb2c6aecc677b9bdc66
Ansible telnet without username login
 https://stackoverflow.com/questions/53777121/ansible-telnet-without-username-login