Eu quero distribuir diferentes arquivos de configuração dependendo da versão do sistema operacional usando o Ansible.
Gostaria de distinguir a versão do sistema operacional com o fato ansioso ansible_distribution para que eu não precise atribuir manualmente uma versão do sistema operacional.
O problema que tenho é que não sei onde especificar qual versão do arquivo de configuração deve ser usada para uma versão específica do sistema operacional.
Eu gostaria de atribuir essa variável dentro do playbook e não em algum arquivo variável adicional, uma vez que é absolutamente usado apenas dentro deste playbook.
Eu acho que gostaria de algo como:
- ansible_distribution == "Debian"
- vars:
vimrc_file = "vimrc.DEBIAN"
- ansible_distribution == "Ubuntu"
- vars:
vimrc_file = "vimrc.UBUNTU"
mas eu não tenho certeza se o Ansible funciona assim (ou se funciona como se você fosse usá-lo assim)
Atualmente, uso o seguinte, que obviamente é terrível por vários motivos:
---
- hosts: servers,workstations
tasks:
- name: Ensure vim is installed
apt: name=vim state=latest
- shell: echo "vimrc.DEBIAN"
changed_when: false
register: vimrc
- name: "Copy Debian vimrc file"
copy: src=/ansible/files/{{ vimrc.stdout }} dest=/etc/vim/vimrc
when: ansible_distribution == "Debian"
with_items: vimrc.stdout
- shell: echo "vimrc.UBUNTU"
changed_when: false
register: vimrc
- name: "Copy Ubuntu vimrc file"
copy: src=/ansible/files/{{ vimrc.stdout }} dest=/etc/vim/vimrc
when: ansible_distribution == "Ubuntu"
with_items: vimrc.stdout
...
(Eu só estou começando a usar Ansible e ainda estou tentando descobrir se é mesmo a ferramenta certa para o que eu quero fazer, então, por favor, desculpe o meu uso horrível de Ansible)
EDIT : Acabei de perceber que este é um exemplo terrível, já que eu poderia usar apenas
/ansible/files/vimrc.{{ ansible_distribution }}
para a fonte do arquivo.
Como eu atribuiria as variáveis corretas se o arquivo DESTINATION fosse diferente em um SO diferente?