美文网首页DevOps
如何设计 Ansible 的入门工作坊

如何设计 Ansible 的入门工作坊

作者: 翟志军 | 来源:发表于2019-07-19 08:23 被阅读0次
image.png

本月在公司内部做了一次 Ansible 的入门工作坊。本文即对这次工作坊的设计过程进行一次总结。其他技术类的工作坊也可以参考。

设计过程大概过程如下文所述。

首先,我们需要确定参加本次工作坊的受众。他们是否具有最基本的前提。本次工作坊的受众有开发、测试、运维,还有毕业生。但是他们都会使用 shell。这已经满足最基本的前提。同时,了解受众后了,也就可以因材施教。

第二,分析工作坊的内容。Ansible 是一款上手非常容易的自动化运维工具。它的特点就是实操性非常强,不需要理解 Ansible 背后的概念就可以使用的工具。

笔者根据受众和教学内容的特点,得出本次工作坊的目标(教学目标):

  1. 知道 Ansible 是什么,并知道它的作用。
  2. 了解如何查文档。
  3. 能部署一个 Spring Boot 应用。

是不是很简单?其实不然。整个工作坊没有一个人能完成所有的任务。同时发现有运维和开发基础的同学会做得更快。

那接下来怎么实现这个目标呢?笔者使用的是任务驱动的方法。也就是受众通过做一个个任务,在任务中完成学习。同时,教师可以任务过程穿插讲相关的知识点。

以下为任务列表:

  1. 执行 ansible-playbook -i hosts playbook.yml 成功
  2. 创建用户 apps 及用户组 apps:
  3. 创建以下文件夹,并设置文件夹的用户和组为 apps:
    /apps,/apps/hello,/apps/hello/bin,/apps/hello/logs
  4. 将 helloworld-0.0.2.jar copy 到 /apps/hello/bin 目录下,设置该 jar 文件的用户和用户组为 apps
  5. 使用 template 模块将 app.service copy 到目标服务器的 /etc/systemd/system 中,并重命名 hello.service :
  6. 启动 hello 服务
  7. 监听 hello 服务是否启动成功
  8. 为目标机器安装 JDK 1.8:
    1. 在本地仓库中创建 roles 目录
    2. clone 代码:https://github.com/geerlingguy/ansible-role-java 到 roles 目录中
    3. 在 playbook.yml 文件中加入 ansible-role-java 的role
  9. 创建自定义 role: hello role
    1. 进入 roles 目录:cd roles
    2. 使用命令生成 role 模板:ansible-galaxy init hello
    3. 将 hello 的部署逻辑(在 playbook.yml 中)写入到 hello role 中
  10. 将 hello 部署到多台机器
    • 需要修改 hosts 文件
  11. 多环境部署

任务的设计并不是随意的,而是有意的。比如:

  • 任务1:受众拿到练习代码后,执行命令,一定会报错。这时,教师可以讲解 Ansible 部署时需要确定“部署位置”和“部署逻辑”。顺便扩展一下:其它的自动化部署工具,也需要确定这两部分。
  • 任务2:受众在创建用户时,一定会失败。因为用户组还没有创建。
  • 任务3:重复创建多个文件夹,由于新手不懂with_items可以遍历创建文件夹,所以,新手写出来的代码会很多重复的。有悟性的同学,会想办法减少这种重复。
  • 任务5: 由于 app.service 模板中使用了未定义的变量,所以,此任务用户也没有办法一次运行成功,而是需要学习在 playbook.yml 中定义变量,才能运行成功。

可以看到这些任务中充满了“陷阱”。本文就不一一列出所有的陷阱。这些陷阱能达到以下效果:

  1. 在多次出现错误时,受众会学会自己看日志,查文档,找原因。
  2. 受众可以在这个不断遇到问题,解决问题的过程中, 体会到真实的开发是怎样的。
  3. 激发受众的自主思考(最重要)。

采用任务驱动的方式,还能规避受众能力参差不齐的问题,因为能力好的同学可以帮助能力差的同学。

后记

很久没有做老师了,稍微找回了当年做老师的感觉。

本次工作坊的练习代码:https://github.com/zacker330/ansible-workshop

相关文章

  • 如何设计 Ansible 的入门工作坊

    本月在公司内部做了一次 Ansible 的入门工作坊。本文即对这次工作坊的设计过程进行一次总结。其他技术类的工作坊...

  • 【Ansible入门2】

    Ansible使用入门 安装Ansible Ansible包含了多个工具。安装完Ansible以后,控制端会增加以...

  • 第10 章 深入浅出Ansible

    10.2 Ansible使用入门 10.2.4 Ansible的ad-hoc模式 在Ansible中,通过-m参数...

  • 1. Ansible 基础和常用模块

    1 Ansible 安装和入门 1.1 Ansible安装 官方EPEL源提供Ansible 1.2 Ansibl...

  • 进击的 Ansible(二):如何快速搞定生产环境 Ansibl

    Tips:与前文 《进击的 Ansible(一):Ansible 快速入门》 一样,本文使用的 Ansible 版...

  • ansible - 从入门到放弃

    ansible - 从入门到放弃 CLI cli 根据 ansible-* 切割,动态 import ansibl...

  • ansible 小试牛刀

    ansible 本文从ansbile入门到应用都做了详细的讲解,有兴趣的朋友可以看看; ansible介绍 ans...

  • 热爱与窘迫

    作为一个设计师,如何入门,如何修炼,如何提高,都是从菜鸟设计到资深设计必须跨过的坎。设计方法,设计思路,设计软件,...

  • ansible入门

    ansible 是一款自动化运维工具,由Red Hat公司出品的,能够解决我们在it工作中,一遍又一遍执行相同任务...

  • Ansible入门

    1.安装 需要Python依赖 2.添加服务器分组/配置inventory 默认配置文件是/etc/ansible...

网友评论

    本文标题:如何设计 Ansible 的入门工作坊

    本文链接:https://www.haomeiwen.com/subject/uupdlctx.html