Ansible Proxmox — различия между версиями

Материал из Integra-S Wiki
Перейти к: навигация, поиск
 
(не показано 15 промежуточных версий этого же участника)
Строка 1: Строка 1:
 +
==Подготовка к установке==
 
Для установки потребуется следующее:
 
Для установки потребуется следующее:
 
#Управляющий компьютер (УК), с которого будет выполняться установка.
 
#Управляющий компьютер (УК), с которого будет выполняться установка.
Строка 4: Строка 5:
 
#Полностью подключенные ноды: публичная и приватные сети, а также 10Gb коммутатор.
 
#Полностью подключенные ноды: публичная и приватные сети, а также 10Gb коммутатор.
  
 +
==Установка==
 
Пункты установки:
 
Пункты установки:
#Подключиться к УК.
+
:1. Подключиться к УК.
#Скопировать директорию \\192.168.10.24\nasprogrammers\repository\proxmox_ansible на УК.
+
:2. Скопировать директорию \\192.168.10.24\nasprogrammers\repository\proxmox_ansible на УК.
#На УК установить ansible (>=2.8.0) командой: <code>pip install ansible</code>.
+
:3. На УК установить ansible (>=2.8.0) командой: <code>pip install ansible</code>.
#Находясь в директории '''anisble_project''' получить приватные ключи с каждой ноды, сделать это можно командой: <code>scp root@<ip_address> ./priv_keys/<ip_address>.id_rsa</code>.
+
:4. Находясь в директории anisble_project получить приватные ключи с каждой ноды, сделать это можно командой: <code>scp root@<ip_address> ./priv_keys/<ip_address>.id_rsa</code>.
#Заполняем переменные в файле hosts: !вместо '''<some_text>''' записываем значения переменных!
+
:5. Заполняем переменные в файле hosts.
 +
 
 +
:''Замечание: вместо <some_text> необходимо записывать значения переменных.''
  
'''Пример''':
 
[cluster]
 
ansible-tnode1 ansible_host=192.168.11.124 ansible_private_key_file=priv_keys/ansible-tnode1.id_rsa ansible_private_ip_addr=10.12.10.1
 
ansible-tnode2 ansible_host=192.168.11.125 ansible_private_key_file=priv_keys/ansible-tnode2.id_rsa ansible_private_ip_addr=10.12.10.2
 
ansible-tnode3 ansible_host=192.168.11.126 ansible_private_key_file=priv_keys/ansible-tnode3.id_rsa ansible_private_ip_addr=10.12.10.3
 
[cluster:vars]
 
# ntp servers
 
ntp_servers=['192.168.11.119']
 
# pve cluster
 
cluster_name="testcluster"
 
# private network
 
ansible_ssh_pass="000000"
 
ansible_private_interface="ens19"
 
ansible_private_ip_mask="255.0.0.0"
 
ansible_private_ip_pref="8"
 
ansible_private_ip_network="10.0.0.0"
 
# osds
 
osd_disks=['sdb', 'sdc']
 
osd_type="filestore"
 
# pool
 
pool_name="testpool12"
 
min_size="2"
 
size="3"
 
pg_num="64"
 
 
  [cluster]
 
  [cluster]
 
  <host_name> ansible_host=<ip_address> ansible_private_key_file=priv_keys/<host_name|ip_address>.id_rsa ansible_private_ip_addr=<private_ip_address>
 
  <host_name> ansible_host=<ip_address> ansible_private_key_file=priv_keys/<host_name|ip_address>.id_rsa ansible_private_ip_addr=<private_ip_address>
  
'''Пояснение'''
+
'''<hostname>''': Узнать '''host_name''' c каждой ноды можно командой, находясь на УК:  <code>ssh root@<ip_address> 'hostname'</code>. Или на каждой ноде в отдельности: <code>hostname</code>.
 
 
'''<hostname>''': Узнать '''host_name''' c каждой ноды можно командой, находясь на УК:  <code>ssh root@<ip_address> 'hostname'</code>
 
 
 
Или на каждой ноде в отдельности: <code>hostname</code>.
 
  
 
'''<ip_address>''': IP адрес компьютера, который был указан при установке PVE.
 
'''<ip_address>''': IP адрес компьютера, который был указан при установке PVE.
Строка 48: Строка 24:
 
'''<private_ip_address>''': IP адрес внутренней 10Gb сети.
 
'''<private_ip_address>''': IP адрес внутренней 10Gb сети.
  
 +
[cluster:vars]
 +
# ntp servers
 +
ntp_servers=['<ntp_ip_address>']
  
'''[cluster:vars]''':  
+
'''<ntp_ip_address>''': IP адрес сервера времени.
<code># ntp servers</code>
 
<code>ntp_servers=['<ntp_ip_address>']</code>
 
  
'''<ntp_ip_address>''': IP адрес сервера времени
+
# pve cluster
 +
ansible_ssh_pass="<ssh_pass>"
 +
cluster_name="<cluster_name>"
  
 +
'''<ssh_pass>''': Пароль от пользователя root, который был указан при установке PVE.
  
# pve cluster
+
# private network
ansible_ssh_pass="<ssh_pass>"
+
ansible_private_interface="<10Gb_interface_name>"
cluster_name="<cluster_name>"
+
ansible_private_ip_mask="<mask>"
 +
ansible_private_ip_pref="<prefix_format>"
 +
ansible_private_ip_network="<network>"
  
<ssh_pass>:
+
'''<10Gb_interface_name>''': Название интерфейса внутренней 10Gb сети, например: enp2s0f0
пароль от пользователя root, который был указан при установке PVE
 
  
 +
'''<mask>''': Маска внутренней 10Gb сети.
  
# private network
+
'''<prefix_format>''': Короткая запись маски внутренней 10Gb сети, он же префикс.
ansible_private_interface="<10Gb_interface_name>"
 
ansible_private_ip_mask="<mask>"
 
ansible_private_ip_pref="<prefix_format>"
 
ansible_private_ip_network="<network>"
 
  
<10Gb_interface_name>:
+
'''<network>''': Явное указание сети внутренней 10Gb сети.
Название интерфейса внутренней 10Gb сети, например: enp2s0f0
 
  
<mask>:
+
# osds
Маска внутренней 10Gb сети
+
osd_disks=['<disk1_name>', <disk2_name>]
 +
osd_type="<filestore|bluestore>"
  
<prefix_format>:
+
'''<disk1_name>''': Имя блочного устройства, которое будет использовано для OSD, например sdb.
Короткая запись маски внутренней 10Gb сети, он же префикс
 
  
<network>:
+
'''<filestore|bluestore>''': Тип OSD, рекомендуется использовать filestore.
Явное указание сети внутренней 10Gb сети
 
  
 +
# pool
 +
pool_name="<poolname>"
 +
min_size="<int 1-7>"
 +
pg_num="<int>"
 +
size="<int 1-7>"
  
# osds
+
'''pool_name="<poolname>"''': Название пула с будущими данными.
osd_disks=['<disk1_name>', <disk2_name>]
 
osd_type="<filestore|bluestore>"
 
 
 
<disk1_name>:
 
Имя блочного устройства, которое будет использовано для OSD, например sdb
 
 
 
<filestore|bluestore>:
 
Тип OSD, рекомендуется использовать filestore
 
 
 
 
 
# pool
 
pool_name="<poolname>"
 
min_size="<int 1-7>"
 
pg_num="<int>"
 
size="<int 1-7>"
 
 
 
pool_name="<poolname>":
 
Название пула с будущими данными
 
 
 
min_size="<int 1-7>":
 
Минимальное количество реплик одного объекта, например для 3-х нод min_size=2
 
  
size="<int 1-7>":
+
'''min_size="<int 1-7>"''': Минимальное количество реплик одного объекта, например для 3-х нод min_size=2.
Количество реплик одного объекта, например для 3-х нод min_size=3
 
  
pg_num="<int>":
+
'''size="<int 1-7>"''': Количество реплик одного объекта, например для 3-х нод min_size=3.
Количество плейсмент групп в пуле, расчет этого показателя по следующей формуле:
 
(( количество OSD )x ( 100 )) / ( size )
 
  
 +
'''pg_num="<int>"''': Количество плейсмент групп в пуле, данный показатель рассчитывается по следующей формуле: <code>(( количество OSD )x ( 100 )) / ( size )</code>
  
6) Находясь в директории anisble_project перепроверяем hosts ещё раз и выполняем команду:
+
:6. Находясь в директории anisble_project перепроверяем hosts ещё раз и выполняем команду: <code>ansible-playbook pve.yml ceph.yml</code>
ansible-playbook pve.yml ceph.yml
 
  
 
Если все прошло без ошибок, то проверяем работу кластера.
 
Если все прошло без ошибок, то проверяем работу кластера.

Текущая версия на 15:03, 21 июня 2019

Подготовка к установке

Для установки потребуется следующее:

  1. Управляющий компьютер (УК), с которого будет выполняться установка.
  2. Ноды с чисто установленным Proxmox (последняя версия) (PVE).
  3. Полностью подключенные ноды: публичная и приватные сети, а также 10Gb коммутатор.

Установка

Пункты установки:

1. Подключиться к УК.
2. Скопировать директорию \\192.168.10.24\nasprogrammers\repository\proxmox_ansible на УК.
3. На УК установить ansible (>=2.8.0) командой: pip install ansible.
4. Находясь в директории anisble_project получить приватные ключи с каждой ноды, сделать это можно командой: scp root@<ip_address> ./priv_keys/<ip_address>.id_rsa.
5. Заполняем переменные в файле hosts.
Замечание: вместо <some_text> необходимо записывать значения переменных.
[cluster]
<host_name> ansible_host=<ip_address> ansible_private_key_file=priv_keys/<host_name|ip_address>.id_rsa ansible_private_ip_addr=<private_ip_address>

<hostname>: Узнать host_name c каждой ноды можно командой, находясь на УК: ssh root@<ip_address> 'hostname'. Или на каждой ноде в отдельности: hostname.

<ip_address>: IP адрес компьютера, который был указан при установке PVE.

<private_ip_address>: IP адрес внутренней 10Gb сети.

[cluster:vars] 
# ntp servers
ntp_servers=['<ntp_ip_address>']

<ntp_ip_address>: IP адрес сервера времени.

# pve cluster
ansible_ssh_pass="<ssh_pass>"
cluster_name="<cluster_name>"

<ssh_pass>: Пароль от пользователя root, который был указан при установке PVE.

# private network
ansible_private_interface="<10Gb_interface_name>"
ansible_private_ip_mask="<mask>"
ansible_private_ip_pref="<prefix_format>"
ansible_private_ip_network="<network>"

<10Gb_interface_name>: Название интерфейса внутренней 10Gb сети, например: enp2s0f0

<mask>: Маска внутренней 10Gb сети.

<prefix_format>: Короткая запись маски внутренней 10Gb сети, он же префикс.

<network>: Явное указание сети внутренней 10Gb сети.

# osds
osd_disks=['<disk1_name>', <disk2_name>]
osd_type="<filestore|bluestore>"

<disk1_name>: Имя блочного устройства, которое будет использовано для OSD, например sdb.

<filestore|bluestore>: Тип OSD, рекомендуется использовать filestore.

# pool
pool_name="<poolname>"
min_size="<int 1-7>"
pg_num="<int>"
size="<int 1-7>"

pool_name="<poolname>": Название пула с будущими данными.

min_size="<int 1-7>": Минимальное количество реплик одного объекта, например для 3-х нод min_size=2.

size="<int 1-7>": Количество реплик одного объекта, например для 3-х нод min_size=3.

pg_num="<int>": Количество плейсмент групп в пуле, данный показатель рассчитывается по следующей формуле: (( количество OSD )x ( 100 )) / ( size )

6. Находясь в директории anisble_project перепроверяем hosts ещё раз и выполняем команду: ansible-playbook pve.yml ceph.yml

Если все прошло без ошибок, то проверяем работу кластера.