ansible剧本-playbook核心元素

发布时间 2023-04-11 16:27:09作者: 往事已成昨天

ansible剧本-playbook核心元素

Cloud研习社 Cloud研习社 2023-04-08 10:33 发表于山东
图片图片

教程每周二、四、六更新

图片

 

  • hosts执行的远程主机列表
  • tasks任务集
  • Variables 内置变量或自定义变量在playbook中调用
  • Templates 模板,可替换模板文件中的变量并实现一些简单逻辑的文件
  • Handlers 和 notify 结合使用,由特定条件触发的操作,满足条件方才执行,否则不执行
  • tags 标签 指定某条任务执行,用于选择运行playbook中的部分代码。ansible具有幂等性,因此会自动跳过没有变化的部分,即便如此,有些代码为测试其确实没有发生变化的时间依然会非常地长。此时,如果确信其没有变化,就可以通过tags跳过此些代码片断。
我们看一下具体的用法:现在我们在远程主机上完成几个任务:创建一个新文件;把本地的first-playbook.yml 文件拷贝到远程主机;安装httpd软件;启动httpd服务;停止httpd服务;卸载httpd软件。
[root@m01 ansible]# cat integration.yml
---
- hosts: com
  tasks:
    - name: touch a new file
      file: path=/data/newfile state=touch
    - name: copy a file to remote host
      copy: src=/root/ansible/first-playbook.yml dest=/data/
    - name: install httpd
      yum: name=httpd state=installed
    - name: start httpd service
      systemd: state=started name=httpd
    - name: stop httpd service
      systemd: state=stopped name=httpd
    - name: uninstall httpd
      yum: name=httpd state=absent

# 检查一下是否有语法错误
[root@m01 ansible]# ansible-playbook integration.yml --syntax-check

playbook: integration.yml
检查没有错误就可以执行了。当然也可以写成下面的形式:
---
- hosts: com
  tasks:
    ......
    - name: uninstall httpd
      yum:
        name: httpd
        state: absent
练习:请自行修改integration.yml 中所有的task为上面这种形式,验证是否可以执行。错误处理:在执行ansible的时候,如果中间某一步骤发生错误,那么ansible脚本会终止执行,如果我们希望发生错误以后继续执行剧本,那么需要使用ignore_errors来忽略错误信息。
[root@m01 ansible]# vim integration.yml
---
- hosts: com
  tasks:
    - name: touch a new file
      file: path=/data/newfile state=touch
    - name: copy a file to remote host
      copy: src=/data/first-playbook.yml dest=/data/ # 这里故意修改为一个不存在的文件,正常情况下会报错,然后终止剧本执行,但是下面我们加了ignore_errors,剧本会继续执行。
      ignore_errors: true
    - name: install httpd
    .....
把剧本按照上面的修改保存,执行以后会发现输出信息中有红色的提示,但是最后都...ignoring,然后继续执行后续任务。对playbook有了认识了,我们下一次来看看刚才用到的ansible-playbook命令的用法。

 


 

雷哥开通了抖音(云计算雷哥)和微信视频号,求关注!!!和大家一起学习 技术!

图片

推荐阅读

 

《一站式教程之集群架构》:

 

ansible模块-cron模块

ansible模块-group模块

ansible模块-service(systemd)模块

ansible模块-user模块

ansible模块 - lineinfile模块

ansible模块 - blockinfile模块

 

 

看完本文有收获?请分享给更多人

推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!

Cloud研习社
为Linux云计算零基础同学服务,致力于打造一套完整的linux云计算教程。包括新手学习路线、linux、存储、集群架构以及Docker,K8S,DevOps等
180篇原创内容

图片


图片

 

收录于合集 #一站式教程
 220
上一篇ansible剧本-YAML语法下一篇ansible-playbook命令
阅读 60