jenkins+ansible使用

   通过jenkins执行shell脚本调ansible-playbook可以方便的进行自动化管理部署

1、写一个简单的palybook

ansible主机清单可以写在hosts文件里也可以动态获取

复制代码
---
- hosts: "{{ host }}"
  remote_user: root
  gather_facts: false
  tasks:
    - name:  "{{name}}"
      shell: "pwd"

    - name: show time
      shell: "date"

    - name: 远程ip
      debug: var=ansible_ssh_host
复制代码

2、创建jenkins 工程

配置参数用于后续通过shell传入ansible-palybook

 

 

 

 添加构建步骤选择Execute shell

并写入执行playbook命令,使用到的参数即第一步配置的

cd /etc/ansible  &&  ansible-playbook ops.yaml --extra-vars "{'host':'${host}', 'name':'${name}'}"

也可以写一个从cmdb或者数据库动态获取ansible主机清单脚本例如:1.py shell改为下面的即可以通过动态获取ansible清单并执行playbook了
cd /etc/ansible  &&  ansible-playbook ops.yaml -i ./1.py --extra-vars "{'host':'${host}', 'name':'${name}'}"
 

 

 保存后点击build

 

 可以配置参数

host可以写服务器ip或者主机清单中的组名

 

 开始构建然后查看任务,可以看到已经正常执行

 

 

 3、通过jenkins接口执行job

通过python 调jenkins接口执行刚才的job

复制代码
import jenkins

jenkins_server_url = 'http://ip:port'
user_id = 'name'
api_token = 'token'

job_name='playbook-shell'
server = jenkins.Jenkins(jenkins_server_url,username=user_id,password=api_token)
#print(server)
server.build_job(name=job_name,parameters={'host': 'test','name':'test1'})
job_info=server.get_job_info(job_name)
#print(job_info)
lastbuildNumber=server.get_job_info(job_name)['lastBuild']['number']
result =server.get_build_info(job_name,lastbuildNumber)['result']
print(lastbuildNumber,result)
View Code
复制代码

 

posted @   泉love水  阅读(913)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示
保持好迎接强者的心态,才是初心