1.playbook的功能
playbook是由一个或者多个play组成的列表
playbook文件使用yaml来写的
2.YAML
yaml是一种表达资料序列的格式,类似于xml
特点:
可读性好
和脚本语言交互性好
易于实现
适用程序执行流梳理方式
可扩展性强
语法简介:
文件中用[ - - - ]开始,[…]结尾
严格缩进 大小写敏感
key/value可以多行书写也可以一行书写,一行书写用,隔开
一个play需要包括name和tasks
name是描述 tasks是动作
扩展名称是yml或者yaml
yaml列表,yaml字典
列表前加 -
字典的作用是存放键值,不加 -
playbook的核心组件
name:多用于说明
hosts:受控主机列表
tasks:任务,用于选择执行部分代码
3. playbook的构成
(1) Playbook主要有以下四部分构成:
1 target section:定义将要执行playbook的远程主机组
2 variable section:定义playbook运行时需要使用的变量
3 task section:定义将要在远程主机上执行的任务列表
4 handler section:定义task执行完成以后需要调用的任务
(2)而Playbook对应的目录层有五个,分别如下:
一般所需的目录层有:(视情况可变化)
1 vars 变量层
2 tasks 任务层
3 handlers 触发条件
4 files 文件
5 template 模板
4. playbook的编写
(1)vim设定技巧
因为Yaml文件对空格十分敏感,对缩进的要求也很严格,所以我们设置.vimrc的形式,让我们的tab键按一次有两个空格,方便我们的书写习惯。
[lee@westos_ansible ~]$ vim .vimrc
(2)编写
测试一下,编写一个test.yaml文件
使用ansible-playbook方式执行看效果
假设受控主机dnf源已经配置好
编写一个yml文件,安装vsftpd,并且允许匿名用户访问
[lee@westos_ansible ansible]$ cat vsftpd.yml
---
- name: install vsftpd
hosts: westos
tasks:
- name: install vsftpd 安装模块
dnf:
name: vsftpd
state: latest 安装
disable_gpg_check: yes 忽略gpgcheck检测
- name: configure vsftpd 配置模块
lineinfile:
path: /etc/vsftpd/vsftpd.conf
regexp: "anonymous_enable=NO" 匹配匿名用户访问字符
line: "anonymous_enable=YES" 匹配到改为YES
backrefs: yes 匹配不到不做更改
- name: start vsftpd 服务模块
service:
name: vsftpd vsftpd服务
state: restarted 重新启动
enabled: yes 开机自启
- name: configure firewall 防火墙配置模块
firewalld:
service: ftp 服务名称
permanent: yes yes永久生效
state: enabled 开机自启
immediate: yes 立即生效
语法检测
[lee@westos_ansible ansible]$ ansible-playbook vsftpd.yml --syntax-check
playbook: vsftpd.yml
执行
5. playbook执行命令,常用参数
(1)检测语法
ansible-playbook xxx.yml --syntax-check
编写test.yml,估计写错,来查看效果
把name前的缩进改回来,再检测一下,没有问题了
(2)预执行
ansible-playbook xxx.yml --check
并没有在远程主机执行
(3)列出执行范围
ansible-playbook xxx.yml --list-hosts
(4)查看task
修改inventory
[lee@westos_ansible ansible]$ cat inventory
[westos]
172.25.10.200
172.25.10.100
修改test.yml
可以看到两个tasks
修改了清单,所以都会执行
指定某个IP执行
ansible-playbook xxx.yml --limit 172.25.10.200