- 本文主要讲述了when、loop、handlers的含义及应用场景
- 并为每种语句配上示例
- 编写不易,感谢动动小手!!!!!!
when 是一种条件语句,用于在任务执行之前检查某些条件是否为真。当条件为真时,任务将被执行;当条件为假时,任务将被跳过。
when 语句可用于各种场景,例如:
操作系统特定的任务:当任务仅适用于特定的操作系统时,可以使用 when 语句根据操作系统类型来跳过任务。
主机属性:当主机的某些属性符合条件时,可以使用 when 语句来执行任务,例如主机的 IP 地址、主机名等。
变量值:当变量符合条件时,可以使用 when 语句来执行任务。
环境:当处于特定环境时,可以使用 when 语句来执行任务。例如,在测试环境中运行的任务可能与在生产环境中运行的任务不同。
其他条件:当任务只有在满足一定条件时才需要执行时,可以使用 when 语句来控制任务的执行。
- hosts: alltasks:- name: Installed nginxyum: name: nginxstate: presentwhen: (ansible_distribution == "CentOS")
- hosts: alltasks:- name: ADD nginx yum repositoryyum_repository:name: nginxdescription: Nginx Repositorybaseurl: http://nginx.org/packages/centos/$releasever/$basearch/gpgcheck: nowhen: (ansible_hostname is match("web*"))
loop 是一种循环语句,用于在一组值上迭代执行任务。
loop 语句可用于各种场景,例如:
配置多个主机:当需要在多个主机上执行相同的任务时,可以使用 loop 语句遍历主机列表,并在每个主机上执行相同的任务。
配置多个用户:当需要在多个用户上执行相同的任务时,可以使用 loop 语句遍历用户列表,并在每个用户上执行相同的任务。
安装多个软件包:当需要在多个主机上安装多个软件包时,可以使用 loop 语句遍历软件包列表,并在每个主机上安装相同的软件包等等… …
- hosts: alltasks:name: Started serversystemd:name: "{{ item }}"state: startedloop:- nginx- php-fpm
- hosts: alltasks:name: Copy filescopy:src: "{{ item.src }}"dest: "{{ item.dest }}"loop:- { src: "file1" , dest: "/dir1" }- { src: "file2" , dest: "/dir2" }
Handlers 是一种特殊的任务类型,它们通常用于在任务执行后执行特定的操作,比如重新启动服务或重新加载配置文件等。
注意:notify的名字要和handlers中的name名字完全一致。
- name: Install and configure Nginxhosts: web_serverstasks:- name: Install Nginxyum:name: nginxstate: present- name: Configure Nginxtemplate:src: nginx.conf.j2dest: /etc/nginx/nginx.confnotify: Restart Nginxhandlers:- name: Restart Nginxservice:name: nginxstate: restarted
本文结束!