Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Ansibleでunreachableが出た際の備忘録

環境

  • ホスト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.様

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away