【问题标题】:Executing Ansible playbook in Jenkins to provision EC2在 Jenkins 中执行 Ansible playbook 以配置 EC2
【发布时间】:2017-03-22 14:01:13
【问题描述】:

我正在尝试运行一个 Ansible 剧本,该剧本使用 Jenkins 在 AWS 中预置 EC2 实例。 我的 Jenkins 应用程序安装在具有预置实例所需角色的 EC2 上,我的 JENKINS_USER 是 ec2-user。 以 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 执行剧本?

【问题讨论】:

    标签: amazon-web-services jenkins


    【解决方案1】:

    问题是 Jenkins 主节点(正在执行 Ansible 剧本的地方)缺少一些环境变量(在 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 Playbook。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-16
      • 2022-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-28
      相关资源
      最近更新 更多