1.task定义:
基本的service moudle使用的是key=value的格式:
例如: task:
-name:make sure apache is running
service:name=httpd state=running
但是command moudle和 shell moudle 比较特殊,不用key=value 格式,
例: task:
-name:disble selinux
command:/sbin/setenforce
对于这两个moudle 我们更关心它的返回码信息
若action行看起来太长,我们可以用空格或者缩进来进行隔开
在action 中可以使用变量
2.handlers:
handlers最佳应用场景是重启服务器或者触发系统重启操作。
例: handlers:
name:restart memcached
service: name=memcached state=restarted
3.ansible-pull:拉取配置而非推送配置
ansible-pull 是一个小脚本,它从git上checkout一个关于配置的指令的repo,然后以这个配置指令来运行ansible-playbook
假设对checkout location 做负载均衡,ansible-pull基本可以无限的提升规模
4.include 语句和 playbook角色(roles)
include(我理解的是约等于import),就是引用某个文件抽象出来的可将一个playbook文件导入另外一个playbook文件中,这种方式允许定义一个顶层的playbook,这个顶层的playbook有其playbook组成
在playbook中使用其他playbook时不能使用其他变量替代。
Roles:Roles基于一个已知的文件结构,去自动加载某些vars_files,tasks,以及handlers,基于roles对内容进行分组,使得我们可以容易地与其他用户分享roles
在playbook中同时使用roles,和tasks,vars_files,或者handlers,roles会优先执行
角色默认变量: 要创建默认变量,需要在roles目录下,添加defaults/main.yml文件,这些变量在所有可用变量中拥有最低优先级,可能被其他地方东哟的变量所覆盖
5.variables:变量
变量名:字母,数字,下划线排列组合。
在playbook中定义变量: -hosts:webservers
vars:
http_port:80
fact缓存:从一个服务器引用另一个服务器的变量。使用fact缓存可以跨群组访问变量。有两种持久的缓存插件:redis和jsonfile。在ansible.cfg文件中配置fact缓存使用redis,把gathering设置为“smart”,或者“explicit”也可以设置“gather_facts”为“false”
变量的优先级:
若相同名称的变量在多个地方都有定义,那么采用的有限顺序为:
①extra vars 优先级最高
②在Inventory中定义的连接变量
③大多数的其他变量(比如在命令行转换play中的变量,include中的变量,role中的变量)
④在inventory定义的其他变量
⑤在由系统发现的facts
⑥role默认值,这是最默认的值,很容易丧失优先级
6.条件选择
when语句:有时候用户有可能需要某一个主机越过某一个特定的步骤,就用when(我理解的就是条件判断是否执行)
•想查看哪些时间在某个特定系统中允许的,可以执行命令:ansible hostname.example.com -m setup
注册变量用register关键字