Notas do treinamento de ansible

Basico sobre Ansible


NOTAS: sobre ansible

Arquivo de configuraçao

/etc/ansible/ansible.cfg
vai usar o arquivo caso existe no diretorio padrão
ou no diretorio home 

Facts:

coleta informações sobre o host alvo, sempre executado antes de qualquer outro modulo ou comando para desativar add no playbook gather_facts: false

 1$ ansible localhost -m setup
 2localhost | success >> {
 3  "ansible_facts": {
 4      "ansible_default_ipv4": {
 5          "address": "192.168.1.37",
 6          "alias": "wlan0",
 7          "gateway": "192.168.1.1",
 8          "interface": "wlan0",
 9          "macaddress": "c4:85:08:3b:a9:16",
10          "mtu": 1500,
11          "netmask": "255.255.255.0",
12          "network": "192.168.1.0",
13          "type": "ether"
14      },

Plays:

 conjunto de tarefas que são excutadas e hosts remotos 

Playbooks:

 Arquivo que contem uma ou mais tasks

Comandos

 1    $ ansible --version
 2    $ ansible all --list-hosts
 3
 4
 5    #checkar sintaxe do yml file
 6    $ ansible-playbook --syntax-check install_apache.yml
 7
 8    #rodando playbook
 9    $ ansible-playbook install_apache.yml
10
11
12
13
14    # check all my inventory hosts are ready to be
15    # managed by Ansible
16    $ ansible all -m ping
17    # The ping module differs from a traditional networking ping and 
18    #tests whether Ansible can make an ssh connection to the target 
19    #hosts. It is common to use this to test connectivity and as an     #early step in debugging connection issues.
20
21
22
23    # collect and display the discovered facts
24    # for the localhost
25    $ ansible localhost -m setup
26
27    # run the uptime command on all hosts in the
28    # web group
29    $ ansible web -m command -a "uptime" -o
30    # a opção -o retorna o comando em uma unica linha por host
31    $ ansible web -m service -a "name=httpd state=stopped" -b
32
33    $ ansible all -m command -a "cat /etc/os-release"

Variaveis:

Usada em playbooks para mapear valores para serem usados mais de uma 
vez dentro do codigo 
 1---
 2  - name: Install Apache playbook
 3    hosts: web
 4    become: yes
 5    gather_facts: false
 6    vars:
 7    #variavel 1 com uma lista e 2 valores httpd e mod_wsgi
 8      httpd_packages:
 9        - httpd
10        - mod_wsgi
11    #variavel 2 com a msg "This is a test message"
12      apache_test_message: This is a test message
13      tasks:
14       - name: install httpd packages
15         yum:
16        # pegando a variavel httpd_packages e passando no 
17        #loop dentro de item 
18          name: "{{ item }}"
19          state: present
20         loop: "{{ httpd_packages }}"
21         notify: restart apache service

Templates:

Ansible tem a feature de JINJA2 template que permite dinamicamente:
    - setar ou modificar play vars
    - aplicar logica condicional
    - gerar arquivos de configuração baseados em vars

Roles:

permite manter e compartilhar de forma mais facil os playbooks
organizando eles em diretorios

Exemplo de roles:

 1site.yml
 2roles/
 3   common/
 4     files/
 5     templates/
 6     tasks/
 7     handlers/
 8     vars/
 9     defaults/
10     meta/
11   apache/
12     files/
13     templates/
14     tasks/
15     handlers/
16     vars/
17     defaults/

Ansible galaxy

 site de compartilhamento de ansible roles 

Exemplo de playbook

 1---
 2- name: install and start apache
 3  hosts: web
 4  become: yes
 5  vars:
 6    webserver: httpd
 7
 8  tasks:
 9  - name: "{{ webserver }} package is present"
10    yum:
11      name: "{{ webserver }}"
12      state: latest
13    notify: restart webserver
14
15  - name: latest index.html file is present
16    copy:
17      src: files/index.html
18      dest: /var/www/html/
19handlers:
20- name: restart webserver
21  service:
22    name: "{{ webserver}}"
23    state: restarted 
24
25
26
27

Posts in this Series