Como usar ansible openstack modules com um proxy ssh socks

2

O OpenSSH permite atuar como um túnel criptografado com um proxy de meias. Isso pode ser usado para módulos openstack em ansible. No entanto, a documentação ansible não menciona como usar qualquer outro proxy além de HTTP / HTTPS.

    
por Mircea Vutcovici 13.05.2018 / 19:32

1 resposta

1

proxy de meias

Primeiro, configure o túnel de meias do OpenSSH :

Adicione em ~/.ssh/config algo como:

# 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

Agora teste que você pode acessar o painel do Horizon com:

ALL_PROXY=socks5h://localhost:65432 curl -vi 10.0.0.107:80/dashboard

config do cliente openstack - clouds.yml

Crie o arquivo ~/clouds.yaml com o seguinte conteúdo:

clouds:
  my_stack:
    auth:
      auth_url: http://10.0.0.107:5000/v2.0
      project_name: myproject
      username: admin
      password: XXXXXX
    region_name: ""

Teste com:

ALL_PROXY="socks5h://localhost:65432" openstack --os-cloud my_stack server list

ansible

Crie um arquivo openstack_test.yaml com o seguinte conteúdo:

---
- 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:

A variável de ambiente ALL_PROXY precisa ser definida como socks5h://localhost:65432 . Essa variável é usada pelo libcurl, que é usado pela maioria dos módulos ansible que estão se conectando a serviços http remotos. Para mais detalhes, consulte: link e link

    
por 13.05.2018 / 19:55