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)