请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

在jenkins怎么远程调用ansible-playbook?

现在想用 ansible 来编排 多tomcat或者docker,但是现在jenkins和ansible不在同一台服务器部署,jenkins 远程调用服务器上 ansible-playbook 怎么弄?

正在回答 回答被采纳积分+3

2回答

一路向北 2019-08-23 12:58:54

感谢这位同学的关注,最简单的办法可以利用ssh免密码秘钥认证配合执行ansible-playbook
举一个简单例子:
1.将你的jenkins作为ssh客户端 去连接你的ssh服务端, 这个服务端也是你的ansible服务器
2.做一个jenkins到ansible的ssh秘钥认证,这个认证和jenkins与ansible的配置无关,只是在系统层面做一个root账号免密码登录.
3.假定你的ansible服务端域名为ansible.example.com, 执行 ssh root@ansibile.example.com ansible-playbook xxxx
即可利用ssh远程调用ansible命令执行你的部署

1 回复 有任何疑惑可以回复我~
  • 提问者 zac707 #1
    #!/bin/sh
    
    ssh deploy@mopp2.hncsmtr.com 
    source /home/deploy/.py3-a2.5-env/bin/activate
    source /home/deploy/.py3-a2.5-env/ansible/hacking/env-setup -q
    ansible-playbook -i /home/deploy/test_playbooks/inventory/testenv /home/deploy/test_playbooks/deploy.yml
    
    构建报错:
    Running as SYSTEM
    Building in workspace /root/.jenkins/workspace/test
    [test] $ /bin/bash /tmp/jenkins67391790563222075.sh
    Pseudo-terminal will not be allocated because stdin is not a terminal.
    /tmp/jenkins67391790563222075.sh:行5: /home/deploy/.py3-a2.5-env/bin/activate: 没有那个文件或目录
    /tmp/jenkins67391790563222075.sh:行6: /home/deploy/.py3-a2.5-env/ansible/hacking/env-setup: 没有那个文件或目录
    /tmp/jenkins67391790563222075.sh:行7: ansible-playbook: 未找到命令
    Finished: SUCCESS
    回复 有任何疑惑可以回复我~ 2019-08-24 23:25:18
  • 一路向北 回复 提问者 zac707 #2
    ssh后面的三条Python命令中间用&&连接起来
    回复 有任何疑惑可以回复我~ 2019-08-25 22:33:07
提问者 zac707 2019-08-24 23:20:36

好像python和ansible环境变量执行找不到

0 回复 有任何疑惑可以回复我~
  • 解决了么 Pseudo-terminal will not be allocated because stdin is not a terminal. 好像是这个问题我也是这么连接的
    回复 有任何疑惑可以回复我~ 2022-03-17 19:43:53
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信