====== 2. Подготовка хостов к управлению ======
На управляющей ноде:
# Создать пользователя ansible
useradd ansible
# Зайти из под пользователя ansible
su - ansible
# Сгенерировать включевую пару для ssh
ssh-keygen
Подготавливаем playbook prepare_hosts.yml, который должен создать на удаленных нодах пользователя ansible, входящего в группу wheel, скопировать открытый ключ для доступа по ssh, разрешить sudo без пароля
---
- name: Prepare servers for Ansible
hosts: all
gather_facts: false
tasks:
- name: Create ansible user
user:
name: ansible
groups: wheel
- name: Setup public key for Ansible user
authorized_key:
user: ansible
state: present
key: "{{ lookup('file','/home/ansible/.ssh/id_rsa.pub') }}"
- name: Create ansible sudoers file
file:
path: /etc/sudoers.d/ansible
state: touch
- name: Put info into file
blockinfile:
path: /etc/sudoers.d/ansible
block: |
# Set ansible user sudo without password
%ansible ALL=(ALL) NOPASSWD: ALL
Выполним playbook из-под root (позже можно запретить пользователю root вход по ssh по паролю).
ansible-playbook prepare_hosts -u root --askpass
В случае успешного выполнения можно попробовать выполнить "пинг" удаленных нод уже из-под пользователя ansible.
ansible all -m ping