Skip to content

feat: Scaffold modular Ansible project for OpenStack Nova deployment #55

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 35 commits into
base: main
Choose a base branch
from

Conversation

onelrian
Copy link
Contributor

This PR scaffolds a modular Ansible project for deploying OpenStack Nova across controller and compute nodes.

Key Changes:

  • Inventory Structure:

    • Added inventory file to define hosts and groups for controller and compute nodes.
  • Playbooks:

    • Created separate playbooks for:

      • controller-node.yml
      • compute-node.yml
  • Roles Implemented:

    • common: System prep (packages, users, config)
    • nova-db: Sets up Nova databases and users
    • nova-controller: Deploys API, Scheduler, Placement, flavors, quotas
    • nova-nocompute: Sets up KVM/QEMU and libvirt (on compute nodes)
    • nova-cells: Handles cell mapping and cellv2 registration
    • openstack-test: Launches integration test VM to verify deployment
  • Templates:

    • Added Jinja2 templates for nova.conf for both controller and compute nodes
  • Variables:

    • Centralized all sensitive variables (passwords, tokens) under:

      • common/defaults/main.yml
  • Cleanup:

    • Ensured all roles contain only necessary, non-empty files and folders (no placeholders)

…\n-Add inventory file and separate playbooks for controller and compute nodes \n-Implement roles: common (system prep), nova-db (DB setup),nova-controller (API,scheduler , placement , flavors , quotas , no-compute (KVM/QEMU ,libvirt), nova-cells (cell mapping) , openstack-test (intergration test VM) \n-Centralize all passwrdswith single globalvariable in common /defaults/main.yml\n-Add Jinja2 templates fofr nova.conf (controller and compute) \n-Ensure all roles contain only non-empty, relevant files
@onelrian onelrian self-assigned this Jun 30, 2025
@onelrian onelrian linked an issue Jun 30, 2025 that may be closed by this pull request
9 tasks
@github-actions github-actions bot requested a review from Jagoum June 30, 2025 06:58
onelrian added 24 commits July 1, 2025 12:00
…ecks

- Authenticate with Keystone using password method
- Extract token from response headers
- Use token to query Glance image API endpoint
- Fail early if either service is unavailable
…lance connection

- Add env-based defaults for keystone_url, credentials, project name
- Allow override in group_vars or via environment
…vars

- Keystone token endpoint (/v3/auth/tokens)
- Glance image list check (/v2/images)
- Documents purpose of role
- Lists task behaviors and variables
- Explains failure behavior for unmet dependencies
…f nova controller services

- Create DBs and grant privileges
- Register user, role, and endpoints with Keystone
- Install and enable nova-api, scheduler, conductor
- Sync databases
- Includes api_database, database, keystone_authtoken, and concurrency sections
- Uses Jinja2 variables for passwords and connection URIs
… nova-compute

- Installs nova-compute and dependencies
- Applies nova.conf template
- Starts and enables nova-compute service
- Configures messaging, Keystone, VNC, placement, libvirt
- Auto-populates with controller and network details
- Installs required virtualization and libvirt packages
- Validates hardware support via kvm-ok
- Ensures libvirt services are enabled and running
- Adds nova to libvirt group
onelrian added 10 commits July 1, 2025 14:07
…d meta

- Implement Nova cell0 mapping, cell1 creation, and host discovery
- Define default variables for nova-manage path and service ownership
- Document role purpose, usage, and default variables in README.md
- Add meta file for Ansible Galaxy compatibility
- Add empty handlers file for consistency
… and meta

- Create role to define and provision standard OpenStack flavors
- Add default flavor list and scoped variables for region and project
- Add role documentation, usage instructions, and variable explanations
- Add meta file for Ansible Galaxy support
- Add empty handlers file for structural consistency
…ts, docs, and meta

- Provision, verify, and delete test VMs for Nova validation
- Add default variables for flavor, image, keypair, and cleanup control
- Document usage, inputs, and operational expectations in README.md
- Add meta file for Ansible Galaxy integration
- Add empty handlers file for structural consistency
…r and compute, and docs

- Define production inventory with controller and compute groups
- Add controller group_vars for Keystone, DB, Glance, and RabbitMQ configuration
- Add compute group_vars with virt_type, controller reference, and Nova auth
- Document inventory layout and variable purposes across groups
- Restructure site playbook to sequence controller, compute, and test VM stages
- Remove redundant roles from controller playbook for compatibility with new site.yml
- Update compute playbook for role-only execution
- Align README usage examples with new site.yml and modular structure
… duplicates

- Added flagged words (e.g. misconfigured, keypair, nova_compute) to accept.txt
- Reviewed extended list of regex terms for redundancy
- Verified no duplicate or overlapping patterns in spellcheck configuration
…pendencies

- Replace hardcoded values with variables for hosts, passwords, and service URLs
- Use community and OpenStack Ansible collections for database and service modules
- Manage service lists via variables for easier enable/start tasks
- Enhance configuration templates to reference variables consistently
- Implement idempotent commands with proper error handling in tasks
- Add or update README files to clearly document role purpose, variables, and requirements
- Define Ansible collections in requirements.yml to handle external dependencies
…pendencies

- Replace hardcoded values with variables for hosts, passwords, and service URLs
- Use community and OpenStack Ansible collections for database and service modules
- Manage service lists via variables for easier enable/start tasks
- Enhance configuration templates to reference variables consistently
- Implement idempotent commands with proper error handling in tasks
- Add or update README files to clearly document role purpose, variables, and requirements
- Define Ansible collections in requirements.yml to handle external dependencies
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Compute Service (Nova) Automation
2 participants