2016-11-24 25 views
1

私は展開プロセスを自動化するためにAnsibleを使用したいと思っています。それについての言葉はほとんど言わないよ。私の場合は、展開プロセスは、2つのステップで構成されます。可能な、Windows - ネットワークフォルダへのアクセス方法?

  • 更新DB(SQLスクリプト)

  • は、(異なるマシン上で)さまざまなネットワークフォルダへのファイルの定義済みのセットをコピーするために

この目的で私はInstaller.exeと呼ばれる特別な自己書き換えプログラムを使用します。私はそれを自分で実行すると、自分の資格情報で操作を実行します。それで、私のすべての権利があります。ネットワークフォルダとSQL Databeseへのアクセス。 enter image description here 私のプログラム(Installer.exe)の代わりに、私のプログラムのラッパーとしてAnsibleを使用したいと思います。私の目標シナリオ - 私は、設定ファイルを準備し、リモートWindowsマシン上でインストーラを実行します。私は問題に直面しました - 私のプログラムはAnsibleによって運営されており、私の完全な権利はありません。同じコンピュータ上のSQLデータベース1に正常にアクセスできますが、リモートマシンまたはアクセスネットワークフォルダのSQLデータベース2にはアクセスできません。私はいつもネットワークアクセスで "アクセス拒否"を取得し、SQLデータベースはNT AUTHORITY \ ANONYMOUS LOGONについて何か言います。 ダブルホップの問題のように見えますが、私が理解している限り正確にはありません。ダブルホップはサービスアカウントに関するものですが、自分の個人的なaccounとリモートサーバーにアクセスしようとしています。

UPD 1:そのグループの 私の変数は次のとおりです。私は、次のコマンドを実行しますAnsibleを持つ任意のアクションの前に

ansible_user: [email protected] 
ansible_port: 5986 
ansible_connection: winrm 
ansible_winrm_server_cert_validation: ignore 
ansible_winrm_operation_timeout_sec: 120 
ansible_winrm_read_timeout_sec: 150 
ansible_winrm_transport: kerberos 
ansible_winrm_kerberos_delegation: yes 

$> kinit [email protected] 

とパスワードを入力します。後でklistを実行すると、有効なチケットが表示されます。私はドメインアカウントを使用しようとしましたが、ローカルシステムアカウントは使用しませんでした。私はそれを正しくしていますか?

UPD 2:私は脚本では、このようなコマンドを追加する場合:Windowsマシンが実行されているように聞こえる、あなたの問題声明に基づき

fatal: [targetserver.abc.ru]: FAILED! => {"changed": true, "failed": true, "rc": 1, "stderr": "", "stdout": "\r\nCurrent LogonId is 0:0x20265db4\r\nError calling API LsaCallAuthenticationPackage (ShowTickets substatus): 1312\r\n\r\nklist failed with 0xc000005f/-1073741729: A specified logon session does not exist. It may already have been terminated.\r\n\r\n\r\n", "stdout_lines": ["", "Current LogonId is 0:0x20265db4", "Error calling API LsaCallAuthenticationPackage (ShowTickets substatus): 1312", "", "klist failed with 0xc000005f/-1073741729: A specified logon session does not exist. It may already have been terminated.", "", ""]} 
+0

同じ問題があります。ネットワークフォルダにアクセスしようとするとアクセスが拒否されます。 また、win_command:whoamiは、私がansible_userに設定した適切なドメインユーザーを表示し、win_command: 'net use s://some.server.name/a_network_folder/user:domain \ username password' win_command:net useはドライブsを「使用不可」と表示します。 この問題を解決できましたか?どうやって? –

答えて

2

... 
raw: "klist" 
... 

を私のような何かを得ますWindowsシステム自体の外部に権限を持たず、常にSQLデータベース2上の任意のプロシージャを実行しようとして失敗するLocal Systemアカウントのinstaller.exeを実行します。これはKerberosのダブルホップシナリオではありません。 1つは、installer.exeとSQL Database 2を実行しているダイアグラムの中央にあるWindowsマシンの間に1つのホップだけがあります。あなたのAnsibleプログラムがその内部にinstaller.exeをラッピングしているので、 SQLデータベース2に適切な権限を持つADドメイン資格情報を持つWindowsマシン上のプログラム。

EDIT:NT AUTHORITY \ ANONYMOUS LOGONに関するSQL Database 2メッセージの解決に基づいています。これはケルベロスのダブルホップ問題(それのようには見えません)ではなく、私が答えたものです。あなたはanonymous_userが定義されていますが、anonymous_ssh_passはありません。ドキュメント(http://docs.ansible.com/ansible/intro_windows.html)には明らかなバグがあります。そのため、secured_ssh_passwordの代わりにsecured_ssh_passを使用してください。

+0

私はdomain accoungを使いたいと思っていましたが、正しいかどうかはわかりません。質問を更新しました。「UPD 1」セクションが表示されますか? – QtRoS

+1

私はあなたの質問の編集に答えて私の答えを編集しました... –

+0

私はansible_user/ansible_ssh_passと/なしですべての可能な組み合わせを試しました。更新された投稿。 – QtRoS

関連する問題