[ English | español | Deutsch | русский | Indonesia | English (United Kingdom) ]
Menginstal dengan konektivitas terbatas¶
Banyak buku pedoman dan peran di OpenStack-Ansible mengambil dependensi dari Internet publik secara default. Contoh konfigurasi mengasumsikan bahwa deployer menyediakan koneksi Internet berkualitas baik melalui router pada jaringan manajemen OpenStack.
Deployment dapat menemui konektivitas eksternal terbatas karena sejumlah alasan:
Konektivitas eksternal bandwidth rendah atau tidak dapat diandalkan
Aturan firewall yang memblokir konektivitas eksternal
Konektivitas eksternal diperlukan melalui proxy HTTP atau SOCKS
Keputusan arsitektur oleh penggelar untuk mengisolasi jaringan OpenStack
Lingkungan keamanan tinggi di mana tidak ada konektivitas eksternal diizinkan
Saat menjalankan OpenStack-Ansible di lingkungan jaringan yang memblokir konektivitas internet, kami menyarankan serangkaian praktik dan konfigurasi yang ditimpa untuk digunakan oleh deployers.
Opsi di bawah ini tidak eksklusif satu sama lain dan dapat digabungkan jika diinginkan.
Contoh ketergantungan internet¶
Paket python
Paket khusus distribusi
Image kontainer LXC
Repositori kode sumber
Kunci GPG untuk validasi paket
Praktek A: sumber daya internet mirror secara lokal¶
Anda dapat memilih untuk mengoperasikan dan memelihara mirror dependensi OpenStack-Ansible dan OpenStack. Mirror sering kali memberikan banyak mitigasi risiko dengan mengurangi ketergantungan pada sumber daya dan sistem di luar kendali langsung Anda. Mirror juga dapat memberikan stabilitas, kinerja, dan keamanan yang lebih besar.
Repositori paket Python¶
Banyak paket yang digunakan untuk menjalankan OpenStack diinstal menggunakan pip. Kami menyarankan untuk mencerminkan indeks paket PyPi yang digunakan oleh pip. Deployer dapat memilih untuk secara aktif mencerminkan seluruh repositori PyPi hulu, tetapi ini mungkin memerlukan sejumlah besar penyimpanan. Atau, proxy pip caching dapat digunakan untuk menyimpan salinan lokal hanya dari paket-paket yang diperlukan.
Untuk mengkonfigurasi penyebaran menggunakan indeks alternatif, buat file /etc/pip.conf dengan konten berikut dan pastikan bahwa itu berada di semua host di lingkungan.
[global]
index-url = http://pip.example.org/simple
Selain itu, perlu untuk mengkonfigurasi easy_install untuk menggunakan indeks alternatif. easy_install digunakan sebagai ganti pip untuk menginstal apa pun yang terdaftar di bawah setup_requires di setup.py selama pembuatan roda (wheel builds), Lihathttps://pip.pypa.io/en/latest/reference/pip_install/#controlling-setup-requires
Untuk mengonfigurasi easy_install agar menggunakan indeks alternatif, buat file /root/.pydistutils.cfg dengan konten berikut.
[easy_install]
index_url = https://pip.example.org/simple
Kemudian, di /etc/openstack_deploy/user_variables.yml, konfigurasikan penyebaran untuk menyalin file-file ini dari host ke dalam image cache kontainer.
# Copy these files from the host into the containers
lxc_container_cache_files_from_host:
- /etc/pip.conf
- /root/.pydistutils.cfg
Paket khusus distribusi¶
Banyak paket perangkat lunak yang diinstal pada host Ubuntu menggunakan paket .deb. Mekanisme pengemasan serupa ada untuk distribusi Linux lainnya. Kami menyarankan untuk mencerminkan (mirroring) repositori yang meng-host paket-paket ini.
Upstream Ubuntu repositories to mirror for Ubuntu 22.04 LTS:
jammy
jammy-updates
OpenStack-Ansible membutuhkan beberapa repositori lain untuk menginstal komponen tertentu seperti Galera dan Ceph.
Contoh repositori ke mirror (host target Ubuntu):
Daftar ini sengaja tidak lengkap dan setara akan diperlukan untuk distribusi Linux lainnya. Konsultasikan playbook OpenStack-Ansible dan dokumentasi role untuk repositori lebih lanjut dan variabel yang dapat digunakan untuk mengganti lokasi repositori.
Image kontainer LXC¶
OpenStack-Ansible builds LXC images using debootstrap or dnf depending on
the distribution. In order to override the package repository you
might need to adjust some variables, like lxc_apt_mirror
or completely
override build command with lxc_hosts_container_build_command
Consult the openstack-ansible-lxc_hosts
role for details on
configuration overrides for this scenario.
Repositori kode sumber¶
OpenStack-Ansible mengandalkan Ansible Galaxy untuk mengunduh role Ansible saat bootstrapping a deployment host. Penyebar mungkin ingin mencerminkan dependensi yang diunduh oleh skrip bootstrap-ansible.sh
.
Deployers can configure the script to source Ansible from an alternate Git
repository by setting the environment variable ANSIBLE_GIT_REPO
. Also,
during initial bootstrap you might need to define a custom URL for
upper-constraints file that is part of openstack/requirements repository,
using the TOX_CONSTRAINTS_FILE environment variable.
Deployer dapat mengonfigurasi skrip ke sumber dependensi role Ansible dari lokasi alternatif dengan memberikan file persyaratan role khusus dan menentukan jalur ke file tersebut menggunakan variabel lingkungan ANSIBLE_ROLE_FILE
.
Praktek B: Akses proxy ke sumber daya internet¶
Beberapa jaringan tidak memiliki akses terarah ke Internet, atau memerlukan lalu lintas tertentu untuk menggunakan gateway khusus aplikasi seperti server proxy HTTP atau SOCKS.
Host target dan penyebaran dapat dikonfigurasikan untuk mencapai sumber daya internet publik melalui server proxy HTTP atau SOCKS. OpenStack-Ansible dapat digunakan untuk mengonfigurasi host target untuk menggunakan server proxy. OpenStack-Ansible tidak menyediakan otomatisasi untuk membuat server proxy.
Deployment host awal berada di luar ruang lingkup OpenStack-Ansible dan deployer harus memastikan set minimum konfigurasi proxy sudah ada, khususnya untuk manajer paket sistem.
konfigurasi proxy apt-get
¶
Konfigurasi proxy lainnya¶
Selain konfigurasi dasar ini, ada klien jaringan lain pada host target yang dapat dikonfigurasi untuk terhubung melalui proxy. Sebagai contoh:
Sebagian besar modul jaringan Python
curl
wget
openstack
Alat-alat ini dan pustaka-pustaka yang mendasarinya digunakan oleh Ansible sendiri dan playbook OpenStack-Ansible, sehingga harus ada konfigurasi proxy yang ada agar playbook dapat mengakses sumber daya eksternal dengan sukses.
Biasanya alat ini membaca variabel lingkungan yang berisi pengaturan server proxy. Variabel lingkungan ini dapat dikonfigurasi dalam /etc/environment
jika diperlukan.
Penting untuk dicatat bahwa server proxy hanya boleh digunakan untuk mengakses sumber daya eksternal, dan komunikasi antara komponen internal dari penyebaran OpenStack harus langsung dan tidak melalui proxy. Variabel lingkungan no_proxy
digunakan untuk menentukan host yang harus dijangkau langsung tanpa melalui proxy. Ini sering adalah host di jaringan manajemen.
OpenStack-Ansible menyediakan dua mekanisme berbeda untuk mengonfigurasi pengaturan server proxy:
1. The default configuration file suggests setting a persistent proxy
configuration on all target hosts and defines a persistent no_proxy
environment variable which lists all hosts/containers' management addresses as
well as the load balancer internal/external addresses.
2. An alternative method applies proxy configuration in a transient manner
during the execution of Ansible playbooks and defines a minimum set of
management network IP addresses for no_proxy
that are required for the
playbooks to succeed. These proxy settings do not persist after an Ansible
playbook run and the completed deployment does not require them in order to be
functional.
Penyebar harus memutuskan pendekatan mana yang lebih cocok untuk host target, dengan mempertimbangkan panduan berikut:
1. Persistent proxy configuration is a standard practice and network clients on the target hosts will be able to access external resources after deployment.
2. The deployer must ensure that a persistent proxy configuration has complete
coverage of all OpenStack management network host/containers' IP addresses in
the no_proxy
environment variable. It is necessary to use a list of IP
addresses, CIDR notation is not valid for no_proxy
.
3. Transient proxy configuration guarantees that proxy environment variables
will not persist, ensuring direct communication between services on the
OpenStack management network after deployment. Target host network clients
such as wget
will not be able to access external resources after
deployment.
4. The maximum length of no_proxy
should not exceed 1024 characters due to
a fixed size buffer in the pam_env
PAM module. Longer environment variables
will be truncated during deployment operations and this will lead to
unpredictable errors during or after deployment.
Setelah jumlah hosts/containers dalam penyebaran mencapai ukuran tertentu, panjang no_proxy
akan melebihi 1024 karakter di mana pada saat itu wajib menggunakan pengaturan proxy sementara yang hanya memerlukan sebagian dari alamat IP jaringan manajemen untuk hadir dalam no_proxy
pada waktu penempatan.
Rujuk ke global_environment_variables: dan deployment_environment_variables: dalam contoh user_variables.yml untuk detail konfigurasi variabel lingkungan proxy yang persisten dan sementara.
Konfigurasi proxy host deployment untuk bootstrapping Ansible¶
Konfigurasikan skrip bootstrap-ansible.sh
yang digunakan untuk menginstal dependensi role Ansible dan Ansible pada host deployment untuk menggunakan proxy dengan mengatur variabel lingkungan HTTPS_PROXY
atau HTTP_PROXY
.
Catatan
Kami menyarankan Anda mengatur variabel /etc/environment
Anda dengan pengaturan proxy sebelum meluncurkan skrip atau playbook apa saja untuk menghindari kegagalan.
Untuk lingkungan yang lebih besar atau kompleks, host deployment khusus (dedicated) memungkinkan konfigurasi proxy yang paling cocok untuk diterapkan pada host deployment maupun host target.
Pertimbangan saat mem-proxy lalu lintas TLS¶
Proxying TLS traffic often interferes with the clients ability to perform successful validation of the certificate chain. Various configuration variables exist within the OpenStack-Ansible playbooks and roles that allow a deployer to ignore these validation failures. Disable certificate chain validation on a case by case basis and only after encountering failures that are known to only be caused by the proxy server(s).