【2023】ansible-基本任务控制

简介: 【2023】ansible-基本任务控制
- 本文主要讲述了when、loop、handlers的含义及应用场景
- 并为每种语句配上示例
- 编写不易,感谢动动小手!!!!!!

💕when:条件语句

Ansible的when条件控制语句允许您基于条件执行任务或跳过任务。

这个功能在处理不同的系统和环境时非常有用,因为您可以使用适当的条件来检查变量、主机名和其他条件。

when 是一种条件语句,用于在任务执行之前检查某些条件是否为真。当条件为真时,任务将被执行;当条件为假时,任务将被跳过。

when 语句可用于各种场景,例如:

  • 操作系统特定的任务:当任务仅适用于特定的操作系统时,可以使用 when 语句根据操作系统类型来跳过任务。
  • 主机属性:当主机的某些属性符合条件时,可以使用 when 语句来执行任务,例如主机的 IP 地址、主机名等。
  • 变量值:当变量符合条件时,可以使用 when 语句来执行任务。
  • 环境:当处于特定环境时,可以使用 when 语句来执行任务。例如,在测试环境中运行的任务可能与在生产环境中运行的任务不同。
  • 其他条件:当任务只有在满足一定条件时才需要执行时,可以使用 when 语句来控制任务的执行。

示例:通过fact变量判断系统为centos时安装nginx

- hosts: all
  tasks:
    - name: Installed nginx
      yum: 
        name: nginx
        state: present
      when: (ansible_distribution == "CentOS")

示例:为特定的主机添加Nginx仓库

- hosts: all
  tasks:
    - name: ADD nginx yum repository
      yum_repository:
        name: nginx
        description: Nginx Repository
        baseurl: http://nginx.org/packages/centos/$releasever/$basearch/
        gpgcheck: no
      when: (ansible_hostname is match("web*"))

💕loop:循环语句

Ansible的loop是用于在Playbook中重复执行任务的控制结构。它可以使操作更简洁,可读性更高,减少代码的重复编写。在Playbook中可以使用以下的循环结构:

  • with_items:对列表中的每个项执行任务。
  • with_indexed_items:对列表中的每个项及其索引执行任务。
  • with_dict:对字典中的每个键/值对执行任务。
  • with_file:对文件列表中的每个文件执行任务。

loop 是一种循环语句,用于在一组值上迭代执行任务。

loop 语句可用于各种场景,例如:

  • 配置多个主机:当需要在多个主机上执行相同的任务时,可以使用 loop 语句遍历主机列表,并在每个主机上执行相同的任务。
  • 配置多个用户:当需要在多个用户上执行相同的任务时,可以使用 loop 语句遍历用户列表,并在每个用户上执行相同的任务。
  • 安装多个软件包:当需要在多个主机上安装多个软件包时,可以使用 loop 语句遍历软件包列表,并在每个主机上安装相同的软件包等等… …

示例:依次启动多个服务

- hosts: all
  tasks:
    name: Started server
      systemd:
        name: "{{ item }}"
        state: started
      loop:
        - nginx
        - php-fpm

示例:拷贝文件到不同目录

- hosts: all
  tasks:
    name: Copy files
      copy:
        src: "{{ item.src }}"
        dest: "{{ item.dest }}"
      loop:
        - { src: "file1" , dest: "/dir1" }
        - { src: "file2" , dest: "/dir2" }

💕handlers:触发器

Ansible中的handlers是一组特殊的任务,它们在特定的条件下触发执行。

Handlers通常用于在任务执行之后,修正某些服务、应用程序或配置文件等方面的状态。

Handlers与任务类似,都是在playbook中定义的,但Handlers与任务的区别在于:Handlers只有当其被唤起的时候才会执行。

Handlers 是一种特殊的任务类型,它们通常用于在任务执行后执行特定的操作,比如重新启动服务或重新加载配置文件等。


示例:一个安装nginx的案例

注意:notify的名字要和handlers中的name名字完全一致。

- name: Install and configure Nginx
  hosts: web_servers
  tasks:
    - name: Install Nginx
      yum:
        name: nginx
        state: present
    - name: Configure Nginx
      template:
        src: nginx.conf.j2
        dest: /etc/nginx/nginx.conf
      notify: Restart Nginx
  handlers:
    - name: Restart Nginx
      service:
        name: nginx
        state: restarted

本文结束!

目录
相关文章
|
12月前
|
运维 Cloud Native Go
Ansible自动化:简化你的运维任务
Ansible自动化:简化你的运维任务
116 0
|
2月前
|
运维 Unix 应用服务中间件
自动化运维:使用Ansible简化日常任务
【8月更文挑战第4天】在现代IT架构中,自动化运维成为提升效率、减少人为错误的关键。本文将介绍如何使用Ansible这一强大的自动化工具来简化日常的运维任务,通过实际代码示例,展示配置管理、软件部署和系统更新等操作。我们将探索如何利用Ansible的简洁语法和强大功能来优化工作流程,从而为读者提供一套实用的自动化解决方案。
|
2月前
|
运维 监控 Devops
自动化运维的魔法:如何利用Ansible简化日常任务
【8月更文挑战第24天】在快速迭代的互联网时代,运维效率成为企业竞争力的关键。本文将介绍一种强大的自动化工具——Ansible,它如何通过简化配置管理和自动化部署来提升运维效率。你将了解到Ansible的基本概念、优势以及如何应用它来优化你的工作流程。让我们一起探索这个自动化的魔法世界,释放运维的潜能!
118 60
|
7天前
|
运维 Ubuntu 应用服务中间件
自动化运维:使用Ansible进行配置管理和任务自动化
【9月更文挑战第27天】在现代IT基础设施中,自动化运维是提高效率、减少人为错误和确保系统一致性的关键。本文将介绍如何使用Ansible,一个流行的开源IT自动化工具,来简化日常的运维任务。我们将探索Ansible的核心概念,包括它的架构、如何安装和使用它,以及一些实际的使用案例。无论你是新手还是有经验的运维专家,这篇文章都会提供有价值的见解和技巧,以帮助你更好地利用Ansible实现自动化。
|
15天前
|
运维 监控 安全
自动化运维:使用Ansible简化日常任务
【9月更文挑战第19天】在现代IT架构中,自动化运维是提升效率和减少人为错误的关键。本文将介绍如何使用Ansible这一强大的自动化工具来简化日常运维任务,包括安装软件、配置系统和应用部署等。通过实际的代码示例,我们将展示如何编写简单的Ansible playbook来实现这些任务,并讨论其在真实场景中的应用价值。
51 5
|
1月前
|
运维 应用服务中间件 nginx
自动化运维:使用Ansible简化日常任务
【9月更文挑战第2天】在快速迭代的软件开发周期中,高效可靠的运维成为项目成功的关键。本文将介绍如何使用Ansible这一强大的自动化工具来简化日常运维任务,从基础概念到实战应用,带你一步步构建自动化运维流程,解锁更高效的工作方式。
|
2月前
|
运维 Ubuntu 应用服务中间件
自动化运维:使用Ansible简化日常任务
【8月更文挑战第31天】告别繁琐,拥抱高效。本文带你领略Ansible的魅力,通过具体示例展示如何用它来自动化你的日常IT运维任务。准备好让你的服务器管理工作变得简单而有趣!
|
2月前
|
机器学习/深度学习 运维 Ubuntu
自动化运维:使用Ansible简化日常任务探索Python编程之美:从基础到进阶
【8月更文挑战第28天】在快速迭代的软件开发周期中,运维工作的效率至关重要。本文将介绍如何使用Ansible这一强大的自动化工具来简化日常的运维任务,通过代码示例展示如何配置和使用Ansible,以及它如何帮助提升工作效率和减少人为错误。文章将深入讨论Ansible的核心概念,包括Playbooks和Tasks,并探讨如何利用这些概念进行高效的系统管理。 【8月更文挑战第28天】在数字时代的浪潮中,编程已成为一门艺术和科学。本文将通过Python语言的镜头,带领读者踏上一段从零基础到熟练运用的旅程。我们将一起探索Python的简洁语法、强大库支持以及它在数据科学、网络开发等领域的应用。无论你
|
2月前
|
运维 JavaScript 安全
自动化运维:使用Ansible简化日常任务深入理解Node.js事件循环和异步编程
【8月更文挑战第27天】在快节奏的技术环境中,自动化不再是奢侈品,而是必需品。本文将引导你通过Ansible实现自动化运维,从基础到高级应用,解锁高效管理服务器群的秘诀,让你的IT操作更加流畅和高效。
|
Shell 项目管理
ansible之when条件语法、处理任务失败、jinja2模板和项目管理
ansible之when条件语法、处理任务失败、jinja2模板和项目管理
112 0