playbook 剧本

ansible是脚本----playbook剧本

playbook组成部分:

1,tasks 任务:包含要在目标主机上执行的操作,使用模块定义这些操作。每个任务都是一个模块的调用。

2,variables 变量:存储和传递数据。变量可以自定义,可以在playbook当中定义为全局变量,也可以外部传参。

3,templates 模板:用于生成配置文件。模板是包含占位符的文件。占位符由ansible在执行是转换为变量值

4,handlers 处理器:当需要有变更的时候,据执行触发器。和notify一起用

5,roles 角色:是一种组织和封装playbook的。允许把相关的任务,变量,模板和处理器组织成一个可复用的单元。

实例模板:

- name: first play

#一个name就是一个任务名,名字可以不写。

gather_facts: false

#是否收集目标主机的系统信息,false就是不收集

hosts: 192.168.176.50

#执行的目标主机.

remote_user: root

#在目标主机执行的用户

playbook 剧本_第1张图片

检查yml文件的语法是否正确

ansible-playbook test1.yml --syntax-check

检查有几个任务:

ansible-playbook test1.yml --list-task

检查生效的主机

ansible-playbook test1.yml --list-hosts

启动:

ansible-playbook test1.yml

可以从指定的任务开始:

ansible-playbook test1.yml --start-at-task='start httpd'

前面的不执行

切换用户:(主要用于,没有root权限,但想用)

ansible-playbook test1.yml -K

playbook 剧本_第2张图片

vim /etc/ansible/ansible.cfg

打开密钥对:

71 行

vim /etc/ansible/hosts

声明用户名和密码

在命令行指定

ansible-playbook test1.yml -u root -k

引用变量

vim test2.yaml

vars:

groupname: guoqi

username: wangdefu

字典方式:key-value

playbook 剧本_第3张图片

content: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}"

包含所有主机变量的字典

inventory_hostname:目标的主机名

ansible_default_ ipv4:获取目标主机名

通过外部传参(里外名称要一致)

删除

playbook 剧本_第4张图片

ansible-playbook test2.yaml -e 'username=yst groupname=ymr'vim

playbook的条件判断:

when 是一个比较常见的应用场景,实现满足条件即执行,不满足条件即跳过的任务。

vim test3.yaml

debug相当于echo msg:输出的内容

debug用于脚本的调试

playbook 剧本_第5张图片

可以把when后面的

把71 行改成true

练习:

playbook 剧本_第6张图片

在一个任务中不能同时用debug和yum

playbook 剧本_第7张图片

迭代:playbook当中的循环:

ansible有多种循环格式,with_items 循环遍历

vim test5.yml

playbook 剧本_第8张图片

playbook 剧本_第9张图片

把item换成list

遍历循环在主机上创建目录:

在一个目录下创建两种不同的文件:

items

playbook 剧本_第10张图片

list

playbook 剧本_第11张图片

二,列表对应的列,数据结合的方式循环

将列表同一列的组合输出

playbook 剧本_第12张图片

空格会打印null值,一样会输出

playbook 剧本_第13张图片

在工作中可以用于组合搭配

三,组循环,列表当中的值一-一 对应,打印出

根据列表数据循环匹配

playbook 剧本_第14张图片

4*4 16次

四,列表里面的元素定义了循环的次数,第二层列表,相当与内循环。

with_ items 最常用的

with_ list 列别分组循环

with_together 列表对应的列,数据结合的方式循环

with_ nested 相当与双重循环,第一层定义了循环的次数,第二层表式第一 层的每个元素会循环几次

练习:基于循环,创建文件,目录,和用户组

文件:

playbook 剧本_第15张图片

playbook 剧本_第16张图片

playbook 剧本_第17张图片

不加- 当成了一个整体

创建用户和用户组

playbook 剧本_第18张图片

你可能感兴趣的:(运维,ansible,palybook)