ansible-playbook 剧本
1.Playbook介绍
一个剧本里面可以有多个play(任务列表),每个play只能有一个tasks(只有一个任务),每个tasks可以有多个name(指定描述)
playbook是ansible用于配置,部署,和管理被控节点的剧本。通过playbook的详细描述,执行其中的tasks,可以让远端主机达到预期的状态。playbook是由一个或多个”play”组成的列表。 当对一台机器做环境初始化的时候往往需要不止做一件事情,这时使用playbook会更加适合。通过playbook你可以一次在多台机器执行多个指令。通过这种预先设计的配置保持了机器的配置统一,并很简单的执行日常任务。
工作原理:
ansible通过不同的模块实现相应的管理,管理的方式通过定义的清单文件(hosts)所管理的主机包括认证的方式连接的端口等。所有的功能都是通过调用不同的模块(modules)来完成不同的功能的。不管是执行单条命令还是play-book都是基于清单文件。执行的方式可以是对本地执行也可以通过ssh的方式对远程主机进行操作,常见的是通过ssh的方式,对远程主机进行操作。
playbook格式
playbook由YMAL语言编写。YMAL格式是类似于JSON的文件格式,便于人理解和阅读,同时便于书写。
核心元素:
Playbooks
Variables #变量元素,可传递给Tasks/Templates使用;
Tasks #任务元素,由模块定义的操作的列表,即调用模块完成任务;
Templates #模板元素,使用了模板语法的文本文件;
Handlers #处理器元素,通常指在某事件满足时触发的操作;
Roles #角色元素
playbook的基础组件:
name:
定义playbook或者task的名称(任务的描述信息),每一个play都可以完成一个任务。
hosts:
playbook中的每一个paly的目的都是为了让某个或某些以某个指定用户的身份执行任务。hosts用于指定要执行指定任务的主机.
user :
remote_user则用于指定远程主机上的执行任务的用户,也可以使用user(基本上是root)
tasks :
任务列表play的主体部分是task list. task list中的各任务按次序逐个在hosts中指定的所有主机上执行,即在所有主机上完成第一个任务后再开始第二个。
vars:
定义变量(如果不使用内部变量需要提前定义)定义到剧本中
vars_files:
调用定义变量文件 定义到文件中
notify:
任务执行结果如果是发生更改了的则触发定义在handler的任务执行
handlers:
用于当前关注的资源发生变化时采取一定指定的操作
写剧本注意项:
不可以使用tab
同级元素对齐
一个key对应一个值是字典
:后面是空格
通过缩进表示层级关系
中间有错,直接退出不接着执行,想要有错接着执行要加参数
=识别不到,可以用:
2. 剧本
2.1
参数解释:
hosts: 参数指定了对哪些主机进行操作;
user: 参数指定了使用什么用户登录远程主机操作;
tasks: 指定了一个任务.
name:参数同样是对任务的描述,在执行过程中会打印出来。
[root@ansible-server ~]# cd /etc/ansible/
[root@ansible-server ansible]# vim test.yml #创建文件必须以.yml结尾
--- #分隔符也可以不写- hosts: webservers1user: roottasks:- name: playbook_testfile: state=touch path=/tpm/playbook.txt
检测语法:
[root@ansible-server ansible]# ansible-playbook --syn