====== Gerenciar Roles no Ansible - NFS Server ======
$ sudo ansible-galaxy role init nfs-server
- Role nfs-server was created successfully
$ sudo ansible-galaxy role list
# /etc/ansible/roles
- conf-base, 1.0.0
- nfs-server, (unknown version)
$ sudo cp -r ~/roles/nfs-server/* nfs-server/
$ sudo cp -r ~/roles/nfs-server/*.* nfs-server/
**Conteúdo do diretório tasks:**
* **main.yml:** Arquivo principal responsável em carregar os arquivos ''install.yml'' e ''configure.yml'';
* **install.yml:** Arquivo responsável pela instalação do NFS;
* **configure.yml:** Arquivo responsável pela configuração do NFS.
$ cat nfs-server/meta/main.yml
---
galaxy_info:
role_name: nfs-server
author: 4Linux DevOps
description: Instalacao e Configuracao do servidor NFS
company: 4Linux
license: GPLv3
min_ansible_version: 2.9
platforms:
- name: Ubuntu
versions:
- focal
- name: EL
versions:
- 8
galaxy_tags:
- nfs
dependencies:
- conf-base
$ cat nfs-server/tasks/main.yml
---
- name: Define instalacao do servidor NFS
import_tasks: install.yml
- name: Define configuracao do servidor NFS
import_tasks: configure.yml
$ cat nfs-server/tasks/configure.yml
---
- name: Inicia o serviço rpcbind
service:
name: rpcbind
state: started
- name: Define o arquivo de configuracao do servidor NFS no Debian/Ubuntu
when: ansible_os_family == "Debian"
copy:
src: exports
dest: /etc/exports
owner: root
group: root
mode: 0644
notify:
- Restart NFS Ubuntu
tags: nfs
- name: Define o arquivo de configuracao do servidor NFS no RedHat/CentOS
when: ansible_os_family == "RedHat"
copy:
src: exports
dest: /etc/exports
owner: root
group: root
mode: 0644
notify:
- Restart NFS CentOS
tags: nfs
- name: Verifica se diretorio /opt/site/admin existe
stat:
path: /opt/site/admin
register: site_directory
- name: Criando diretorio site
when: not site_directory.stat.exists
copy:
src: site/
dest: /opt/site
owner: root
group: root
tags: nfs
$ cat nfs-server/tasks/install.yml
---
- name: Instala servidor NFS no Debian/Ubuntu
when: ansible_os_family == "Debian"
apt:
name: nfs-kernel-server
state: present
update_cache: true
notify:
- Start NFS Ubuntu
tags: nfs
- name: Instala servidor NFS no RedHat/CentOS
when: ansible_os_family == "RedHat"
yum:
name: nfs-utils
state: present
notify:
- Start NFS CentOS
tags: nfs
- name: Inicia e ativa na inicializacao o servico NFS
when: ansible_os_family == "RedHat"
systemd:
name: nfs-server
state: started
enabled: true
tags: nfs
$ cat nfs-server/handlers/main.yml
---
- name: Start NFS Ubuntu
when: ansible_os_family == "Debian"
service:
name: nfs-kernel-server
state: started
- name: Restart NFS Ubuntu
when: ansible_os_family == "Debian"
ansible.builtin.command: "exportfs -va"
- name: Start NFS CentOS
when: ansible_os_family == "RedHat"
service:
name: nfs-server
state: started
- name: Restart NFS CentOS
when: ansible_os_family == "RedHat"
ansible.builtin.command: "exportfs -va"
$ cat nfs-server/files/exports
/opt/site 10.240.0.0/16(rw,no_root_squash,no_subtree_check)
$ cat ~/roles/playbooks/nfs-server.yml
---
- hosts: ol-vm-02
vars:
ansible_python_interpreter: /usr/bin/python3.9
roles:
- nfs-server
$ sudo ansible-playbook --syntax-check ~/roles/playbooks/nfs-server.yml
playbook: /home/vagrant/roles/playbooks/nfs-server.yml
$ sudo ansible-playbook ~/roles/playbooks/nfs-server.yml
PLAY [ol-vm-02] *************************************************************************************************************************************************************************************************
TASK [Gathering Facts] ******************************************************************************************************************************************************************************************
ok: [ol-vm-02]
TASK [conf-base : Testando entradas no arquivo /etc/hosts] ******************************************************************************************************************************************************
ok: [ol-vm-02]
TASK [conf-base : Limpa o arquivo /etc/hosts] *******************************************************************************************************************************************************************
skipping: [ol-vm-02]
TASK [conf-base : Configuracao do arquivo /etc/hosts] ***********************************************************************************************************************************************************
ok: [ol-vm-02] => (item={'ip': '127.0.0.1', 'fqdn': 'localhost.localdomain', 'alias': 'localhost'})
ok: [ol-vm-02] => (item={'ip': '10.240.0.200', 'fqdn': 'ansible-server.juntotelecom.com.br', 'alias': 'ansible-server'})
ok: [ol-vm-02] => (item={'ip': '10.240.0.201', 'fqdn': 'ub-vm-01.juntotelecom.com.br', 'alias': 'ub-vm-01'})
ok: [ol-vm-02] => (item={'ip': '10.240.0.202', 'fqdn': 'ol-vm-02.juntotelecom.com.br', 'alias': 'ol-vm-02'})
ok: [ol-vm-02] => (item={'ip': '10.240.0.203', 'fqdn': 'de-vm-03.juntotelecom.com.br', 'alias': 'de-vm-03'})
TASK [conf-base : Instala pacotes base no Debian/Ubuntu] ********************************************************************************************************************************************************
skipping: [ol-vm-02]
TASK [conf-base : Instala pacotes base no RedHat/CentOS 7] ******************************************************************************************************************************************************
skipping: [ol-vm-02]
TASK [conf-base : Instala pacotes base no RedHat/CentOS 8] ******************************************************************************************************************************************************
skipping: [ol-vm-02]
TASK [conf-base : Adiciona usuario HelpDesk] ********************************************************************************************************************************************************************ok: [ol-vm-02]
TASK [conf-base : Adiciona usuario DevOps] **********************************************************************************************************************************************************************
ok: [ol-vm-02]
TASK [nfs-server : Instala servidor NFS no Debian/Ubuntu] *******************************************************************************************************************************************************
skipping: [ol-vm-02]
TASK [nfs-server : Instala servidor NFS no RedHat/CentOS] *******************************************************************************************************************************************************
changed: [ol-vm-02]
TASK [nfs-server : Inicia e ativa na inicializacao o servico NFS] ***********************************************************************************************************************************************
changed: [ol-vm-02]
TASK [nfs-server : Inicia o serviço rpcbind] ********************************************************************************************************************************************************************
ok: [ol-vm-02]
TASK [nfs-server : Define o arquivo de configuracao do servidor NFS no Debian/Ubuntu] ***************************************************************************************************************************
skipping: [ol-vm-02]
TASK [nfs-server : Define o arquivo de configuracao do servidor NFS no RedHat/CentOS] ***************************************************************************************************************************
changed: [ol-vm-02]
TASK [nfs-server : Verifica se diretorio /opt/site/admin existe] ************************************************************************************************************************************************
ok: [ol-vm-02]
TASK [nfs-server : Criando diretorio site] **********************************************************************************************************************************************************************
changed: [ol-vm-02]
RUNNING HANDLER [nfs-server : Start NFS CentOS] *****************************************************************************************************************************************************************
ok: [ol-vm-02]
RUNNING HANDLER [nfs-server : Restart NFS CentOS] ***************************************************************************************************************************************************************
changed: [ol-vm-02]
PLAY RECAP ******************************************************************************************************************************************************************************************************
ol-vm-02 : ok=13 changed=5 unreachable=0 failed=0 skipped=6 rescued=0 ignored=0
$ sudo ansible ol-vm-02 -m shell -e 'ansible_python_interpreter=/usr/bin/python3.9' -a 'showmount -e'
ol-vm-02 | CHANGED | rc=0 >>
Export list for ol-vm-02:
/opt/site 172.17.0.0/16,172.16.0.0/16