目录
1、play和playbook和role
2、幂等性
3、清单
4、配置文件(ansible.cfg)
5、变量
5.1 在playbook中使用变量:
5.2 在playbook中使用变量文件:
6、事实
7、循环
8、处理程序
9、块
10、动态清单文件
11、角色
1、play和playbook和role
role由多个playbook组成,playbook由多个play组成,play由多个task组成。play是由yaml格式的文本文件。
playbook中play和任务列出的顺序很重要,因为ansible会按照相同的顺序运行它们
简单的playbook(一个play):
简单的playbook(两个play):
play使用关键字(remote_user、become):优先级高于配置文件
2、幂等性
具有幂等性是ansible重要的特点。playbook运行一次和运行多次效果是一样的。不会改变系统状态。
3、清单
清单:你要操作哪些主机就放到清单里面,包含主机和主机组。
默认清单文件:/etc/ansible/hosts
自定义清单文件:inventory
静态清单:
4、配置文件(ansible.cfg)
基本配置文件:/etc/ansible/ansible.cfg。
ansible --version 可以看到这个路径,版本不同,可能位置不一样。
主目录:~/.ansible.cfg
运行ansible命令的目录创建ansible.cfg:./ansible.cfg
如果当前目录有配置文件就使用当前目录的配置文件,如果没有就去找用户家目录下的配置文件,如果也没有就去找/etc/ansible/ansible.cfg。实践中不常用/etc/ansible/ansible.cfg和~/.ansible.cfg
ANSIBLE_CONFIG环境变量可以定义配置文件的位置。
5、变量
变量可以存储值。
5.1 在playbook中使用变量:
5.2 在playbook中使用变量文件:
6、事实
Ansible 事实(Facts)是指在执行 Ansible Playbook 时,Ansible 自动收集的有关目标主机的信息。这些信息包括主机名、IP 地址、操作系统类型、内存大小、CPU 数量等等。Ansible 事实可以在 Playbook 中使用,以便根据目标主机的不同情况执行不同的任务。
Ansible 事实可以通过 ansible_facts 变量在 Playbook 中访问。例如,要获取目标主机的 IP 地址,可以使用 ansible_facts['default_ipv4']['address']。
Ansible 事实可以通过多种方式收集,包括使用 Ansible 内置的模块、自定义模块、脚本等。默认情况下,Ansible 会自动收集一些基本的事实,如主机名、操作系统类型等。如果需要收集更多的信息,可以使用 Ansible 内置的模块,如 setup 模块,或者编写自定义模块和脚本来收集信息。
7、循环
在 Ansible 中,可以使用循环来重复执行某些任务或操作。循环可以用于遍历列表、字典或范围等数据结构。
有条件的循环:when关键字
8、处理程序
处理程序是响应由其他任务触发的通知的任务。仅当任务在收管主机上更改了某些内容时,任务才通知其处理程序。每个处理程序具有全局唯一的名称,在playbook中任务块的末尾触发。如果没有任务通过名称通知处理程序,处理程序就不会运行。如果一个或多个任务通知处理程序,处理程序就会在play中的所有其他任务完成后运行一次。因为处理程序就是任务,所以管理员可以在处理程序中使用他们将用于任何其他任务的模块。通常而言,处理程序被用于重新引导主机和重新启动服务。处理程序可视为非活动任务,只有在使用notify语句显式调用时才会被触发。在下列代码片段中,只有配置文件更新并且通知了该任务时,restart apache处理程序才会重新启动Apache服务器:
playbook示例:
9、块
块是对任务进行逻辑分组的子句,用于控制任务的执行方式。
10、动态清单文件
Ansible动态清单文件是一种特殊类型的清单文件,它不是静态的,而是在运行时动态生成的。这种清单文件通常用于管理大规模的、动态变化的环境,例如云环境或容器环境。
动态清单文件可以使用各种插件来生成,例如:
AWS EC2插件:可以从AWS EC2实例列表中生成清单文件。
OpenStack插件:可以从OpenStack实例列表中生成清单文件。
Docker插件:可以从Docker容器列表中生成清单文件。
Kubernetes插件:可以从Kubernetes集群中生成清单文件。
使用动态清单文件,可以轻松地管理大规模的、动态变化的环境,而无需手动维护清单文件。同时,动态清单文件也可以与Ansible的其他功能结合使用,例如动态变量、动态任务等。
11、角色
Ansible角色是一种组织和管理Ansible任务、变量和文件的方法。它们是一种可重用的、可组合的、可扩展的方式,可以使您的Ansible代码更加模块化和可维护。
一个角色通常包含以下内容:
tasks:包含要执行的任务列表。
handlers:包含要在任务完成后执行的处理程序列表。
templates:包含要使用的模板文件。
files:包含要复制到目标主机的文件。
vars:包含角色特定的变量。
defaults:包含角色默认变量的值。
meta:包含角色依赖关系和其他元数据。
使用角色可以使您的Ansible代码更加模块化和可重用,同时也可以使您的代码更加易于维护和扩展。