====== Variáveis no Ansible ====== ==== Tipos de variáveis ==== * **vars**: Declara um ou mais valores em uma variável, através da diretiva ''vars''; * **vars_files:** Declara um ou mais valores em um arquivo de variável, através da diretiva ''vars_files''; * **register:** Declara uma variável a partir de uma tarefa concluída; * **--extra-vars**: Declara um ou mais valores em uma variável, através da flag ''--extra-vars'' na linha de comando; * **fatos:** Utiliza informações do sistema chamada de fatos como valores de variáveis. ==== Diretiva vars ==== --- - hosts: local vars: - usuario: linus tasks: - name: Adicionar usuario user: name={{ usuario }} state=present shell=/bin/bash password=$1$i5CwO/2J$JIaH55NqG10CDpYLqLAZf/ $ sudo ansible-playbook vars-adduser.yml ==== Diretiva vars_files ==== --- - hosts: local vars_files: - vars.yml tasks: - name: Instala pacotes atraves de variaveis apt: name={{ pacotes }} state=present update_cache=true pacotes: - elinks - wget - curl - htop - vim $ sudo ansible-playbook --syntax-check vars_files-pacotes.yml $ sudo ansible-playbook vars_files-pacotes.yml ==== Diretiva register ==== --- - hosts: local tasks: - name: Instala pacote NTP apt: name=ntp state=present update_cache=true register: ntp_installed - name: Define o arquivo de configuracao do servidor NTP when: ntp_installed is succeeded copy: src=ntp.conf dest=/etc/ntp.conf owner=root group=root mode=0644 driftfile /var/lib/ntp/ntp.drift leapfile /usr/share/zoneinfo/leap-seconds.list statistics loopstats peerstats clockstats filegen loopstats file loopstats type day enable filegen peerstats file peerstats type day enable filegen clockstats file clockstats type day enable pool a.ntp.br iburst pool b.ntp.br iburst pool c.ntp.br iburst pool d.ntp.br iburst restrict -4 default kod notrap nomodify nopeer noquery limited restrict -6 default kod notrap nomodify nopeer noquery limited restrict 172.16.0.0 mask 255.255.0.0 restrict ::1 restrict source notrap nomodify #restrict source notrap nomodify noquery ==== Flag --extra-vars ==== --- - hosts: local tasks: - name: Adicionar estrutura de diretórios atraves de variavel file: dest={{ diretorios }} state=directory recurse=yes owner=root group=root mode=775 $ sudo ansible-playbook --syntax-check create-dir.yml $ sudo ansible-playbook --extra-vars "diretorios=/tmp/var/www/html/intranet" create-dir.yml ==== Fatos ==== --- - hosts: webservers tasks: - name: Instala Apache no Debian/Ubuntu when: ansible_os_family == "Debian" apt: name=apache2 state=present update_cache=true register: apache2_installed - name: Instala Apache no CentOS when: ansible_os_family == "RedHat" yum: name=httpd state=present register: httpd_installed $ sudo ansible-playbook --syntax-check fatos-apache.yml $ sudo ansible-playbook fatos-apache.yml $ sudo ansible webserver1 -m shell -a 'dpkg -l | grep apache2' $ sudo ansible webserver2 -m shell -a 'rpm -qa | grep httpd'