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 @ 2022-11-04 16:00  泉love水  阅读(833)  评论(0编辑  收藏  举报