Bu şekilde yapmayı seviyorum:
- hosts: all
remote_user: root
gather_facts: no
tasks:
- name: Check ansible user
command: ssh -q -o BatchMode=yes -o ConnectTimeout=3 ansible@{{ inventory_hostname }} "echo OK"
delegate_to: 127.0.0.1
changed_when: false
failed_when: false
register: check_ansible_user
- block:
- name: Create Ansible user
user:
name: ansible
comment: "Ansible user"
password: $6$u3GdHI6FzXL01U9q$LENkJYHcA/NbnXAoJ1jzj.n3a7X6W35rj2TU1kSx4cDtgOEV9S6UboZ4BQ414UDjVvpaQhTt8sXVtkPvOuNt.0
shell: /bin/bash
- name: Add authorized key
authorized_key:
user: ansible
key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
exclusive: yes
- name: Allow sudo for ansible
copy:
content: ansible ALL=(ALL) ALL
dest: /etc/sudoers.d/ansible
mode: 0600
when: check_ansible_user | failed
Uzaktaki ana bilgisayara, sorumlu kullanıcımla bağlanmaya çalışıyorum. Bu mümkün değilse (ilk çalıştırmada), kök olarak bağlanır ve authorized_keys
dosya ve sudo
haklarıyla birlikte ansible kullanıcıyı yaratırım .
Sonraki çalışmalarda, sorumlu kullanıcı olarak bağlanmak işe yarar, böylece görev bloğu atlanabilir.
Uzak ana bilgisayar önyüklendikten sonra, ansible kullanıcıyla devam edebilir ve become
:
- hosts: all
remote_user: ansible
become: yes
roles:
- ...