OpenSSH позволяет работать как зашифрованный туннель с прокси-сервером socks. Это можно использовать для модулей openstack в анзибле. Однако в доступной документации не упоминается, как использовать любой другой прокси, кроме HTTP / HTTPS.
Сначала настройте OpenSSH socks туннель:
Добавить в ~/.ssh/config
что-то вроде:
# Physical host
Host Dell-em1
User myuser
HostName 192.168.x.x
ForwardAgent yes
Host undercloud-0
User stack
HostName undercloud-0
ProxyJump Dell-em1
IdentityFile /home/mvutcovi/infrared/.workspaces/workspace_2018-02-14_18-24-58/id_rsa
Host controller-0
User heat-admin
HostName 192.168.24.13
ProxyJump Dell-em1
IdentityFile /home/mvutcovi/infrared/.workspaces/workspace_2018-02-14_18-24-58/id_rsa
DynamicForward localhost:65432
Теперь проверьте, можете ли вы получить доступ к панели инструментов Horizon:
ALL_PROXY=socks5h://localhost:65432 curl -vi 10.0.0.107:80/dashboard
Создайте ~/clouds.yaml
файл со следующим содержанием:
clouds:
my_stack:
auth:
auth_url: http://10.0.0.107:5000/v2.0
project_name: myproject
username: admin
password: XXXXXX
region_name: ""
Тест с:
ALL_PROXY="socks5h://localhost:65432" openstack --os-cloud my_stack server list
Создайте файл openstack_test.yaml со следующим содержимым:
---
- hosts: localhost
gather_facts: no
tasks:
- name: Upload CentOS7 iso image
os_image:
name: centos7
cloud: "my_cloud"
container_format: bare
disk_format: iso
filename: /path_to_local_file/CentOS-7-x86_64-DVD-1708.iso
properties:
cpu_arch: x86_64
distro: redhat
environment:
ALL_PROXY: "socks5h://localhost:65432"
when: false
# vim:et:sw=2:ts=2:sts=2:
Переменная окружения ALL_PROXY
необходимо установить на socks5h://localhost:65432
. Эта переменная используется libcurl, который используется большинством доступных модулей, которые подключаются к удаленным службам http. Подробнее см .: https://curl.haxx.se/libcurl/c/libcurl-env.html и https://curl.haxx.se/libcurl/c/CURLOPT_SOCKS_PROXY.html