playbook概念
playbook由两部分组成
1.play 指定hosts
2.tasks
name: namedesc
ad-hoc(ansible模块名称): -a(参数)
playbook和ad-hoc的区别
1.playbook是对ad-hoc的一种编排方式
2.playbook可以持久运行,而ad-hoc只能临时运行
3.playbook适合复杂任务,ad-hoc适合快速简单任务
4.playbook能控制任务执行的先后顺序
ansible-playbook http.yml -i /home/admin/hosts
playbook部署jboss
su - jboss -c "LAUNCH_JBOSS_IN_BACKGROUND=1 JBOSS_PIDFILE=/var/run/jboss-as/jboss-as-standalone.pid /usr/share/jboss-as/bin/standalone.sh -c standalone.xml"
http://repo1.maven.org/maven2/org/jboss/modules/jboss-modules/1.1.5.GA/jboss-modules-1.1.5.GA.jar
mv jboss-modules-1.1.5.GA.jar jboss-modules.jar
ansible语法
handlers
Handlers 也是一些 task 的列表,通过名字来引用,它们和一般的 task 并没有什么区别.Handlers 是由通知者进行 notify, 如果没有被 notify,handlers 不会执行.不管有多少个通知者进行了 notify,等到 play 中的所有 task 执行完成之后,handlers 也只会被执行一次
Handlers最佳的应用场景是用来重启服务,或者触发系统重启操作.除此以外很少用到了
handlers会按照声明的顺序执行
tags是一种实现部分运行playbook的机制
在一个大型的playbook,那能够只运行其中特定部分的配置而无需运行整个playbook 将会很有用.
register
重新配置整个基础设施
ansible-playbook -i production site.yml
只重新配置基础设施中的所有的NTP
ansible-playbook -i production site.yml --tags ntp
只重新配置我的Web服务器 有单独的角色执行文件
ansible-playbook -i production webservers.yml
ansible变量的三种方式
1.引用变量的格式 {{ var }}.tar.gz
2.变量的指定方式
1.通过playbook文件中的play进行变量定义
定义变量 通过vars关键字进行定义
vars:
- k1: v1
- k2: v2
指定vars_files
通过关键字vars_files关键字指定统一变量文件
2.通过inventory主机清单进行变量定义
hosts_vars
group_vars
3.通过执行playbook时使用-e参数指定变量
ansible-playbook -i hosts -e "hosts=webserver"
4.group变量
系统有一个对所有主机设置的默认组,组名是all
默认情况下 group_vars目录中文件名和hosts清单中组名保持一致.其他组是无法使用当前组变量文件中的变量
系统提供了一个特殊组 all,只需要在group_vars目录下创建一个all文件,编写好变量。所有组就都可以使用
5.host变量
在host_vars目录中创建一个文件,文件名和inventory清单中的主机名称要保持完全一致,如果是IP地址,则创建相应的IP地址文件即可.
6.变量优先级
命令行-e传递参数 》play vars_files定义变量 》play vars定义变量 》hosts_vars主机文件变量 》 group_vars主机组变量 》 group_vars下面默认all组
ansible变量注册
register关键词把当前任务的执行结果存储在变量中.结果参数可以用在模版中,动作条目,或者 when语句
rc 是执行shell命令返回的结果.0是执行成功,其他数字都表示执行失败
ansible facts变量
从客户端主机获取相关变量,用来采集被控端指标状态.比如IP地址 cpu信息 内存信息.
Task Gathering Facts 就是在收集所有节点的facts变量 所以在执行这个任务的时候会有点耗时.
默认情况下的facts变量名称都已经被定义好了,只需要采集被控端主机信息,然后把相关值传递给fact变量名称即可.
根据被控端不同的硬件配置动态生成不同的应用配置文件 facts变量和template模块 在模板配置文件中使用 {{ var }}来动态修改应用的配置