четверг, 1 марта 2018 г.

Ansible ssh key PlayBook

  Представим ситуацию: у нас есть 10-100 или даже 1000 серверов, на каждом из них должны работать несколько людей. Нам необходимо передать на каждый сервер ключи всех пользователей.


 Руками делать такое, конечно не очень интересно... по этому предлагаю написать небольшой сценарий для ansible.

Устанавливаем ansible, тут все просто.
После установки редактируем файл:

sudo vi /etc/ansible/hosts


Для первичного входа на сервера по паролю (ключей же еще нет)
sudo vi /etc/ansible/ansible.cfg
устанавливаем параметр:
host_key_checking = False


Добавляем секцию test и добавляем ip адреса наших серверов:

[test]
192.168.0.1 
192.168.0.2 
................


  Собираем ssh ключи всех пользователей и складываем в файлы.
Например ключи всех пользователей, которые будут работать под root - в файл root.pub и тд.


Создаем сценарий для ansible:
----- файл ssh_key.yml -----
# да, начало такое :)
---
# Означает, что буду использоваться сервера из секции [test] файла hosts

- hosts: test
  tasks:

  - authorized_key:

# ключи добавятся пользователю root ...
      user: root
      state: present

# ... из нашего файла root.pub
      key: "{{ lookup('file', '/home/vladimir/utils/ansible/keys/root.pub') }}"
----- файл ssh_key.yml -----

  Для других пользователей и  файлов с ключами добавляем еще одну секцию: 

- authorized_key:
# Меняем на нужного - user:
      user: root
      state: present

# Указываем путь к файлу с ключами
       key: "{{ lookup('file', '/home/vladimir/utils/ansible/keys/key.pub') }}"


Запускаем сценарий на исполнение:
sudo ansible-playbook  ssh_key.yml

вывод скрипта:

SSH password:

PLAY [test] **************************************************************************************************************************************************

TASK [Gathering Facts] ***************************************************************************************************************************************
ok: [
192.168.0.1]

TASK [authorized_key] ****************************************************************************************************************************************
changed: [
192.168.0.1]

PLAY RECAP ***************************************************************************************************************************************************
192.168.0.1              : ok=2    changed=1    unreachable=0    failed=0  

Популярные сообщения