加入收藏 | 设为首页 | 会员中心 | 我要投稿 惠州站长网 (https://www.0752zz.com.cn/)- 办公协同、云通信、物联设备、操作系统、高性能计算!
当前位置: 首页 > 教程 > 正文

小团队如何从零搭建一个自动化运维体系?

发布时间:2018-07-11 03:30:06 所属栏目:教程 来源:翟志军
导读:副标题#e# 【资讯】行业内各巨头的自动化运维架构都各种功能,各种酷炫,让人可望不可及。 如下图,现在行业内各巨头自动化运维架构的最终样子大家都知道了,但是如何根据自己团队当前的情况一步步向这个目标演进? 笔者所在团队,三个半开发,要维护几十台

  现在我们需要告诉 Jenkins 如何对我们的业务代码进行编译打包,有两种方法:

  小团队如何从零搭建一个自动化运维体系?

  界面上设置

  使用 Jenkinsfile:类似于 Dockerfile 的一种文本文件,具体介绍:Using a Jenkinsfile[7]

  我毫不犹豫地选择了第二种,因为一是利于版本化;二是灵活。

  Jenkinsfile 类似这样:

  pipeline { agent any stages { stage('Build') { steps { sh './gradlew clean build' archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true } } } }

  那么 Jenkinsfile 放哪里呢?答案是和业务代码放在一起,类似这样每个工程各自管理自己的 Jenkinsfile:

  小团队如何从零搭建一个自动化运维体系?

  这时,我们就可以在 Jenkins 上创建一个 pipleline Job了。关于分支管理,我们人少,所以,建议所有项目统一在 master 分支进行开发并发布。

  让 Jenkins 帮助我们执行 Ansible

  之前我们都是在程序员的电脑执行 Ansible 的,现在我们要把这项工作交给 Jenkins。

  具体操作:

  在 Jenkins 安装 Ansible 插件[8]

  在 Jenkinsfile 中执行

  withCredentials([sshUserPrivateKey(keyFileVariable:"deploy_private",credentialsId:"deploy"),file(credentialsId: 'vault_password', variable: 'vault_password')]) { ansiblePlaybook vaultCredentialsId: 'vault_password', inventory: "environments/prod", playbook: "playbook.yaml", extraVars:[ ansible_ssh_private_key_file: [value: "${deploy_private}", hidden: true], build_number: [value: "${params.build_number}", hidden: false] ] }

  这里需要解释下:

  ansiblePlaybook 是 Jenkins ansible 插件提供的 pipeline 语法,类似手工执行:ansible-playbook 。

  withCredentials 是 Credentials Binding[9] 插件的语法,用于引用一些敏感信息,比如执行 Ansible 时需要的 ssh key 及 Ansible Vault 密码。

  一些敏感配置变量,我们使用 Ansible Vault[10] 技术加密。

  Ansible 脚本应该放哪?

  我们已经知道各个项目各自负责自己的自动化构建,所以 Jenkinfile 就放到各自项目中。

  那项目的部署呢?同样的道理,我们觉得也应该由各个项目自行负责,所以我们的每个要进行部署的项目下都会有一个 Ansible 目录,用于存放 Ansible 脚本。

(编辑:惠州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读