2017-03-16 34 views
0

我正在尝试使用Jenkins运行AWS中的EC2实例的Ansible操作手册。 My Jenkins应用程序安装在需要角色供应实例的EC2上,而我的JENKINS_USER是ec2用户。 我能够以ec2用户身份登录时手动执行剧本。但是,当我尝试执行同样精确的Ansible命令时,詹金斯无限期地失速。在詹金斯执行Ansible playbook以提供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 

任何人都可以确定为什么我无法使用Jenkins执行剧本吗?

回答

0

问题是Jenkins主节点(其中Ansible playbook正在执行),缺少一些环境变量(在Manage Jenkins> Manage Node> Configure Master下配置)。请参阅下面的Jenkins主节点添加的变量列表。

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 

一旦我添加了上述变量,我就能够执行Ansible Playbooks而没有任何问题。