ansible_manager_roles
This is an old revision of the document!
Gerenciar Roles no Ansible
Crie uma Role de nome conf_base
$ sudo ansible-galaxy role init conf_base
- Role conf_base was created successfully
$ sudo ansible-galaxy role list # /etc/ansible/roles - conf_base, (unknown version)
$ tree conf_base/ conf_base/ ├── README.md ├── defaults │ └── main.yml ├── files ├── handlers │ └── main.yml ├── meta │ └── main.yml ├── tasks │ └── main.yml ├── templates ├── tests │ ├── inventory │ └── test.yml └── vars └── main.yml 8 directories, 8 files
$ sudo cp -r ~/roles/conf-base/* conf_base/ $ sudo cp -r ~/roles/conf-base/*.* conf_base/
Conteúdo do diretório tasks:
- main.yml: Arquivo principal responsável em carregar os arquivos hosts.yml, packages.yml e users.yml.
- hosts.yml: Arquivo responsável pela padronização do arquivo /etc/hosts;
- packages.yml: Arquivo responsável pela instalação de pacotes base;
- packages.yml: Arquivo responsável pela padronização de usuários.
Conteúdo do diretório meta:
$ cat ~/roles/conf-base/meta/.galaxy_install_info version: 1.0.0
$ cat ~/roles/conf-base/meta/main.yml --- galaxy_info: author: 4Linux DevOps description: Configuracao Base de usuarios, pacotes e hosts company: 4Linux license: GPLv3 min_ansible_version: 2.9 platforms: - name: Ubuntu versions: - focal - name: EL versions: - 8 galaxy_tags: - users - packages - hosts dependencies: []
Conteúdo do diretório tasks:
$ cat ~/roles/conf-base/tasks/main.yml --- - name: Padroniza arquivo /etc/hosts import_tasks: hosts.yml - name: Instala pacotes base import_tasks: packages.yml - name: Adiciona usuarios HelpDesk e DevOps import_tasks: users.yml
$ cat ~/roles/conf-base/tasks/users.yml --- - name: Adiciona usuario HelpDesk user: name: helpdesk state: present shell: /bin/bash password: $1$Vf3jj9E3$DTibRWkRvP8wJqcDLJNzT1 tags: users - name: Adiciona usuario DevOps user: name: devops state: present shell: /bin/bash password: $1$Vf3jj9E3$DTibRWkRvP8wJqcDLJNzT1 tags: users
$ cat ~/roles/conf-base/tasks/hosts.yml --- - name: Testando entradas no arquivo /etc/hosts lineinfile: path: /etc/hosts line: "10.240.0.200 ansible-server.juntotelecom.com.br ansible-server" register: etc_hosts_result - name: Limpa o arquivo /etc/hosts when: etc_hosts_result is changed shell: echo '' > /etc/hosts register: etc_hosts_clear tags: hosts - name: Configuracao do arquivo /etc/hosts when: etc_hosts_clear is succeeded lineinfile: path: /etc/hosts line: "{{ item.ip }} {{ item.fqdn }} {{ item.alias }}" with_items: - { ip: '127.0.0.1', fqdn: 'localhost.localdomain', alias: 'localhost' } - { ip: '10.240.0.200', fqdn: 'ansible-server.juntotelecom.com.br', alias: 'ansible-server' } - { ip: '10.240.0.201', fqdn: 'ub-vm-01.juntotelecom.com.br', alias: 'ub-vm-01' } - { ip: '10.240.0.202', fqdn: 'ol-vm-02.juntotelecom.com.br', alias: 'ol-vm-02' } - { ip: '10.240.0.203', fqdn: 'de-vm-03.juntotelecom.com.br', alias: 'de-vm-03' } tags: hosts
$ cat ~/roles/conf-base/tasks/packages.yml --- - name: Instala pacotes base no Debian/Ubuntu when: ansible_os_family == "Debian" apt: name: "{{ packages_debian }}" state: present tags: packages - name: Instala pacotes base no RedHat/CentOS 7 when: - ansible_os_family == "RedHat" - ansible_distribution_major_version == "7" yum: name: "{{ packages_redhat }}" state: present tags: packages - name: Instala pacotes base no RedHat/CentOS 8 when: - ansible_os_family == "RedHat" - ansible_distribution_major_version == "8" dnf: name: "{{ packages_redhat }}" state: present tags: packages
Conteúdo do diretório vars:
$ cat ~/roles/conf-base/vars/main.yml --- packages_debian: - tzdata - dnsutils - bash-completion - unzip - bzip2 - htop - vim - mlocate - nfs-common packages_redhat: - tzdata - bind-utils - unzip - bzip2 - vim-enhanced - mlocate - htop - nfs-utils
Para finalizar, é preciso criar um arquivo responsável em carregar a Role, e definir em qual máquina ela será aplicada.
$ cat ~/roles/playbooks/conf-base.yml --- - hosts: all roles: - conf-base
$ sudo ansible-playbook --syntax-check ~/roles/playbooks/conf-base.yml playbook: /home/vagrant/roles/playbooks/conf-base.yml
$ sudo ansible-playbook ~/roles/playbooks/conf-base.yml
ansible_manager_roles.1753560543.txt.gz · Last modified: by wikiadm
