1.ansible剧本
-
playbook文件,可以长久保存并实现管理维护的文件,一般以yaml或者yml结尾,是运维必须会的内容
2.ansible剧本的基本格式,
1.以安装nginx为例子(在:,-符号后都必须跟一个空格,注意缩进语法)
#编辑安装ngixn的yaml文件
[root@master-61 /server]# vim install_nginx.yaml
- hosts: server
tasks:
- name: 01 安装ngixn
yum:
name: nginx
state: present
#执行剧本,查看结果
[root@master-61 /server]# ansible-playbook install_nginx.yaml
PLAY [server] ********************************************************************************************************************
TASK [Gathering Facts] ***********************************************************************************************************
ok: [192.168.186.129]
TASK [01 安装ngixn] ****************************************************************************************************************
changed: [192.168.186.129]
PLAY RECAP ***********************************************************************************************************************
192.168.186.129 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
2.在server机器上创建/server目录,并将send_test.yaml文件发送过去
#编写send_test的剧本文件
[root@master-61 /server]# vim send_test.yaml
- hosts: server
tasks:
- name: 01 创建文件
file:
path: /server
state: directory
- name: 02 发送文件
copy:
src: /server/send_test.yaml
dest: /server/
#测试执行剧本查看结果
[root@master-61 /server]# ansible-playbook send_test.yaml
PLAY [server] ********************************************************************************************************************
TASK [Gathering Facts] ***********************************************************************************************************
ok: [192.168.186.129]
TASK [01 创建文件] *******************************************************************************************************************
changed: [192.168.186.129]
TASK [02 发送文件] *******************************************************************************************************************
changed: [192.168.186.129]
PLAY RECAP ***********************************************************************************************************************
192.168.186.129 : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
3.编写nfs服务的剧本,帮助服务端和客户端配置nfs服务
服务端流程:
1. 部署nfs-utils
2. 修改配置文件 /etc/exports /backup-nfs 172.16.1.0/24(rw,all_squash)可以在本地编辑好配置文件,通过copy模块发送过去
3. 创建共享目录,改所有者
4. 启动服务rpcbind,nfs
1.在本地编辑好nfs的配置文件
[root@master-61 /server]# vim /etc/exports
[root@master-61 /server]# cat /etc/exports
/nfs-data 172.16.1.0/24(rw,sync,all_squash)
2.编写yaml剧本,安装部署,查看结果
[root@master-61 /server]# vim install_nfs.yaml
[root@master-61 /server]# cat install_nfs.yaml
- hosts: nfs
tasks:
- name: 01 通过yum安装nfs-utils和rpcbind
yum:
name: nfs-utils,rpcbind
state: present
- name: 02 发送本地配置文件
copy:
src: /etc/exports
dest: /etc/exports
- name: 03 创建目录,更改目录所有者
file:
path: /nfs-data
state: directory
owner: nfsnobody
group: nfsnobody
- name: 04 启动rpcbind服务
systemd:
name: rpcbind
enabled: yes
state: started
- name: 05 启动nfs服务
systemd:
name: nfs
enabled: yes
state: started
- hosts: web
tasks:
- name: 01 客户端安装nfs-utils
yum:
name: nfs-utils
state: present
- name: 02 创建挂载目录
file:
path: /nfs-share
state: directory
- name: 03 挂载目录
mount:
src: 172.16.1.31:/nfs-data
path: /nfs-share
fstype: nfs
state: mounted
[root@master-61 /server]# ansible-playbook install_nfs.yaml
PLAY [nfs] ***************************************************************************************************************************
TASK [Gathering Facts] ***************************************************************************************************************
ok: [172.16.1.31]
TASK [01 通过yum安装nfs-utils和rpcbind] ***************************************************************************************************
ok: [172.16.1.31]
TASK [02 发送本地配置文件] *******************************************************************************************************************
ok: [172.16.1.31]
TASK [03 创建目录,更改目录所有者] ***************************************************************************************************************
ok: [172.16.1.31]
TASK [04 启动rpcbind服务] ****************************************************************************************************************
ok: [172.16.1.31]
TASK [05 启动nfs服务] ********************************************************************************************************************
ok: [172.16.1.31]
PLAY [web] ***************************************************************************************************************************
TASK [Gathering Facts] ***************************************************************************************************************
ok: [172.16.1.7]
ok: [172.16.1.8]
ok: [172.16.1.9]
TASK [01 客户端安装nfs-utils] *************************************************************************************************************
ok: [172.16.1.7]
ok: [172.16.1.9]
ok: [172.16.1.8]
TASK [02 创建挂载目录] *********************************************************************************************************************
ok: [172.16.1.7]
ok: [172.16.1.8]
ok: [172.16.1.9]
TASK [03 挂载目录] ***********************************************************************************************************************
changed: [172.16.1.9]
changed: [172.16.1.8]
changed: [172.16.1.7]
PLAY RECAP ***************************************************************************************************************************
172.16.1.31 : ok=6 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
172.16.1.7 : ok=4 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
172.16.1.8 : ok=4 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
172.16.1.9 : ok=4 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
4.ansible变量
1.全局变量vars
[root@master-61 /server]# vim show_vars.yaml
[root@master-61 /server]# cat show_vars.yaml
- hosts: server
vars:
dir: /etc/test_vars.txt
tasks:
- name: 01 创建/etc/test_vars.txt
file:
path: "{{ dir }}"
state: directory
[root@master-61 /server]# ansible-playbook show_vars.yaml
PLAY [server] ************************************************************************************************************************
TASK [Gathering Facts] ***************************************************************************************************************
ok: [192.168.186.129]
TASK [01 创建/etc/test_vars.txt] *******************************************************************************************************
changed: [192.168.186.129]
PLAY RECAP ***************************************************************************************************************************
192.168.186.129 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
[root@master-61 /server]#
2.register变量
[root@master-61 /server]# ansible-playbook register_show.yaml
PLAY [server] ************************************************************************************************************************
TASK [Gathering Facts] ***************************************************************************************************************
ok: [192.168.186.129]
TASK [接收主机名] *************************************************************************************************************************
changed: [192.168.186.129]
TASK [打印主机名] *************************************************************************************************************************
ok: [192.168.186.129] => {
"msg": "server主机名是:localhost"
}
PLAY RECAP ***************************************************************************************************************************
192.168.186.129 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
3.创建变量文件
[root@master-61 /server]# cat /vars.yaml
ip: 192.168.1.19
hostname: web7
[root@master-61 /server]# cat vars_file.yaml
- hosts: server
vars_files: /vars.yaml
tasks:
- name: 创建文件
file:
path: /{{hostname}}/{{ip}}
state: directory
[root@master-61 /server]# ansible-playbook vars_file.yaml
PLAY [server] ************************************************************************************************************************
TASK [Gathering Facts] ***************************************************************************************************************
ok: [192.168.186.129]
TASK [创建文件] **************************************************************************************************************************
ok: [192.168.186.129]
PLAY RECAP ***************************************************************************************************************************
192.168.186.129 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0