首页 文章

在Jenkins执行Ansible剧本以提供EC2

提问于
浏览
0

我正在尝试运行一个Ansible playbook,它使用Jenkins在AWS中提供EC2实例 . 我的Jenkins应用程序安装在EC2上,该EC2具有配置实例所需的角色,而我的JENKINS_USER是ec2用户 . 我以ec2-user身份登录时能够手动执行剧本 . 但是,当我尝试执行相同的Ansible命令时,Jenkins无限期地停止 .

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执行剧本?

1 回答

  • 0

    问题是Jenkins Master节点(正在执行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 .

相关问题