This project provides a shell script with a menu-driven interface to simplify common OpenStack operations—such as displaying project details, listing images, and managing flavors—through the OpenStack command-line client. It streamlines frequent administrative tasks while serving as a practical tool for learning OpenStack concepts and command-line scripting.
❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀
❀ The Open Stack Personal Automation and Launch Suite ❀
❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀~❀
1. Show Info on Project
2. Show Info on User
3. Show Projects I'm A Member Of
4. Show All Instances
5. Show floating IPs
6. Show networks
7. Show Bare Metal
8. Show All Images
9. Show All Flavors
a. Show Shares
b. Show Quotas
c. Show Current OpenStack Services
x. Run Your Command
y. Open OpenStack Shell
q. Exit
------------------------------------
Enter your choice [1-9]:
The idea for this project came from my desire to create a shell tool to learn specific shell commands—essentially a self-evolving, learning-based personalized interactive tutorial command (in this case, I wanted to explore the openstack CLI command). Although I haven’t implemented that tool yet, this script emerged during the process. Another source of inspiration was the vintage IBM AIX interface for system administration, which I greatly appreciated back in the day.
Note
Important Notice: This application mainly operates in read-only mode. It is designed as an OpenStack client for inspecting and interacting with your OpenStack environment without making any modifications to your infrastructure.
The only way to modify your OpenStack infrastructure through this app is by opening an OpenStack shell through the "Open OpenStack Shell" menu item and typing your commands.
To clone this repository and set up the project locally, follow these steps:
-
uv (required) - Fast Python package manager
Install with:# macOS / Linux curl -LsSf https://astral.sh/uv/install.sh | sh
Note: Restart your terminal or run source $HOME/.cargo/env` to finalize the installation.
-
yq
brew install yq # macOS # or sudo apt install yq # Linux
- Clone the repository:
git clone https://github.com/groda/openstack-pals.git
- Navigate into the project directory:
cd openstack-pals
The script requires a credentials file for establishing a connection with your OpenStack projecty, by default
./clouds.yamlThe repository includes a sample credentials file sample_clouds.yaml with credentials for two different clouds as a reference.
If your credentials file is stored elsewhere, the script will prompt you to provide its location during the initial interactive setup.
Run with
./openstack-pals.sh./openstack-pals.sh -hTo run in a docker container:
-
Build an image
docker build -t openstack-pals . -
Run in container
docker run -ti --rm -v ~/.pals:/root/.pals -v ~/.openstack:/root/.openstack openstack-pals **Note:** this assumes that your credentials file is saved under ~/.openstack/app-cred-<YOUR_PROJECT>-openrc.sh (inside the container /root/.openstack/app-cred-<YOUR_PROJECT>-openrc.sh)
-
Optionally, create an alias
alias openstack-pals="docker run -ti --rm -v ~/.pals:/root/.pals -v ~/.openstack:/root/.openstack openstack-pals"
and run with:
openstack-pals