Ansible Proxmox — различия между версиями
Mikheeva (обсуждение | вклад) |
Mikheeva (обсуждение | вклад) |
||
Строка 35: | Строка 35: | ||
size="3" | size="3" | ||
pg_num="64" | 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> | '''<hostname>''': Узнать '''host_name''' c каждой ноды можно командой, находясь на УК: <code>ssh root@<ip_address> 'hostname'</code> | ||
Строка 48: | Строка 49: | ||
'''<private_ip_address>''': IP адрес внутренней 10Gb сети. | '''<private_ip_address>''': IP адрес внутренней 10Gb сети. | ||
− | + | [cluster:vars] | |
− | |||
− | |||
# ntp servers | # ntp servers | ||
ntp_servers=['<ntp_ip_address>'] | ntp_servers=['<ntp_ip_address>'] | ||
− | '''<ntp_ip_address>''': IP адрес сервера времени | + | '''<ntp_ip_address>''': IP адрес сервера времени. |
− | |||
− | |||
− | |||
− | |||
− | |||
− | <ssh_pass> | + | # pve cluster |
− | + | ansible_ssh_pass="<ssh_pass>" | |
+ | cluster_name="<cluster_name>" | ||
+ | '''<ssh_pass>''': пароль от пользователя root, который был указан при установке PVE. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | <10Gb_interface_name> | + | # 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 | + | # osds |
− | osd_disks=['<disk1_name>', <disk2_name>] | + | osd_disks=['<disk1_name>', <disk2_name>] |
− | osd_type="<filestore|bluestore>" | + | osd_type="<filestore|bluestore>" |
− | <disk1_name>: | + | '''<disk1_name>''': Имя блочного устройства, которое будет использовано для OSD, например sdb. |
− | Имя блочного устройства, которое будет использовано для OSD, например sdb | ||
− | <filestore|bluestore>: | + | '''<filestore|bluestore>''': Тип OSD, рекомендуется использовать filestore. |
− | Тип OSD, рекомендуется использовать filestore | ||
Строка 102: | Строка 92: | ||
pool_name="<poolname>": | pool_name="<poolname>": | ||
− | Название пула с будущими данными | + | Название пула с будущими данными. |
min_size="<int 1-7>": | min_size="<int 1-7>": | ||
− | Минимальное количество реплик одного объекта, например для 3-х нод min_size=2 | + | Минимальное количество реплик одного объекта, например для 3-х нод min_size=2. |
size="<int 1-7>": | size="<int 1-7>": | ||
− | Количество реплик одного объекта, например для 3-х нод min_size=3 | + | Количество реплик одного объекта, например для 3-х нод min_size=3. |
pg_num="<int>": | pg_num="<int>": |
Версия 14:48, 21 июня 2019
Для установки потребуется следующее:
- Управляющий компьютер (УК), с которого будет выполняться установка.
- Ноды с чисто установленным Proxmox (последняя версия) (PVE).
- Полностью подключенные ноды: публичная и приватные сети, а также 10Gb коммутатор.
Пункты установки:
- Подключиться к УК.
- Скопировать директорию \\192.168.10.24\nasprogrammers\repository\proxmox_ansible на УК.
- На УК установить ansible (>=2.8.0) командой:
pip install ansible
. - Находясь в директории anisble_project получить приватные ключи с каждой ноды, сделать это можно командой:
scp root@<ip_address> ./priv_keys/<ip_address>.id_rsa
. - Заполняем переменные в файле 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] <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
Если все прошло без ошибок, то проверяем работу кластера.