Cài đặt nfs trên Ubuntu bằng Ansible

Cài đặt nfs trên Ubuntu bằng Ansible

1. Tạo file play book chạy cho nfs server

vi nfs.yml
cat nfs.yml 
---
- hosts: nfs-server
become: true
gather_facts: no
vars:
nfs_shares:
- '/mnt/nfs_read'
- '/mnt/nfs_write'
tasks:
- name: Installing NFS Server Packages
apt:
name: "{{ item }}"
state: "present"
with_items:
- 'nfs-common'
- 'nfs-kernel-server'
- 'rpcbind'

- name: Open ufirewall sudo ufw allow from client_ip to any port nfs
shell: ufw allow from any to any port nfs

- name: Crete share directory
ansible.builtin.file:
path: "{{ item }}"
state: directory
owner: nobody
group: nogroup
loop: "{{ nfs_shares }}"

- name: Copy tệp từ mẫu template/exports.j2 đến /etc/exports
template:
src: template/exports.j2 # Đường dẫn đến mẫu Jinja2
dest: /etc/exports # Đường dẫn đích
owner: root
group: root
mode: "0644"

- name: export folder
shell: exportfs -a

- name: Enable and start nfs-kernel-server
ansible.builtin.systemd_service:
state: started
name: nfs-kernel-server
state: started
enabled: true

- name: restart nfs-server
service:
name: "nfs-kernel-server"
state: "restarted"
enabled: true

Tạo file template template/exports.j2

cat ./template/exports.j2
{% for nfs_share in nfs_shares %}
{{ nfs_share }} 10.1.1.0/24(rw,sync,no_subtree_check)
{% endfor %}

Chạy playbook trên server:

ansible-playbook --limit nfs-server nfs.yml

2. Tạo playbook cho client

- name: Run on nfs client
hosts: nfs-client
gather_facts: no
become: true
vars:
nfs_shares:
- '/mnt/nfs_read'
- '/mnt/nfs_write'
nfs_server_ip: "10.1.1.20"
tasks:
- name: Installing NFS client Packages
apt:
name: "{{ item }}"
state: "present"
with_items:
- 'nfs-common'

- name: Create share directory
ansible.builtin.file:
path: "{{ item }}"
state: directory
owner: nobody
group: nogroup
loop: "{{ nfs_shares }}"

- name: Client mount folder
shell: "mount {{ nfs_server_ip }}:{{ item }} {{ item }}"
loop: "{{ nfs_shares }}"

- name: add fstab
lineinfile:
path: "/etc/fstab"
regexp: "{{ item }}"
line: "{{ nfs_server_ip }}:{{ item }} {{ item }} nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0"
state: present
loop: "{{ nfs_shares }}"

Chạy playbook trên Client:

ansible-playbook --limit nfs-client nfs.yml

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply