Ansible - Utilizando usuários diferentes para efetuar login ao trabalhar em um inventário dinâmico

1

Estou tentando instalar um pacote em uma lista de servidores, eles têm uma tag em comum, então estou usando essa tag, já que todos eles têm a tag Environment definida como Dev. Mas o problema é que alguns deles têm sistema operacional como o Amazon Linux (o login funciona com o ec2-user), alguns deles têm o Centos (o Login funciona com o usuário do CentOS) e outros são o Ubuntu.

Eu tenho uma opção para executar uma tarefa específica usando remote_user para aquela tarefa em particular, mas quando eu dou user: centos, o login funciona apenas nos servidores onde o sistema operacional / usuário é centos e falha em outros.

Eu estou procurando uma solução onde eu possa usar uma cláusula OR junto com o usuário, como se um usuário não logar deve tentar entrar com o segundo usuário.

    
por Lokesh Arora 18.09.2018 / 08:52

1 resposta

1

A maneira mais limpa seria criar três arquivos de tarefas separados para fazer o que você quiser e incluir aquele para a distribuição específica da máquina que está executando o playbook. Você pode verificar isso com a condição ansible_distribution . Por exemplo, adicione isso ao seu manual:

- include_tasks: install_amazon.yml
  when: ansible_distribution == 'Amazon'

- include_tasks: install_centos.yml
  when: ansible_distribution == 'CentOS'

- include_tasks: install_ubuntu.yml
  when: ansible_distribution == 'Ubuntu'

Em seguida, no arquivo de tarefas especificado, você pode especificar o parâmetro remote_user . Por exemplo, seu arquivo install_centos.yml pode ter esta aparência:

---
- name: Install package as CentOS user
  yum:
    name: foo
    state: present
  remote_user: centos

Isso instalaria o pacote foo como usuário centos . Você pode fazer o mesmo para os outros arquivos de tarefas.

    
por 18.09.2018 / 10:28