Tôi thích làm theo cách này:
- 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
Tôi cố gắng kết nối với máy chủ từ xa với người dùng ansible của tôi. Nếu điều này là không thể (trong lần chạy đầu tiên), tôi kết nối với quyền root và tạo người dùng ansible cùng với authorized_keys
tệp và sudo
quyền của nó .
Trong các lần chạy tiếp theo, kết nối với tư cách là người dùng có thể hoạt động, do đó, khối tác vụ có thể bị bỏ qua.
Khi máy chủ từ xa được khởi động, tôi có thể tiếp tục với người dùng ansible và become
:
- hosts: all
remote_user: ansible
become: yes
roles:
- ...