4-playbook快速入门
ansible的任务配置文件是playbook,可以称为是“剧本”,playbook中包含一系列任务,每个任务被称为是“play、戏剧”。
学习playbook需要先学习 YAML基础。
playbook语法特性
- 需要以
---
开始,并顶行首写 - 次行开始正常写playbook的内容,建议首先将该playbook的作用标明
- 使用
#
表示注释 - 缩进必须要进行注意,同级别的缩进格数是一样的,不能使用Tab进行缩进
- 区分大小写
shell与playbook的转换
ansible可以将shell脚本或者命令轻松的转换为playbook。
1 | touch /home/playbook-test.txt |
简单的转换为playbook文件。
1 | --- # 开始字符,文件顶行写 |
还可以使用ansible的模块进行编写playbook文件。
1 | --- # 开始字符,文件顶行写 |
每个task的name都会在playbook执行时展示执行情况,虽然在playbook中不添加name也可以,但是还是建议加上,以便于问题的排查。
playbook与shell的区别
因为ansible有着“幂等性”的特性,所以执行一个playbook时,当ansible会发现系统现有的状态与playbook定义的状态是相同时,就会跳过该操作,所以当再次执行playbook时,执行速度会非常的快;但是shell脚本重复重复进行操作时,会将所有的步骤在执行一遍。
playbook中多个paly
1 | --- |
这样一个palybook中就包含了两个paly
用户
remote_user: root #在远程主机上以哪个用户身份执行
become: yes #是否允许身份切换
become_method: sudo #切换用户身份的方式,有sudo、su、pbrun等方式,默认为sudo
become_user: root #切换成什么用户身份,默认为root
以上选项不仅可用于全局,也可用于各task中。
如果需要指定切换用户身份时的密码,可在执行ansible-playbook时使用选项--ask-become-pass
或者-K
ansible-playbook 执行技巧
限定执行范围
- limit
指定操作的主机范围可以在playbook中通过hosts
进行限定
也可以在ansible-playbook命令来指定主机。1
ansible-playbook XXX.yml -limit test3 #通过这种方式执行,及时playbook中是hosts: test3,test4,test5,也只会对test3进行操作
- –list-hosts
该选项可以知道playbook会操作用在那些主机上,并不会执行playbook文件。--list-hosts
用户与权限设置
–remote-user
在playbook中,如果hosts字段下没有定义users,那么将会使用你在Inventory文件中定义的用户,如果Inventory文件中也没有定义用户,则会使用当前系统用户身份来ssh远程。
可以在ansible-playbook中使用–remote-user选项来指定用户。1
ansible-playbook XXX.yml --remote-user=yyg
–ask-sudo-pass
-ask-sudo-pass在需要输入ssh密码的情况下交互式的输入密码
–sudo
使用–sudo选项,可以强制所有play都使用sudo用户,同时使用–sudo-user选项指定sudo可以使用哪个用户的权限1
2以yyg身份运行playbook,并在执行执行过程中交互式输入密码
ansible-playbook XXX.yml --sudo --sudo-user=yyg -ask-sudo-pass
其他常用选项
- –inventory=PATH -i :指定inventory文件
- -v:输出详细信息
- –fork=NUM :执行并发数