2016-12-19 4 views
0

私の開発マシンではすべてが素晴らしいです。それはジェンキンスがボールトで暗号化されたファイルに関連付けられているプレイブックを実行しようとしたとき、私はエラーが表示さだけということだ:JenkinsでAniableプレイブックを実行すると復号化に失敗する

ERROR! Decryption failed on /data/jenkins/workspace/.../secrets.yml 
FATAL: command execution failed hudson.AbortException: Ansible playbook execution failed 

ジェンキンスジョブから実行されたコマンドは次のとおりです。

/usr/bin/ansible-playbook playbook.yml -i prod/inventory -l localhost -s -f 1 --vault-password-file /etc/ansible/vault_password 

ボールトパスワード・ファイルは、次の権限を持つ場所に存在することが確認されています。私は、同じコマンドを実行しますが(対話的)パスワードの入力を求める場合は

-rw-r--r--. 1 root root 35 Dec 18 13:23 /etc/ansible/vault_password 

、すべてが大丈夫実行します。ただし、これは望ましいワークフローではありません。私は、Jenkinsがユーザーの介入なしに、これらのプレイブックをすべて単独で実行したいと考えています。

プレイブックは、基本的にMavenテスト用の環境(プロパティファイルなどの期待されるリソースを作成するため)を準備するために、ローカルでタスクを実行することを目的としています。

+0

jenkinsが実行しているユーザーは? –

+0

これは、MacOSX上での私のユーザ名(成功)と、Jenkinsがプレイブックを実行しているCentOSマシン上の "jenkins"です。 "jenkins"ユーザーはsudoers.dにいます。 – Jubz

答えて

0

最終結果が同じ内容のファイルであっても、コンテンツを含むファイルの作成とコンテンツを含むファイルのコピーには大きな違いがあることが判明しました。

私に説明してみましょう:私のプロビジョニング脚本は、このように、リモートマシン上のファイルにパスワードを書き込むことによって、自分のパスワードファイルを作成していた:

copy: content="{{ ansibl_vault_password }}", dest="{{ ansibl_vault_password_file }}" 

私が行った変更がために、パスワード・ファイルのためでしたこのように、リモートマシンへの私のマシンからコピー:

copy: 
    src: "{{ ansibl_vault_password_file }}" 
    dest: "{{ ansibl_vault_password_file }}" 
    mode: "u=rw,g=r,o=r" 

だから私は、最初の行にパスワードを含むファイルとなってしまった物事の壮大な計画では、以前のアプローチは、内容を解読するのに失敗した場合でも保持第2のアプローチは機能したちょうど良い。

関連する問題