ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

关于ansible的常规用法

2022-07-04 11:36:23  阅读:210  来源: 互联网

标签:rescue 常规 用法 任务 ansible 执行 block name


目录

常规用法

每个tab必须相同,每个tab是2个空格必须是全文都是2个空格

[student@workstation ~]$ vim test.yml 
---
- hosts: serverb.lab.example.com
  tasks:
    - name: install command
      yum:
        name:
          - tree
          - net-tools
        state: present


[student@workstation ~]$ ansible-playbook  test.yml 

block块

block除了能和when结合起来使用,还有一个很重要的功能,就是"错误处理"功能

常用语法:
    - block:定义块
      rescue:当出现异常时,执行的语句
      always:无论结果如何都要执行的语句


[student@workstation inventory-variables]$ cat test.yml 
---
- hosts: serverb.lab.example.com
  tasks:
    - name: xxxx
      block:
        - shell: 'cat /etc/redhat-elease'
        - shell: 'ls /testdir'            ==> testdir目录在目标主机上并没有
        - shell: 'ls /opt'

      rescue:
        - debug:
            msg: '报错了...'

      always:
        - debug:
            msg: "不管怎么样我都执行..."


如上所示,定义了一个block,这个block中有3个任务,即在目标主机中执行了3个shell命令
除了block关键字,还有另外一个关键字rescue,rescue关键字与block关键字对齐,rescue的字面意思为"救援",
表示当block中只要有一个任务执行失败,就会执行rescue中的任务进行补救,当然在rescue中定义什么任务,是由你决定的。

也就是说当block中的任务出错时,会执行rescue中的任务,当block中的任务顺利执行时,则不会执行rescue中的任务。
block里的任意一个任务失败,都会去执行rescue的任务,rescue中又有任意任务执行失败,就会去执行always

官方示例


 tasks:
   - name: Install, configure, and start Apache
     block:
       - name: Install httpd and memcached
         ansible.builtin.yum:
           name:
           - httpd
           - memcached
           state: present

       - name: Apply the foo config template
         ansible.builtin.template:
           src: templates/src.j2
           dest: /etc/foo.conf

       - name: Start service bar and enable it
         ansible.builtin.service:
           name: bar
           state: started
           enabled: True
     when: ansible_facts['distribution'] == 'CentOS'
     become: true
     become_user: root
     ignore_errors: yes

标签:rescue,常规,用法,任务,ansible,执行,block,name
来源: https://www.cnblogs.com/smlile-you-me/p/16442303.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有