LoginSignup
5
3

More than 3 years have passed since last update.

Ansibleでunreachableが出た際の備忘録

Posted at

環境

  • ホストOS
    • Windows10
  • ゲストOS

    • Centos7 (Ansibleをインストールしてあるサーバ)
    • Centos8 * 2 (この子たちに設定したいサーバ)
  • SSHクライアント

    • PowerShell 7.1.0-preview.3

本篇

Ansibleの勉強を始めようと思い立ち、とりあえずApacheをインストールしようとしていたところ、こんなエラーが出た.

エラー内容

[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see
details

PLAY [all] ***********************************************************************************

TASK [Gathering Facts] ***********************************************************************
fatal: [Server1]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).", "unreachable": true}
fatal: [Server2]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).", "unreachable": true}

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

  • UNREACHABLE!の通り、サーバまで届いてない
  • changedも、falseなので変更されてない
  • msgにある内容は、「SSHでアクセスしようとしたら、Permission denied (権限なかったぽ)」って感じ

Playbookの内容

test-ansible.yml
---
- hosts: all
  become: true
  handlers:
    - name: restart httpd
      service: name=httpd state=restarted
  tasks:
    - name: dnf install httpd
      dnf: name="httpd" state=latest

記述内容

  • hostsに記載のすべてに実行(今回は全サーバ)
  • 管理者権限でコマンドを実行
  • もし、httpdに変更が加えられたら、serviceコマンドから再起動
  • httpdの最新版をインストール(CentOS8が相手なので、dnfコマンドを実行)

実行時のコマンド

ansible-playbook test-ansible.yml
  • 単純にtest-ansible.ymlを実行

解決策

  • 対象サーバ(CentOS8)はパスワード認証を使っているにもかかわらず、その認証を行っていなかった

公開鍵を使う方法

こちら

ssh-copy-id コマンドで対象サーバーに公開鍵を設置してみたところ上手くいきました。

configファイルに記載する方法

  • ansible.cfgに下記の内容を追記する
ansible.cfg
[defaults]
ask_pass = True
  • ただし、この方法の場合毎回パスワード認証を行うかも...

実行コマンドに追記する方法

  • 実行時のコマンドに、--ask-passを追加
ansible-playbook --ask-pass test-ansible.yml

参考にさせていただいたサイト

キュア子の開発ブログ様
わくわくBank.様

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3