ansible playbook, usuário diferente por sistema operacional

4

Estou começando a jogar com o ansible . Eu tenho um monte de servidores (Ubuntu, Centos, Red Hat ...).

Os servidores têm usuários diferentes. Para os servidores Ubuntu eu uso o usuário sudo, para o resto eu uso usuário root.

Como eu poderia especificar o usuário pelo sistema operacional?

    
por Andrés Sánchez García 31.05.2013 / 10:47

3 respostas

4

Os documentos mencionam a execução de tarefas apenas para determinados sistemas operacionais. Você poderia ajustar isso para definir o usuário para cada sistema operacional. Por exemplo

- hosts: CentOS
  user: centos
  tasks:
  - # some tasks

- hosts: Debian
  user: default
  - # some tasks

- hosts: Ubuntu
  user: ubuntu
  - # some tasks

Na fonte, parece que esses sistemas operacionais são suportados, embora eu não tenha confirmado isso na documentação oficial no momento da redação deste artigo.

  • RedHat
  • Fedora
  • CentOS
  • Científico
  • SLC
  • Ascendos
  • CloudLinux
  • PSBM
  • OracleLinux
  • OVS
  • OEL
  • Amazon
  • XenServer
  • Ubuntu
  • Debian
  • SLES
  • SLED
  • OpenSuSE
  • SuSE
  • Gentoo
  • ArchLinux
  • Mandriva
  • Mandrake
  • Solaris
  • Nexenta
  • OmniOS
  • OpenIndiana
  • SmartOS

Você também pode ter variáveis por sistema operacional definidas em vars/<os-name>.yaml arquivos e usá-las condicionalmente usando a variável ansible_os_family template conforme mostrado here .

    
por 12.08.2013 / 02:56
3

O CentOS e assim por diante não é automático. É um grupo mais ansiável desde variável. Aqui está um exemplo completo, lidando com o CentOS mais a VM ou não a VM.

---
- name: RG Ansible for ALL
  hosts: all
  tasks:
  - name: group by OS versions
    group_by: key="{{ ansible_distribution }}_{{ ansible_distribution_version.split('.')[0] }}"
  - name: group by physical/virtual machine
    group_by: key="{{ ansible_virtualization_role }}"
...
- name: RG Ansible for CentOS 6
  hosts: CentOS_6
  gather_facts: false
  tasks:
...
- name: RG Ansible for CentOS 5
  hosts: CentOS_5
  gather_facts: false
  tasks:

- name: RG Ansible for VM
  hosts: guest
  gather_facts: false
  tasks:
  - service: name=acpid state=stopped enabled=no
  - service: name=cpuspeed state=stopped enabled=no
    
por 23.10.2013 / 17:54
2

Especifique o usuário na linha de comando :

ansible-playbook foo.yml --extra-vars "user=bar"

-----
- user: '{{ user }}'

Especifique um diferente user por grupo de host em /etc/ansible/hosts

[targets]

localhost              ansible_connection=local
other1.example.com     ansible_connection=ssh        ansible_ssh_user=mpdehaan
other2.example.com     ansible_connection=ssh        ansible_ssh_user=mdehaan
    
por 31.05.2013 / 11:03

Tags