2017-03-16 9 views
0

Jenkinsを使用してAWSでEC2インスタンスをプロビジョニングするAnsibleプレイブックを実行しようとしています。 My Jenkinsアプリケーションは、インスタンスのプロビジョニングに必要な役割を持つEC2にインストールされ、JENKINS_USERはec2ユーザーです。 ec2ユーザーとしてログインしたときに手動でプレイブックを実行できます。しかし、同じ正確なAnsibleコマンドを実行しようとすると、Jenkinsは無期限に停止します。私はジェンキンスを使用して脚本を実行することはできませんよ、なぜ誰もがJenkinsでEC2をプロビジョニングするためのプレイブックを実行

Building in workspace /var/lib/jenkins/workspace/Provision-AWS-Environment-dev 
[Provision-AWS-Environment-dev] $ /bin/ansible-playbook /home/ec2-user/efx-devops-jenkins/aws/awsprovision.yml -i /home/ec2-user/efx-devops-jenkins/aws/inventories/dev/hosts -s -f 5 -vvv 
Using /etc/ansible/ansible.cfg as config file 

PLAYBOOK: awsprovision.yml ***************************************************** 
[0;34m2 plays in /home/ec2-user/efx-devops-jenkins/aws/awsprovision.yml[0m 

PLAY [awsmaster] *************************************************************** 

TASK [provision : Provison "3" ec2 instances in "ap-southeast-2"] ************** 
[1;30mtask path: /home/ec2-user/efx-devops-jenkins/aws/roles/provision/tasks/main.yml:5[0m 
[0;34mUsing module file /usr/lib/python2.7/site-packages/ansible/modules/core/cloud/amazon/ec2.py[0m 
[0;34m<10.39.144.187> ESTABLISH LOCAL CONNECTION FOR USER: ec2-user[0m 
[0;34m<10.39.144.187> EXEC /bin/sh -c '(umask 77 && mkdir -p "` echo ~/.ansible/tmp/ansible-tmp-1489656061.65-268771004227615 `" && echo ansible-tmp-1489656061.65-268771004227615="` echo ~/.ansible/tmp/ansible-tmp-1489656061.65-268771004227615 `") && sleep 0'[0m 
[0;34m<10.39.144.187> PUT /tmp/tmpvvKnfU TO /home/ec2-user/.ansible/tmp/ansible-tmp-1489656061.65-268771004227615/ec2.py[0m 
[0;34m<10.39.144.187> EXEC /bin/sh -c 'chmod u+x /home/ec2-user/.ansible/tmp/ansible-tmp-1489656061.65-268771004227615/ /home/ec2-user/.ansible/tmp/ansible-tmp-1489656061.65-268771004227615/ec2.py && sleep 0'[0m 
[0;34m<10.39.144.187> EXEC /bin/sh -c 'sudo -H -S -n -u root /bin/sh -c '"'"'echo BECOME-SUCCESS-uatxqcnoparsvzhjhxvlccmbjwaxjqaz; /usr/bin/python /home/ec2-user/.ansible/tmp/ansible-tmp-1489656061.65-268771004227615/ec2.py; rm -rf "/home/ec2-user/.ansible/tmp/ansible-tmp-1489656061.65-268771004227615/" > /dev/null 2>&1'"'"' && sleep 0'[0m 

を識別することはできますか?

答えて

0

Jenkinsマスターノード(Ansibleプレイブックが実行されていた場所)に環境変数(Manage Jenkins> Manage Node> Configure Master)が設定されていないという問題がありました。 Jenkins Masterノードに追加した変数のリストを以下に示します。

Name: http_proxy 
Value: http://proxy.com:123 

Name: PATH 
Value: /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2-user/bin 

Name: SUDO_COMMAND 
Value: /bin/su ec2-user 

Name: SUDO_USER 
Value: svc_ansible_lab 

上記の変数を追加すると、問題なしでAnabilities Playbookを実行することができました。

関連する問題