Сообщение #1
05 августа 2020, 12:04
|
Создание межсерверного туннеля
1. Есть Odoo, установленная, например, в Oracle Cloud.
2. Есть удаленная база в интернет сети, c которой необходимо взаимодействие из Odoo по защищенному ssh туннелю.
Почитать о создании такого туннеля можно здесь habr.com/ru/post/331348/
Необходимо, что-бы перед запуском Оду «поднимался» данный тунель.
Решение через python3
1. Устанавливаем библиотеку sshtunnel
pip3 install sshtunnel
2. В директории /usr/bin создаем скрипт запуска туннеля, например sshclient.py
Вставляем в него код
3. В скрипт /usr/bin/odoo добавляем код
Примечание:
Возможно поднятие нескольких каналов одним скриптом. Для этого пишем:
В скрипте sshtunnel.py корректируем код:
2. Есть удаленная база в интернет сети, c которой необходимо взаимодействие из Odoo по защищенному ssh туннелю.
Почитать о создании такого туннеля можно здесь habr.com/ru/post/331348/
Необходимо, что-бы перед запуском Оду «поднимался» данный тунель.
Решение через python3
1. Устанавливаем библиотеку sshtunnel
pip3 install sshtunnel
2. В директории /usr/bin создаем скрипт запуска туннеля, например sshclient.py
Вставляем в него код
from sshtunnel import SSHTunnelForwarder
remote_user = 'ubuntu'
remote_host = 'my.domain.com'
remote_port = 22
local_host = '127.0.0.1' # на этот адрес будет соединяться Odoo
local_port = 5000 # порт из внутренней сети соединения удаленной базы, на него будет соединяться Odoo
server = SSHTunnelForwarder(
(remote_host, remote_port),
ssh_username=remote_user,
ssh_private_key='/root/.ssh/id_rsa',
remote_bind_address=(IP адрес из внутренней сети удаленного сервера базы, local_port),
local_bind_address=(local_host, local_port),
)
server.start()
3. В скрипт /usr/bin/odoo добавляем код
__import__('os').environ['TZ'] = 'UTC'
import odoo
import os
if __name__ == "__main__":
os.system('/usr/bin/sshclient.py &') # запускаем в фоне защищенный канал
odoo.cli.main() # запускаем Odoo
Примечание:
Возможно поднятие нескольких каналов одним скриптом. Для этого пишем:
remote_bind_address=[('172.16.1.90',5000),('172.16.1.80',5000)],
local_bind_address=[('0.0.0.0',4080),('0.0.0.0',5432)])
В скрипте sshtunnel.py корректируем код:
if bind_address:
if type(bind_address) != list:
bind_addresses = [bind_address]
else:
bind_addresses = bind_address
Последний раз редактировал пользователь
aladkoi
-
05 августа 2020, 12:07
0