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
  • 相关阅读:
    图像检索(image retrieval)- 11
    图像检索(image retrieval)- 10相关
    Mock.js简易教程,脱离后端独立开发,实现增删改查功能
    Azure Monitor (3) 对虚拟机磁盘设置自定义监控
    Azure Monitor (1) 概述
    Azure SQL Managed Instance (2) 备份SQL MI
    Azure Virtual Network (17) Private Link演示
    Azure Virtual Network (16) Private Link
    Azure Virtual Network (15) Service Endpoint演示
    Azure Virtual Network (14) Service Endpoint服务终结点
  • 原文地址:https://www.cnblogs.com/feigerlan/p/9771385.html
Copyright © 2011-2022 走看看