Ansible应用项目


一键化部署NFS服务

NFS服务基于RPC协议,是采用客户端/服务器结构实现的分布式文件系统。NFS服务器允许NFS客户端将远端NFS服务器的共享目录挂载到本地的NFS客户端中,如此客户端即可像对自己的磁盘分区和目录一样将数据存储到NFS服务器中。

ad-hoc部署NFS服务

服务端部署

  1. 确认安装软件
    ansible 172.16.1.31 -m yum -a “name=nfs-utils state=installed”
    ansible 172.16.1.31 -m yum -a “name=rpcbind state=installed”
  2. 分发配置文件
    echo “/data 172.16.1.0/24(rw,sync)”>/etc/ansible/ansible-playbook/nfs_file/nfs_server/exports
    ansible 172.16.1.31 -m copy -a “src=./nfs_file/nfs_server/exports dest=/etc/”
  3. 创建共享目录
    ansible 172.16.1.31 -m file -a “dest=/data state=directory owner=nfsnobody group=nfsnobody”
  4. 启动服务程序
    ansible 172.16.1.31 -m service -a “name=rpcbind state=started enabled=yes”
    ansible 172.16.1.31 -m service -a “name=nfs state=started enabled=yes”

客户端部署

  1. 挂载共享目录
    ansible 172.16.1.7 -m mount -a “src=172.16.1.31:/data path=/mnt fstype=nfs state=mounted”
  2. 查看共享目录
    ansible 172.16.1.7 -m shell -a “df -h”

playbook部署NFS服务

  1. 准备NFS目录
    nfs_file、nfs_client、nfs_server

    [root@m01 ~]# tree /etc/ansible/
    /etc/ansible/
    |-- ansible-playbook
    |   |-- nfs_file
    |   |   |-- nfs_client
    |   |   `-- nfs_server
    |   |-- rsync_file
    |   |   `-- rsyncd.conf
    |   `-- rsync_server.yaml
    |-- ansible.cfg
    |-- hosts
    `-- roles
    
  2. 配置主机清单

    [root@m01 ~]# vim /etc/ansible/hosts
    [nfs:children]
    nfs_server
    nfs_client
    
    [nfs_server]
    172.16.1.31
    
    [nfs_client]
    172.16.1.7
    
  3. 编写ansible剧本

    [root@m01 ~]# vim /etc/ansible/ansible-playbook/nfs-server.yaml
    - hosts: nfs
      tasks:
        - name: 01-install nfs
          yum:
            name: ['nfs-utils' , 'rpcbind']
    
    
    - hosts: nfs_server
      vars:
        Data_dir: /data
      tasks:
    - hosts: nfs
      tasks:
        - name: 01-install nfs
          yum:
            name: ['nfs-utils' , 'rpcbind']
    
    
    - hosts: nfs_server
      vars:
        Data_dir: /data
      tasks:
        - name: 01-copy nfs conf file
          copy: src=/etc/ansible/ansible-playbook/nfs_file/nfs_server/exports dest=/etc/
        - name: 02-create data dir
          file: path={{ Data_dir }} state=directory owner=nfsnobody group=nfsnobody
          notify: restart nfs server
        - name: 03-start server
          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.1.31:{{ Data_dir }} path=/mnt fstype=nfs state=mounted
        - name: 02-check
          shell: df -h|grep {{ Data_dir }}
          register: mount_info
        - name: display mount_info
          debug: msg={{ mount_info.stdout_lines }}
    
  4. 测试执行剧本

    [root@m01 ~]# ansible-playbook --syntax-check /etc/ansible/ansible-playbook/nfs-server.yaml
    [root@m01 ~]# ansible-playbook -C /etc/ansible/ansible-playbook/nfs-server.yaml
    [root@m01 ~]# ansible-playbook  /etc/ansible/ansible-playbook/nfs-server.yaml
    

roles部署NFS服务

部署NFS服务端

  1. 编写tasks目录中main.yml

    [root@m01 roles]# cat nfs-server/tasks/main.yml 
    - name: 01-copy nfs conf file 
      copy: src=exports dest=/etc/
    - name: 02-create data dir
      file: path={{ Data_dir }} state=directory owner=nfsnobody group=nfsnobody
      notify: restart nfs server
    - name: 03-start server
      service: name={{ item }} state=started enabled=yes
      with_items: 
        - rpcbind
        - nfs
    
  2. 编写vars目录中main.yml

    [root@m01 roles]# cat nfs-server/vars/main.yml 
    Data_dir: /data
    
  3. 编写files目录中nfs配置文件

    [root@m01 roles]# vim nfs-server/files/exports 
    /data	172.16.1.0/24(rw,sync)
    
  4. 编写handlers目录中main.yml

    [root@m01 roles]# vim nfs-server/handlers/main.yml 
    - name: restart nfs server
      service: name=nfs state=restarted
    

部署NFS客户端

  1. 编写tasks目录中main.yml
    [root@m01 roles]# vim nfs-client/tasks/main.yml
    - name: 01-mount
      mount: src=172.16.1.31:{{ Data_dir }} path=/mnt fstype=nfs state=mounted
    - name: 02-check
      shell: df -h|grep {{ Data_dir }}
      register: mount_info
    - name: display mount_info
      debug: msg={{ mount_info.stdout_lines }}
    
  2. 编写vars目录中main.yml
    [root@m01 roles]# echo "Data_dir: /data" > nfs-client/vars/main.yml
    

编写主剧本文件

[root@m01 roles]# vim site.yml 
- hosts: nfs_server
  gather_facts: no
  roles:
    - nfs-server

- hosts: nfs_client
  gather_facts: no
  roles:
    - nfs-client

测试运行剧本文件

[root@m01 roles]# ansible-playbook --syntax-check site.yml

playbook: site.yml
[root@m01 roles]# ansible-playbook -C site.yml

[root@m01 roles]# ansible-playbook site.yml

一键化部署rsync服务

ad-hoc部署rsync服务

服务端部署

  1. 确认安装软件
    ansible 172.16.1.41 -m yum -a “name=rsync state=installed”
  2. 分发配置文件
    ansible 172.16.1.41 -m copy -a “src=/etc/ansible/ansible-playbook/rsync_file/rsyncd.conf dest=/etc/”
  3. 创建虚拟用户
    ansible 172.16.1.41 -m user -a “name=rsync create_home=no shell=/sbin/nologin”
  4. 创建密码文件
    ansible 172.16.1.41 -m copy -a “content=‘rsync_backup:redhat’ dest=/etc/rsync.password mode=600”
  5. 创建备份目录
    ansible 172.16.1.41 -m file -a “dest=/backup state=directory owner=rsync group=rsync”
  6. 启动服务程序
    ansible 172.16.1.41 -m service -a “name=rsyncd state=started enabled=yes”

客户端部署

  1. 确认安装软件
    ansible 172.16.1.31,172.16.1.7 -m yum -a “name=rsync state=installed”
  2. 创建密码文件
    ansible 172.16.1.31,172.16.1.7 -m copy -a “content=‘redhat’ dest=/etc/rsync.password mode=600”
  3. 测试服务
    ansible 172.16.1.31,172.16.1.7 -m file -a “dest=/tmp/test.txt state=touch”
    ansible 172.16.1.31,172.16.1.7 -m shell -a "rsync -avz /tmp/test.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

playbook部署rsync服务

  1. 准备目录结构

    [root@m01 ansible-playbook]# tree
    |-- rsync_file
    |   `-- rsyncd.conf
    `-- rsync_server.yaml
    
  2. 配置主机清单

    [root@m01 ansible-playbook]# vim /etc/ansible/hosts 
    [rsync:children]
    rsync_server
    rsync_client
    
    [rsync_server]
    172.16.1.41
    
    [rsync_client]
    172.16.1.31
    172.16.1.7
    
  3. 编写剧本文件

    [root@m01 ansible-playbook]# vim rsync_server.yaml 
    - hosts: rsync
      remote_user: root
      tasks:
        - name: 01-install rsync
          yum: name=rsync state=installed
    
    - hosts: rsync_server
      remote_user: root
      vars:
        Backup_dir: /backup
      tasks:
        - name: 01-push rsyncd.conf
          copy: src=./rsync_file/rsyncd.conf dest=/etc/
          notify: restart rsync service
        - name: 02-create user
          user: name=rsync create_home=no shell=/sbin/nologin
        - name: 03-create backup directory
          file: dest={{ Backup_dir }} state=directory owner=rsync group=rsync
        - name: 04-create password file
          copy: content=rsync_backup:redhat dest=/etc/rsync.password mode=600
        - name: 05-start rsync service
          service: name=rsyncd state=started enabled=yes
      
      handlers: 
        - name: restart rsync service
          service: name=rsyncd state=restarted
      
    
    - hosts: rsync_client
      remote_user: root
      vars:
        Rsync_Port: 874
      tasks:
        - name: 01-create password file
          copy: content=redhat dest=/etc/rsync.password mode=600
        - name: 02-create test file
          file: dest=/tmp/test.txt state=touch
        - name: 03-test
          shell: rsync -avz --port={{ Rsync_Port }} /tmp/test.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
    ~                                                                                    
    
  4. 测试执行剧本

    [root@m01 ansible-playbook]# ansible-playbook --syntax-check rsync_server.yaml
    
    playbook: rsync_server.yaml
    [[root@m01 ansible-playbook]# ansible-playbook -C rsync_server.yaml
    
    [root@m01 ansible-playbook]# ansible-playbook rsync_server.yaml
    

roles部署rsync服务

部署rsync服务端

  1. 编写tasks目录中main.yml

    [root@m01 roles]# vim rsync-server/tasks/main.yml
    
    - name: 01-install rsync
      yum: name=rsync state=installed 
    - name: 02-push rsyncd.conf
      template: src=rsyncd.conf dest=/etc/
    - name: 03-create user
      user: name=rsync create_home=no shell=/sbin/nologin
    - name: 04-create backup directory
      file: dest={{ Backup_dir }} state=directory owner=rsync group=rsync
    - name: 05-create password file
      copy: content=rsync_backup:redhat dest=/etc/rsync.password mode=600
    - name: 06-start rsync service
      service: name=rsyncd state=started enabled=yes
    
  2. 编写vars目录中main.yml

    [root@m01 roles]# vim rsync-server/vars/main.yml
    
    [root@m01 roles]# cat rsync-server/vars/main.yml
    Backup_dir: /backup
    Rsync_Port: 874
    
  3. 编写templates目录中rsync配置文件

    [root@m01 roles]# vim rsync-server/templates/rsyncd.conf
    ...
    port = {{ Rsync_Port }}
    ...
    
  4. 编写handlers目录中main.yml

    [root@m01 roles]# vim rsync-server/handlers/main.yml
    [root@m01 roles]# cat rsync-server/handlers/main.yml
    - name: restart rsync service 
      service: name=rsyncd state=restarted
    

部署rsync客户端

  1. 编写tasks目录中main.yml
    [root@m01 roles]# vim rsync-client/tasks/main.yml
    
    - name: 01-create password file
      copy: content=redhat dest=/etc/rsync.password mode=600
    - name: 02-create test file
      file: dest=/tmp/test.txt state=touch
    - name: 03-test
      shell: rsync -avz --port={{ Rsync_Port }} /tmp/test.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
    
  2. 编写vars目录中main.yml
    [root@m01 roles]# vim rsync-client/vars/main.yml
    [root@m01 roles]# cat rsync-client/vars/main.yml
    Rsync_Port: 874
    

编写主剧本文件

[root@m01 roles]# vim site.yml
- hosts: rsync_server
  gather_facts: no
  roles:
    - rsync-server

- hosts: rsync_client
  gather_facts: no
  roles:
    - rsync-client

测试执行主剧本

[root@m01 roles]# ansible-playbook --syntax-check site.yml 
[root@m01 roles]# ansible-playbook -C site.yml
[root@m01 roles]# ansible-playbook site.yml

一键化部署sersync

ad-hoc部署sersync服务

服务端部署(rsync守护进程)

  1. 确认安装软件
    ansible 172.16.1.41 -m yum -a “name=rsync state=installed”
  2. 分发配置文件
    ansible 172.16.1.41 -m copy -a “src=/etc/ansible/ansible-playbook/rsync_file/rsyncd.conf dest=/etc/”
  3. 创建虚拟用户
    ansible 172.16.1.41 -m user -a “name=rsync create_home=no shell=/sbin/nologin”
  4. 创建密码文件
    ansible 172.16.1.41 -m copy -a “content=‘rsync_backup:redhat’ dest=/etc/rsync.password mode=600”
  5. 创建备份目录
    ansible 172.16.1.41 -m file -a “dest=/backup state=directory owner=rsync group=rsync”
  6. 启动服务程序
    ansible 172.16.1.41 -m service -a “name=rsyncd state=started enabled=yes”

客户端部署(rsync+inotiy监控服务+sersync实时同步服务)

  1. 确认安装rsync软件
    ansible 172.16.1.31,172.16.1.7 -m yum -a “name=rsync state=installed”
  2. 确认安装inotify软件
    ansible 172.16.1.31,172.16.1.7 -m yum -a “name=inotify-tools state=installed”
  3. 创建rsync密码文件
    ansible 172.16.1.31,172.16.1.7 -m copy -a “content=‘redhat’ dest=/etc/rsync.password mode=600”
  4. 分发sersync安装包
    ansible 172.16.1.31,172.16.1.7 -m copy -a “src=/etc/ansible/ansible-playbook/sersync_file/sersync.tar.gz dest=/usr/local/”
  5. 创建sersync目录
    ansible 172.16.1.31,172.16.1.7 -m file -a “dest=/usr/local/sersync state=directory”
  6. 解压sersync包并将其内容移动到sersync目录
    ansible 172.16.1.31,172.16.1.7 -m shell -a “cd /usr/local && tar xf sersync.tar.gz && mv GNU-Linux-x86/* sersync”
  7. 分发confxml.xml
    ansible 172.16.1.31,172.16.1.7 -m copy -a “src=/etc/ansible/ansible-playbook/sersync_file/confxml.xml dest=/usr/local/sersync/confxml.xml”
  8. 启动sersync服务
    ansible 172.16.1.31,172.16.1.7 -m shell -a “/usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml”

playbook部署sersync

[root@m01 ansible-playbook]# vim sersync.yaml 

- hosts: rsync_server
  remote_user: root
  vars:
    Backup_dir: /backup
  tasks:
    - name: 01-install rsync
      yum: name=rsync state=installed
    - name: 02-push rsyncd.conf
      copy: src=./rsync_file/rsyncd.conf dest=/etc/
      notify: restart rsync service
    - name: 03-create user
      user: name=rsync create_home=no shell=/sbin/nologin
    - name: 05-create password file
      copy: content=rsync_backup:redhat dest=/etc/rsync.password mode=600
    - name: 06-start rsync service
      service: name=rsyncd state=started enabled=yes

  handlers:
    - name: restart rsync service
      service: name=rsyncd state=restarted


- hosts: rsync_client
  remote_user: root
  tasks:
    - name: 01-install soft
      yum:
        name: ['rsync','inotify-tools']
    - name: 02-create rsync password file
      copy: content=redhat dest=/etc/rsync.password mode=600
    - name: 03-push sersync.tar.gz
      copy: src=/etc/ansible/ansible-playbook/sersync_file/sersync.tar.gz dest=/usr/local/
    - name: create sersync dir
      file: dest=/usr/local/sersync state=directory
    - name: uncompress and mv
      shell: cd /usr/local && tar xf sersync.tar.gz && mv GNU-Linux-x86/* sersync
    - name: push confxml.xml
      copy: src=/etc/ansible/ansible-playbook/sersync_file/confxml.xml dest=/usr/local/sersync/confxml.xml
      notify: restart sersync service
    - name: start sersync service
      shell: /usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml

  handlers:
    - name: restart sersync service
      shell: /usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml

roles部署sersync

服务端部署

  1. 编写tasks目录中main.yml

    [root@m01 roles]# vim rsync-server/tasks/main.yml
    
    - name: 01-install rsync
      yum: name=rsync state=installed 
    - name: 02-push rsyncd.conf
      template: src=rsyncd.conf dest=/etc/
    - name: 03-create user
      user: name=rsync create_home=no shell=/sbin/nologin
    - name: 04-create backup directory
      file: dest={{ Backup_dir }} state=directory owner=rsync group=rsync
    - name: 05-create password file
      copy: content=rsync_backup:redhat dest=/etc/rsync.password mode=600
    - name: 06-start rsync service
      service: name=rsyncd state=started enabled=yes
    
  2. 编写vars目录中main.yml

    [root@m01 roles]# vim rsync-server/vars/main.yml
    
    [root@m01 roles]# cat rsync-server/vars/main.yml
    Backup_dir: /backup
    Rsync_Port: 874
    
  3. 编写templates目录中rsync配置文件

    [root@m01 roles]# vim rsync-server/templates/rsyncd.conf
    ...
    port = {{ Rsync_Port }}
    ...
    
  4. 编写handlers目录中main.yml

    [root@m01 roles]# vim rsync-server/handlers/main.yml
    - name: restart rsync service 
      service: name=rsyncd state=restarted
    

客户端部署

  1. 编写tasks目录中main.yml

    [root@m01 roles]# vim rsync-client/tasks/main.yml
    - name: 01-install soft
      yum:
        name: ['rsync','inotify-tools'] 
    - name: 02-create rsync password file
      copy: content=redhat dest=/etc/rsync.password mode=600
    - name: 03-push sersync.tar.gz
      copy: src=/etc/ansible/ansible-playbook/sersync_file/sersync.tar.gz dest=/usr/local/
    - name: create sersync dir
      file: dest=/usr/local/sersync state=directory
    - name: uncompress and mv
      shell: cd /usr/local && tar xf sersync.tar.gz && mv GNU-Linux-x86/* sersync
    - name: push confxml.xml
      copy: src=/etc/ansible/ansible-playbook/sersync_file/confxml.xml dest=/usr/local/sersync/confxml.xml
      notify: restart sersync service
    - name: start sersync service
      shell: /usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml
    
  2. 编写handlers目录中main.yml

    [root@m01 roles]# vim rsync-client/handlers/main.yml
    - name: restart sersync service
      shell: /usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml
    

编写主剧本文件

[root@m01 roles]# vim site.yml
- hosts: rsync_server
  gather_facts: no
  roles:
    - rsync-server

- hosts: rsync_client
  gather_facts: no
  roles:
    - rsync-client

测试执行主剧本

[root@m01 roles]# ansible-playbook --syntax-check site.yml 
[root@m01 roles]# ansible-playbook -C site.yml
[root@m01 roles]# ansible-playbook site.yml
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值