day51-Ansible-Playbook

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

你可能感兴趣的:(day51-Ansible-Playbook)