Playbook的功能
playbook的主要功能在于将预定义的一组主机,装扮成事先通过ansible中的task定义好的角色。task实际是调用ansible的一个module,将多个play组织在一个playbook中,即可以让他们联合起来,按事先编排的机制执行预定义的动作。playbook 是由一个或多个play组成的列表;Playbook 文件使用YAML来写的。
YAML(Yet Another Markup Language)
是一种表达资料序列的格式,类似XML,2001年首次发表。
特点:
可读性好、和脚本语言交互性好、易于实现、适用程序执行流梳理方式、可扩展性强。
语法简介:
在文件中用[---]开始;
在文件中用[...]结尾;
次行一般书写文件内容;
缩进严格、大小写敏感;
key/value可以多行书写也可一行书写,一行书写用,隔开;
value可以是个字符串,也可是list;
一个play需要包括name和tasks;
name 是描述、tasks 是动作;
一个name只能包含一个task;
扩展名称yml或者yaml。
YAML 列表
[Linux,C++,Java,Python]
- Linux
- C++
- Java
- Python
YAML的字典
字典的作用:存放键值
name:westos
age:12
jobs:linux
{name: "westos", age: "12", jobs: "linux"}
- 等价于 [ xxxxxx ]
子元素的子元素前不须加 -
playbook执行命令
ansible-playbook xxx.yml ... ##执行playbook
--check|-C ##检测
--syntax-check ##check language
--list-hosts ##列出hosts
--list-tags ##列出tag
--list-tasks ##列出task
--limit ##指定执行主机
-v -vv ##现实过程
Playbook的核心组件
name #可选,建议使用多用于说明
hosts #受控主机列表
tasks #任务
#用与选择执行部分代码
vim 设定技巧
vim ~/.vimrc
autocmd FileType yaml setlocal ai ts=2 sw=2 et
setlocal ##设定当前文件
ai ##自动退格对齐 auto indent
ts ##tab建长度为2空格 tabstop=2
sw ##缩进长度为2 shiftwidth=2
et ##把tab键变成空格 expandtab
基本示例
安装启用vstpd
vim vstpd.yml
//
---
- name: install vsftpd ##描述可以不写,只是为了提示操作者执行步骤,此playbook是为了下载并使用vstpd
hosts: all ##所有远程主机,也可以写具体ip号或者具体清单名称
remote_user: devops ##控制远程主机的devops用户执行以下操作
tasks: ###任务,一个name只能包含一个task
- name: install vsftpd
dnf:
name: vsftpd
state: latest
disable_gpg_check: yes ##跳过对源GPG校验(或者授权检测),可以下载软件
- name: configure vsftpd ##配置 vsftp
lineinfile:
path: /etc/vsftpd/vsftpd.conf
regexp: "anonymous_enable=NO"
line: "anonymous_enable=YES"
backrefs: yes
- name: start vsftpd ##开启 vsftpd
service:
name: vsftpd
state: restarted
enabled: yes
- name: configure firewall ##配置 firewall
firewalld:
service: ftp
permanent: yes
state: enabled
immediate: yes
~
//
[lee@ansible ansible]$ ansible-playbook vstpd.yml ##执行playbook,执行成功,没有报错
PLAY [install vsftpd] **********************************************************
TASK [Gathering Facts] *********************************************************
ok: [172.25.254.211]
TASK [install vsftpd] **********************************************************
changed: [172.25.254.211]
TASK [configure vsftpd] ********************************************************
changed: [172.25.254.211]
TASK [start vsftpd] ************************************************************
changed: [172.25.254.211]
TASK [configure firewall] ******************************************************
changed: [172.25.254.211]
PLAY RECAP *********************************************************************
172.25.254.211 : ok=5 changed=4 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
测试:
在note1主机上:vstpd服务安装并且开启
[root@note1 ~]# systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemon
Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)
Active: active (running) since Sun 2021-08-22 14:39:53 CST; 3min 59s ago ##服务开启
Process: 4156 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
Main PID: 4157 (vsftpd)
Tasks: 1 (limit: 5043)
Memory: 544.0K
CGroup: /system.slice/vsftpd.service
└─4157 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf