A seguir uma série de funcionalidades e novos módulos que vieram nesta nova versão 2.4:
O Ansible agora suporta plenamente o Python 3 bem como o inventário no formato baseado em YAML.
Diretiva order
: Agora é possível modificar a ordem que o Ansible processa os hosts quando dispara as tasks.
- hosts: all
order: sorted
gather_facts: False
tasks:
- debug: var=inventory_hostname
Possíveis valores para a diretiva order
:
inventory: O padrão. A ordem conforme inserção no arquivo de inventário
reverse_inventory: Como o nome já diz, reverte a ordem de inserção do arquivo de inventário.
sorted: Os Hosts são ordenados alfabeticamente pelo nome.
reverse_sorted: Os Hosts são ordenados alfabeticamente invertidos pelo nome.
shuffle: Os Hosts são aleatoriamente ordenados a cada execução.
$ ansible-playbook -i /etc/hosts1 -i /opt/hosts2 play.yml
Diretamente com IPs:
$ ansible -i ‘10.10.2.6, 10.10.2.4’ -m ping all
Com nomes DNS:
$ ansible -i ‘host1.example.com, host2’ -m user -a ‘name=me state=absent’ all
Para o localhost:
$ ansible-playbook -i ‘localhost,’ play.yml -c local
Modo avançado:
$ ansible -i ‘host[1:10],’ -m ping
all: # a chave deve ser única, somente um 'hosts' por grupo
hosts:
test1:
test2:
var1: value1
vars:
group_var1: value2
children: # ordem da chave não é importante, indentação sim
other_group:
children:
group_x:
hosts:
test5
vars:
g2_var2: value3
hosts:
test4:
ansible_host: 127.0.0.1
last_group:
hosts:
test1 # mesmo host como acima, membro adicional de um grupo
vars:
last_var: MYVALUE
Método runas
está disponível para ambientes Windows. Agora o Ansible trabalha com todos os tipos de autenticação e irá auto elevar sob UAC (controle da conta de usuário) se WinRM for usado como privilégio “Atuar como parte do sistema operacional”.
--become-method=BECOME_METHOD
privilege escalation method to use
(default=sudo),
valid choices: [ sudo | su | pbrun | pfexec
| doas | dzdo | ksu | runas | pmrun ]
- name: "a value from Hiera 'DB'"
debug: msg={{ lookup('hiera', 'foo') }}
security
para limitar a atualização somente dos pacotes de segurança:
- name: upgrade all packages
yum:
name: '*'
state: latest
security: yes
- name: send configuration commands to IOS
telnet:
user: cisco
password: cisco
login_prompt: "Username: "
prompts:
- "[>|#]"
commands:
- terminal length 0
- configure terminal
- hostname ios01
- name: Remove all children from the website element (option 1)
xml:
path: /foo/bar.xml
xpath: /business/website/*
state: absent
# Set eth1 mtu configuration value to 8000
- interfaces_file:
dest: /etc/network/interfaces.d/eth1.cfg
iface: eth1
option: mtu
value: 8000
backup: yes
state: present
register: eth1_cfg
- name: ensure the group Cow does't exist using the Distinguished Name
win_domain_group:
name: CN=Cow,OU=groups,DC=ansible,DC=local
state: absent
- name: Ensure user bob is present with address information
win_domain_user:
name: bob
firstname: Bob
surname: Smith
company: BobCo
password: B0bP4ssw0rd
state: present
groups:
- Domain Users
street: 123 4th St.
city: Sometown
state_province: IN
postal_code: 12345
country: US
# Playbook example
- name: Extract zip file
win_dsc:
resource_name: archive
ensure: Present
path: "C:\\Temp\\zipfile.zip"
destination: "C:\\Temp\\Temp2"
- name: Invoke DSC with check mode
win_dsc:
resource_name: windowsfeature
name: telnet-client
- name: install hotfix without validating the KB and Identifier
win_hotfix:
source: C:\temp\windows8.1-kb3172729-x64_e8003822a7ef4705cbb65623b72fd3cec73fe222.msu
state: present
register: hotfix_install
- win_reboot:
when: hotfix_install.reboot_required
O Ansible Vault agora permite senhas diferentes para os arquivos criptografados:
$ ansible-playbook --vault-id dev-password --vault-id @prompt site.yml
O Ansible 2.4 também incluiu novos updates especificamente para automação de rede, incluindo ‘Declaração de Intenção’ (declarative intent). Veja mais sobre.
O número de plataformas de redes suportadas cresceu para 33 e o total de módulos só de rede agora é 463 (36% dos módulos Ansible).
Segue o link com os cuidados que devem ser tomados na atualização do ambiente (em Inglês):