1.什么是playbook
playbook相当于一个文件
- play :定义主机的角色
- task :定义具体执行的任务
ps:playbook是由一个或多个play组成,一个play可以 包含多个task任务。可以理解为:使用不同的模块来共同完成一件事情。
2.playbook和Ad-Hoc的区别?
(1)playbook是对AD-Hoc的一种编排方式
(2)playbook可以持久运行,而Ad-Hoc只能临时运行。
(3)playbook适合复杂的任务,而Ad-Hoc适合做快速简单的任务。
(4)playbook能控制任务执行的先后顺序。
3.playbook三板斧?缩进冒号短横线(语法格式)
playbook是由yml语法书写,结果欧清晰,可读性强,所以必须掌握yml基础语法
语法| 描述
缩进| yaml使用固定的缩进风格表示层级结构,每个缩进由两个空格组成,不能使用tabs
冒号| 以冒号结尾的除外,其他所有冒号后面所有必须有空格
短横作为同一 线| 表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进级别例表。
4.playbook写服务
(1)使用ansible安装并配置nfs服务
172.16.1.7 server
172.16.1.8 client
172.16.1.31 nfs
①:新增一台nfs服务器
[root@manager project1]# cat hosts
[nfsservers]
172.16.1.31
[webservers]
172.16.1.7
172.16.1.8
②推送密钥至172.16.1.31
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
③测试两台主机是否通
ansible all -m ping -i hosts
④编写一个nfs-server的yml
* 安装nfs yum
* 配置nfs copy
* 初始化环境
用户 ----group user
目录----file
授权----file
* 启动服务 systemd
[root@manager project1]# cat nfs_server.yml
- hosts: nfsservers
tasks:
- name: Installed NFS Server
yum:
name: nfs-utils
state: present
- name: Configure NFS Server
copy:
src: ./file/exports.j2
dest: /etc/exports
owner: root
group: root
mode: 0644
backup: yes
- name: Create NFS Group www
group:
name: www
gid: 666
- name: Create NFS User www
user:
name: www
group: www
uid: 666
create_home: no
shell: /sbin/nologin
- name: Create NFS Share Directory
file:
path: /ansible_data
state: directory
owner: www
group: www
mode: 0755
recurse: yes
- name: Systemd NFS Server
systemd:
name: nfs
state: restarted
enabled: yes
⑤配置文件
[root@manager project1]# cat file/exports.j2
/ansible_data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
⑥执行
ansible-playbook -i hosts nfs_server.yml
⑦编写客户端yml
[root@manager project1]# cat nfs_client.yml
- hosts: webservers
tasks:
- name: Mount NFS Server share directory
mount:
src: 172.16.1.31:/ansible_data
path: /mnt
fstype: nfs
opts: defaults
state: mounted
⑧执行客户端
ansible-playbook -i hosts nfs_client.yml