zoukankan      html  css  js  c++  java
  • jenkins集成pipeline,ansible流程

    1.配置jenkins环境

       命令参考前一篇《docker自行构建jenkin》。单机部署即可。本实例中。jenkins,ansible安装在同一机器 。

       jenkins需要配置/etc/sudoers.还需要给/bin/bash,以及jenkins的home目录下的.ssh下需要复制一份ansible的ssh私钥

        1.配置/etc/sudoers

    root    ALL=(ALL)       ALL
    #增加
    jenkins  ALL=(ALL) NOPASSWD: ALL

        2.vim /etc/passwd改jenkin给bash权限,注意家目录。一会要把rsa私钥考过去

    jenkins:x:996:993:Jenkins Automation Server:/var/lib/jenkins:/bin/bash

        3.复制一份私钥给jenkins调用ansible用

    ssh-keygen -t rsa
    
    cp ~/.ssh/id_rsa /var/lib/jenkins/.ssh/res.jenkins
    

      

    2.配置pipeline

       新建一个pipeline流水线项目(貌似只有流水线才可以插入pipeline脚本)

        

    脚本 需要严格参考pipeline语法。

    pipeline {
        agent any
        stages {      
          stage('开始部署通知') {
                steps {
                    script {
                       hostname = hostname         #前一个为定义变量住后面build job传参,后一个为上面图形界面定义输入的变量
                       region = 'sdasdf'+region     #字符拼接有严格要求。用于拼接的字符串内不可以有空格或者/n换行等特殊字符。否则pipeline语法无法不识别 
                    }
                    sh 'echo "注意:在进行后续操作之前,请通过JOB-get-hosts-info检查即将发布的目标服务器是否匹配?"'
                    timeout(time: 10, unit: 'MINUTES') {
                       input(message: '信息正确,继续后续发布操作?')   #这三行可以忽略
                    build job: 'ansible-alter', parameters: [string(name: 'hostname', value: hostname),string(name: 'region', value: region)]
                    }
                }
            }
        }
    }

    新建自由风格项目。用于调用ansible

    构建步骤选择执行Shell

    #!/bin/bash
    
    #echo "注意:您正在操作的主机名为:${hostname}, 主机所在区域为:regin = ${region}"
    
    cd /var/lib/jenkins/loan-cd && ansible-playbook -e "title=${hostname} content=${region}" ./post_message.yml --private-key=/var/lib/jenkins/.ssh/res.jenkins
    #此处可以改成自己想要的命令行。不一定要ansible了。也可以是salt脚本等等。

    3.配置ansible

    此处是一个ansible发送的的post请求。发给一个邮件服务接口。

    - name: send mail
      gather_facts: False
      hosts: "localhost"
      user: root
      vars:
        start_time: '{{ lookup("pipe","date +%s") }}'
        task_id: '{{lookup("pipe","echo " + groups.newprosfs|string +"|md5sum")}}'
      tasks:
        - name: send mail
          uri:
            url: http://115.159.112.97:2020
            method: POST
            body: {"title":"{{ title }}", "content":"{{ content }}", "mail_receiver": "feigerlan@xwfintech.com",  "way": "mail" , "mail_type":"html"}
            status_code: 200
            body_format: json
  • 相关阅读:
    mybatis的注意事项一
    java代码操作word模板生成PDF文件
    使用mybatis框架实现带条件查询多条件(传入实体类)
    MyBatis框架ResultMap节点
    优化mybatis框架中的查询用户记录数的案例
    Mybatis框架联表查询显示问题解决
    使用mybatis框架实现带条件查询单条件
    [DB] 如何彻底卸载删除MySQL 【MYSQL】
    [DB] MySQL窗口输入密码后消失问题 【MYSQL】
    [acm] 曾经 刷题记录 [只有正确的坚持才是胜利]
  • 原文地址:https://www.cnblogs.com/feigerlan/p/9771385.html
Copyright © 2011-2022 走看看