程序员

ansible使用剧本部署nfs服务

2020-05-24  本文已影响0人  南南宫问天

剧本的编写方法

image.png

剧本的语法规范:
1)空格规范: 实现缩进功能
2)冒号规范: 实现键值定义
3)横线规范: 实现列表现实
剧本的作用: 可以一键化完成多个任务

剧本的组成部分

演员信息: 男一号 hosts
干的事情: 吻戏 tasks
演员信息: 男二号
干的事情: 看着

剧本编写规范: yaml ---三点要求

1.合理的缩进 ----两个空格表示一个缩进关系

​ 标题一
​ 标题二
​ 标题三
补充: 在ansible中一定不能用tab进行缩进

2.冒号的使用方法

​ hosts: 172.16.210.53
​ tasks:
​ yum name=xx
补充: 使用冒号时后面要有空格信息
​ 以冒号结尾,冒号信息出现在注释说明,后面不需要加上空格

3.剧本编写常见错误:

01. 剧本语法规范是否符合(空格 冒号 短横线)
02. 剧本中模块使用是否正确
03. 剧本中一个name标识下面只能写一个模块任务信息
04. 剧本中尽量不要大量使用shell模块

4.短横线应用 -(列表功能)

- 张三
         男
           - 打游戏
           - 运动
              
       - 李四
         女
           学习
              湖南
       - 王五
         男
           运动
              深圳

补充: 使用短横线构成列表信息,短横线后面需要有空格

开始编写剧本:

剧本文件扩展名尽量为yaml
1.方便识别文件是一个剧本文件
2.文件编写时会有颜色提示

部署nfs服务

1.创建几个目录,提前写好配置文件

[root@ansible ~]# cd -
/etc/ansible/ansible-playbook
[root@ansible ansible-playbook]# mkdir nfs-file
[root@ansible ansible-playbook]# mkdir nfs-file/nfs-{client,server}
[root@ansible ansible-playbook]# cd nfs-file/nfs-server/
[root@ansible nfs-server]# echo "/data 172.16.210.0/24(rw,sync)" > exports

2.在主机清单填写要部署的主机

[nfs:children]
nfs_server
nfs_client

[nfs_server]
172.16.210.53
[nfs_client]
172.16.210.54
172.16.210.55

3.编写剧本

[root@ansible ansible-playbook]# cat nfs-server.yaml 
- hosts: nfs
  tasks:
    - name: 01-install nfs software
      yum:
        name: ['nfs-utils','rpcbind']
        state: installed

- hosts: nfs_server
  vars:
    data_dir: /data
  tasks:
    - name: 01-copy conf file
      copy: src=/etc/ansible/ansible-playbook/nfs-file/nfs-server/exports dest=/etc
      notify: restart nfs server
    - name: 02-create data dir
      file: path={{ data_dir }}  state=directory owner=nfsnobody group=nfsnobody
    - name: 03-start sever
      #service: name=rpcbinf state=started enabled=yes
      #service: name=nfs state=started enabled=yes
      service: name={{ item }} state=started enabled=yes
      with_items:
        - rpcbind
        - nfs

  handlers:
    - name: restart nfs server
      service: name=nfs state=restarted
    
- hosts: nfs_client
  vars:
    data_dir: /data
  tasks:
    - name: 01-mount
      mount: src=172.16.210.53:{{ data_dir }} path=/mnt fstype=nfs state=mounted
    - name: 02-check mount info
      shell: df -h | grep /data
      register: mount_info
    - name: display mount info
      debug: msg={{ mount_info.stdout_lines }}

4.执行剧本

[root@ansible ansible-playbook]# ansible-playbook nfs-server.yaml 

PLAY [nfs] *********************************************************************

TASK [01-install nfs software] *************************************************
ok: [172.16.210.55]
ok: [172.16.210.53]
ok: [172.16.210.54]

PLAY [nfs_server] **************************************************************

TASK [01-copy conf file] *******************************************************
ok: [172.16.210.53]

TASK [02-create data dir] ******************************************************
changed: [172.16.210.53]

TASK [03-start sever] **********************************************************
ok: [172.16.210.53] => (item=rpcbind)
ok: [172.16.210.53] => (item=nfs)

PLAY [nfs_client] **************************************************************

TASK [01-mount] ****************************************************************
ok: [172.16.210.55]
changed: [172.16.210.54]

TASK [02-check mount info] *****************************************************
changed: [172.16.210.55]
changed: [172.16.210.54]

TASK [display mount info] ******************************************************
ok: [172.16.210.54] => {
    "msg": [
        "172.16.210.53:/data       36G  1.6G   34G    5% /mnt"
    ]
}
ok: [172.16.210.55] => {
    "msg": [
        "172.16.210.53:/data       36G  1.6G   34G    5% /mnt"
    ]
}

PLAY RECAP *********************************************************************
172.16.210.53              : ok=4    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
172.16.210.54              : ok=4    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
172.16.210.55              : ok=4    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

5.查看客户端是否成功挂载

[root@web02 ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   36G  1.7G   34G    5% /
devtmpfs                 2.4G     0  2.4G    0% /dev
tmpfs                    2.4G     0  2.4G    0% /dev/shm
tmpfs                    2.4G  8.6M  2.4G    1% /run
tmpfs                    2.4G     0  2.4G    0% /sys/fs/cgroup
/dev/sda1               1014M  143M  872M   15% /boot
tmpfs                    480M     0  480M    0% /run/user/0
172.16.210.53:/data       36G  1.6G   34G    5% /mnt

[root@web03 ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   36G  1.7G   34G    5% /
devtmpfs                 1.9G     0  1.9G    0% /dev
tmpfs                    1.9G     0  1.9G    0% /dev/shm
tmpfs                    1.9G  8.6M  1.9G    1% /run
tmpfs                    1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               1014M  143M  872M   15% /boot
172.16.210.53:/data       36G  1.6G   34G    5% /mnt
tmpfs                    380M     0  380M    0% /run/user/0

挂载成功!

上一篇下一篇

猜你喜欢

热点阅读