Ansibleの環境設定

前回、Ansibleをインストールするところで終わりました。Web担当神凪です。
当方としてもAnsibleは使っているものの体系的にまとめた資料がまだなかったりします。そういった意味ではこのBlogで残していこうという試みはありなのかもしれません。 いや上の考えはわかりませんけれど。

さてさてこのままでは使えませんのでいろいろ当たりながら進めていきましょうね。
今回はエラーもあったのでちょっとばっかし長いです。

Ansibleコマンド

Ansibleは、対象サーバを操作するためにサーバへの接続を必要とします。 エージェントレス型なのである意味当然な行為です。

 ansible 192.168.1.100 -m ping 

このコマンドの意味するところは

    ansible: Ansibleコマンドの宣言
    192.168.1.100: 捜査対象サーバの指定
    -m: モジュール指定オプション
    ping: モジュール名

とこうなります。 では早速使ってみましょう

Ansibleコマンドを試してみる


$ ansible 192.168.10.100 -m ping

[WARNING]: provided hosts list is empty, only localhost is available

[WARNING]: No hosts matched, nothing to do 

エラーとなりました。 これはAnsibleでは、管理対象外の機器を操作しないよう、あらかじめ操作対象となる機器を登録する必要があるためです。実行内容によっては、対象機器に重大な影響を及ぼしてしまうため、リスト内にある機器(IPアドレス指定)にのみ操作を行うようになっています。 リストはデフォルトでは「/etc/ansible/hosts」です。-i オプションで別のファイルを指定することも可能です。
では今回捜査対象となるIPをhostsに追加して、もう一度ansible pingを実行してみます。

$ echo 192.168.10.100 >> /etc/ansible/hosts
$ ansible 192.168.10.100 -m ping
192.168.10.100 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).\r\n",
    "unreachable": true
}

おや今度はSSHエラーです。sshコマンドで対象サーバは接続できるのですけれどね。

SSHエラーを探る

ansibleコマンドに-vvvvオプションをつけるとデバッグログが出力されます。
かなり細かいのでここでは割愛しますが、今回はsshのエラーです。
捜査対象がOSインストール直後の状態なので、sshエラーと言われてもパスワード関連しか思いつきません。
ということでまずは–ask-passオプションをつけてパスワードをつけてみます。

$ ansible dns -m ping --ask-pass
SSH password:
192.168.10.100 | FAILED! => {
    "failed": true,
    "msg": "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this.  Please add this host's fingerprint to your known_hosts file to manage this host."
}

む、ssh fingerprintのエラーがでています。
fingerprint系のエラーですから、一度通常のsshで対象のサーバに接続してfingerprint取得しましょうか。

$ ssh 192.168.10.100
The authenticity of host '192.168.10.100 (192.168.10.100)' can't be established.
ECDSA key fingerprint is 12:34:56:78:90:ab:cd:ef:12:34:56:78:90:ab:cd:ef.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.10.100' (ECDSA) to the list of known hosts.
nceadmin@192.168.10.100's password:
Permission denied, please try again.
nceadmin@192.168.10.100's password:
Permission denied, please try again.
nceadmin@192.168.10.100's password:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

(fingerprintは加工させて頂きました)

こっちでもエラーだしてますね。
うーん・・・?

・・・
・・・・・・
・・・・・・・・・!

(192.168.10.100上)
$ cat /etc/passwd | grep nceadmin
(出力なし)

こっちでしたか。
捜査対象サーバが本当の意味でインストール直後のまっさらだったのが仇になりました。

(192.168.10.100上)
$ useradd nceadmin
$ passwd nceadmin

これで大丈夫! さもう一度!

$ ansible dns -m ping --ask-pass
SSH password:
192.168.10.100 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

今日のメモ
– Ansibleは専用の実行ユーザを作成した方がよいです。

– オプションで “–ask-su-pass”もありますけれど、あまり過信しないでエラー調査を続けましょう

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください