2016-03-21 20 views
-2

ansibleコマンドが含まれているシェルスクリプトを実行している間、私はそれをansibleコマンドを実行すると、シェルスクリプト許可拒否された公開鍵を

#!/bin/bash 

echo "hello world" 

ansible zookservers -i /home/ec2-user/kafka_scripts/ansible_rep/inventory -a "/home/ec2-user/kafka_2.11-0.9.0.0/bin/kafka-server-start.sh kafka_2.11-0.9.0.0/config/server.properties" --sudo 

私のエラーが

| FAILED => SSH Error: Permission denied (publickey,gssapi-keyex,gssapi-with-mic). 
    while connecting to 172.30.0.243:22 

だっ持っています を実行していますが、シェルスクリプトの中に入れたときに、上記のエラーが発生します。

私のシェルはchmod 777の権限を持っているので、シェルの実行許可で問題がないので

私は何か興味深いものを見つけました。それを実行可能なディレクトリで実行すると、実行されます。 後で他のディレクトリから実行したときにエラーが発生していません。 ので、問題は、問題が最も可能性の高いあなたのansible.cfgの場所で最初の公開鍵認証

+0

あなたはsudoでスクリプトを呼び出していませんか?それがあなたの鍵が無視される理由を知る唯一のアイデアです。 sshをデバッグするには、 '-vvv'を使用してください。 – udondan

+0

こんにちは私はそれを試みましたが、問題を解決できません - 'FAILED => SSHエラー:許可が拒否されました(publickey、gssapi-keyex、gssapi-with-mic)。 whileに接続中172.30.0.243:22 問題を診断するためにSSHデバッグ出力を出力する-vvvvを使用してコマンドを再実行すると便利なことがあります。 –

+0

私は何かを見つけました - 私はエラーが発生している他の場所からスクリプトを実行するとき。しかし、それを実行すると、それは実行され、後で別のディレクトリから実行すると、何のエラーもスローされません。あなたがこのように私を助けることができたらうれしいです。 –

答えて

1

I found something intersting -- when I run the script from any other place I'm getting error. but when run it in ansible directory then it is executed

です。 (

  • ANSIBLE_CONFIG(環境変数)(現在ディレクトリ内)
  • ansible.cfg
  • .ansible.cfg:Ansibleは(docsから)これらのいずれかの場所から設定を使用します。 /etc/ansible/ansible.cfg
  • )のホームディレクトリに

最初の試合は勝ちます。

からに電話をかけた場合は、 "ansible directory"の設定が使用されます。それ以外の場所から呼び出された場合は、そのディレクトリには、ある程度安全な.cfgがありません。これがあなたのユーザ名と秘密鍵の場所を保存した場所なので、認証は失敗します。

最高の解決策は、環境変数ANSIBLE_CONFIGを利用することです。あなたのansible.cfgへのパスをそこに保存してください。私はそれが/home/ec2-user/kafka_scripts/ansible_rep/ansible.cfgだと思いますよね?

スクリプト内でその変数を設定できます。

ANSIBLE_CONFIG=/home/ec2-user/kafka_scripts/ansible_rep/ansible.cfg ansible zookservers -i /home/ec2-user/kafka_scripts/ansible_rep/inventory -a "/home/ec2-user/kafka_2.11-0.9.0.0/bin/kafka-server-start.sh kafka_2.11-0.9.0.0/config/server.properties" --sudo 
関連する問題