web-dev-qa-db-ja.com

sshsocksプロキシでansibleopenstackモジュールを使用する方法

OpenSSHを使用すると、socksプロキシを使用して暗号化されたトンネルとして機能できます。これは、ansibleのopenstackモジュールに使用できます。ただし、ansibleのドキュメントには、HTTP/HTTPS以外のプロキシの使用方法については記載されていません。

2

ソックスプロキシ

最初に構成 OpenSSH socks tunnel

~/.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

次に、次のコマンドでHorizo​​nダッシュボードにアクセスできることをテストします。

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

openstack client config -- clouds.yml

次の内容で~/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

ansible

次の内容で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_PROXYsocks5h://localhost:65432に設定する必要があります。この変数は、リモートhttpサービスに接続しているほとんどのansibleモジュールで使用されるlibcurlによって使用されます。詳細については、 https://curl.haxx.se/libcurl/c/libcurl-env.html および https://curl.haxx.se/libcurl/c/ CURLOPT_SOCKS_PROXY.html

1