OpenStack Client openrc config in cloud.yaml auslagern

Um mit der openstack-cli zu arbeiten habe ich bisher die openrc der jeweiligen Umgebung runtergeladen, angepasst und gesourced. Bei mehreren Umgebungen wird das schnell unübersichtlich.

source ~/.openrc.dev; openstack server list
source ~/.openrc.devadm; openstack server list
source ~/.openrc.fancycloud; openstack server list
[...]

Beim experimentieren mit dem Ansible OpenStack Cloud Modul sind mir die Notes ins Auge gestrochen.

Auth information is driven by os-client-config, which means that values can come from a yaml config file in /etc/ansible/openstack.yaml, /etc/openstack/clouds.yaml or ~/.config/openstack/clouds.yaml, then from standard environment variables, then finally by explicit parameters in plays. More information can be found at http://docs.openstack.org/developer/os-client-config

  • $HOME/.config/openstack/cloud.yaml angelen
---

clouds:
  dev:
    auth:
      auth_url: http://cloud.example:5000/v3/
      project_name: ansible
      domain: ansible
      username: ansible
      password: 4ns1ble
    region_name: Region1
  devadm:
    auth:
      auth_url: http://cloud.example:5000/v3/
      project_name: admin
      domain: Default
      username: admin
      password: admin
    region_name: Region1
  fancycloud:
    auth:
      auth_url: http://another.fancy.cloud.example:5000/v3/
      project_name: der-jd
      username: jd
      password: jd
    region_name: Region42
[...]

Jetzt kann ich meine Umgebungen einfach mit --os-cloud ansteuern.

openstack --os-cloud dev server list
openstack --os-cloud devadm server list
openstack --os-cloud fancycloud server list
ebenso in ansible :
- hosts: localhost
  tasks:
    - name: instance with cloud.yaml
      os_server:
        cloud: fancycloud
        image: Debian 9
        name: example-instance1
        key_name: ansible
        availability_zone: nova
        flavor: tasty42
        network: jd-net


Last update: March 22, 2021