Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
171016c
docs(neutron tutorial): added a tutorial on how to install neutron
Jagoum Jun 25, 2025
f25ce2d
feat(install neutron): added some scripts to automate the installatio…
Jagoum Jun 25, 2025
01411e6
docs(fix): formated my docs to pass markdown linting
Jagoum Jun 25, 2025
8e207c9
docs: fix markdownlint and vale errors, update spelling and line leng…
Jagoum Jun 25, 2025
df5a536
docs: fixed markdown linting issues
Jagoum Jun 25, 2025
0f22670
docs: fixed markdown linting issues again
Jagoum Jun 25, 2025
fb70cdf
feat(neutron): enhance installation scripts and configurations for Ne…
Jagoum Jun 30, 2025
1d37856
docs: update Neutron installation guide for clarity and consistency
Jagoum Jun 30, 2025
748ea78
fix(docs): update vocabulary and formatting in Ansible documentation
Jagoum Jun 30, 2025
6b86f93
Refactor code structure for improved readability and maintainability
Jagoum Jun 30, 2025
3e5ac30
fix: fixed errors with scripts especially with ssh access to multipas…
Jul 2, 2025
af32e4b
Implement OpenStack Neutron installation and configuration using Ansible
Jul 2, 2025
06b07da
Enhance MySQL user management in OpenStack installation scripts
Jul 2, 2025
0c7a8a1
refactor: update MySQL user credentials and streamline database tasks…
Jul 2, 2025
ed36466
Enhance OpenStack Neutron configuration and facts updates
Jul 2, 2025
c6c1951
Merge branch 'main' into 51-networking-service-neutron-automation
Jagoum Jul 3, 2025
0e7bd02
Enhance OpenStack installation scripts with new configurations and tasks
Jul 3, 2025
01b2a2c
Update inventory file to include a note on job status for OpenStack i…
Jul 3, 2025
1b06b75
Merge branch '51-networking-service-neutron-automation' of https://gi…
Jul 3, 2025
d9182a4
fix(openstack,ansible): resolve MySQL privilege errors and improve au…
Jul 7, 2025
3975f33
Fix and improve Neutron automation: handlers, endpoints, and service …
Jul 11, 2025
af422eb
chore: added some scripts to create multipass vms and also to automat…
Jul 17, 2025
e39d70e
fix: fixing some issues with keystone as a dependency for testing neu…
Jul 18, 2025
0ba9bf5
chore: no real change made
Jul 18, 2025
9e62aa4
Enhance OpenStack installation scripts and configurations
Jagoum Jul 18, 2025
aa70ce4
fix: fix keystone sync issue for my dependencies
Jagoum Jul 21, 2025
c92cc6a
refactor: refactored code to use openstack commands instead of commun…
Jagoum Jul 21, 2025
9ed71db
fix: fixed some bugs that cause nova installation and setup to fail
Jagoum Jul 21, 2025
91abfd1
fix: forced neutron to bind to port 9696
Jagoum Jul 22, 2025
922c00a
fix: fix some bugs with placement for my setup to run openstack-neutron
Jagoum Jul 23, 2025
eebac3c
chore: added a template file for placement-api and also placement api…
Jagoum Jul 23, 2025
cc4c8e4
fix: let me go home now
Jagoum Jul 23, 2025
8b7f338
fix: adjusting permission issues
Jagoum Jul 25, 2025
7682c72
fix: ignored some unneccessary file in .gitignore
Jagoum Jul 25, 2025
1f9fbee
fix: refactor script to mount the home dir before copying public key …
Jagoum Jul 25, 2025
7f6e5f4
fix: fixed some issues
Jagoum Jul 25, 2025
11763bc
chore: fix the issue with mariadb connection with keystone by changin…
Jagoum Jul 28, 2025
08bcee7
chore: added a task to create users with the name of different servic…
Jagoum Jul 29, 2025
8b8356b
fix: completed fixing the bug with keystone connection issue and neut…
Jagoum Jul 29, 2025
e55ee53
fix: completed everything
Jagoum Jul 29, 2025
3d3da91
fix: creating adminopenstarc
Jagoum Jul 29, 2025
6b51269
fix: no more waiting again
Jagoum Jul 29, 2025
1fcb3be
fix: added the file
Jagoum Jul 29, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
5 changes: 5 additions & 0 deletions .github/styles/config/vocabularies/Ansible/accept.txt
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@
(?i)vms?
(?i)macoss?
(?i)oss?
(?i)subnet?
(?i)subnets?
(?i)subnetworks?
(?i)IPs?
(?i)config
(?i)configs
(?i)Cirros
Expand All @@ -44,3 +48,4 @@
(?i)OAuth
(?i)APIs
(?i)cirros

1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -441,3 +441,4 @@ FodyWeavers.xsd
# JetBrains Rider
*.sln.iml

scripts/ansible_scripts/automated_openstack_installation/key.txt
27 changes: 12 additions & 15 deletions docs/VLAN.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
# Understanding VLANs and Their Operation

A VLAN (Virtual LAN) is an overlay layer 2 network that helps us organize devices
into different groups connected to a virtual network on the physical network.

VLANs help us partition a LAN into smaller virtual networks for security
purposes. This allows us to have different logically distinct virtual networks
rather than having many physical small LANs.
VLANs help us partition a LAN into smaller virtual networks for security purposes.
This allows us to have different logically distinct virtual networks rather than
having many physical small LANs.

Computers on the same network (LAN) communicate either through wireless access
points (AP) or through ethernet cables. All computers on a LAN are connected to
Expand All @@ -17,30 +14,30 @@ There are two types of VLANs:

- **Port-Based VLAN**: A VLAN is assigned to a particular port, and any machine
connected to that port automatically joins that VLAN
- **User-Based or Dynamic VLAN**: VLANs are assigned based on user
authentication or other dynamic criteria
- **User-Based or Dynamic VLAN**: VLANs are assigned based on user authentication
or other dynamic criteria

## Network Architecture

```mermaid
flowchart TD
subgraph "Physical Network Infrastructure"
SW["Switch"]
SW["Switch"]
end

subgraph "VLAN 10 (Marketing)"
PC1["Computer 1\nIP: 192.168.10.2\nVLAN 10"]
PC2["Computer 2\nIP: 192.168.10.3\nVLAN 10"]
PC1["Computer 1\nIP address: 192.168.10.2\nVLAN 10"]
PC2["Computer 2\nIP address: 192.168.10.3\nVLAN 10"]
end

subgraph "VLAN 20 (Engineering)"
PC3["Computer 3\nIP: 192.168.20.2\nVLAN 20"]
PC4["Computer 4\nIP: 192.168.20.3\nVLAN 20"]
PC3["Computer 3\nIP address: 192.168.20.2\nVLAN 20"]
PC4["Computer 4\nIP address: 192.168.20.3\nVLAN 20"]
end

subgraph "VLAN 30 (Finance)"
PC5["Computer 5\nIP: 192.168.30.2\nVLAN 30"]
PC6["Computer 6\nIP: 192.168.30.3\nVLAN 30"]
PC5["Computer 5\nIP address: 192.168.30.2\nVLAN 30"]
PC6["Computer 6\nIP address: 192.168.30.3\nVLAN 30"]
end

SW --- PC1
Expand Down
81 changes: 40 additions & 41 deletions docs/ansible_docs.md
Original file line number Diff line number Diff line change
@@ -1,42 +1,40 @@
# Ansible

Ansible is an open-source automation tool used for automating applications,
service orchestration, and server configuration management.
service orchestration, and the configuration and management of servers.

## Prerequisites

Before diving into Ansible, installation is necessary. Follow the tutorial on
how to install Ansible here:
Before diving into Ansible, its installation is greatly necessary. To do so,
follow the tutorial on how to install Ansible here:

- [Ansible Installation](/docs/tutorials/ansible_tuto.md)

## Features

Ansible provides several tools to facilitate server management:

- **OpenSSH**: Used for setting up SSH and generating keys for server
authentication
- **Ad-hoc Commands**: Used as alternatives to playbooks for quick and simple
tasks
- **Playbooks**: YAML files containing specific tasks to manage servers, used
for complex tasks
- **Inventory File**: Contains the list of servers grouped by categories for
organized management
- **OpenSSH**: Used for setting up SSH and generating keys for authenticating
with servers
- **Ad-hoc Commands**: Used as alternatives to playbooks, typically for quick
and simple tasks
- **Playbooks**: YAML files containing specific tasks to manage servers,
commonly used for more complex tasks
- **Inventory File**: Contains the list of servers grouped by categories,
allowing for organized management of your infrastructure

## How It Works

### SSH Configuration

Ansible relies on SSH to authenticate and configure servers. While you can use a
single SSH key for managing all servers, it is often recommended to use two
separate keys:

- One for personal SSH logins
- Another specifically for automation with Ansible
separate keys for different tasks: one for personal SSH logins and another
specifically for automation with Ansible.

#### Creation of SSH Keys

SSH is a key aspect that Ansible uses to connect remotely to servers,
SSH is a key aspect that Ansible uses to connect remotely to all the servers,
eliminating the need for credential passwords each time a user logs in.

To create SSH keys for both personal use and automation, follow these steps:
Expand All @@ -50,18 +48,18 @@ To create SSH keys for both personal use and automation, follow these steps:
- **Ansible Key (for automation tasks):**

```sh
ssh-keygen -t ed25519 -f ~/.ssh/ansible_key -C "ansible@$(hostname)"
ssh-keygen -t ed25519 -f ~/.ssh/ansible_key -C "ansible@$(host name)"
```

After creating the keys, copy them to the servers using:
After creating the keys, copy them to the servers using the following commands:

```sh
ssh-copy-id -i ~/.ssh/ansible_key.pub user@server_ip
ssh-copy-id -i ~/.ssh/personal_key.pub user@server_ip
```

Replace `user@server_ip` with the appropriate username and IP address or
hostname of your target server.
Replace `user@server_ip` with the appropriate username and IP address or host
name of your target server.

For more details, see:

Expand All @@ -70,11 +68,9 @@ For more details, see:
### Launching a Playbook

Playbooks define the automation logic in a structured way. When you run a
playbook, Ansible:

1. Loads temporary modules to the remote server
2. Executes the tasks (e.g., install packages, start services)
3. Removes the modules after execution
playbook, Ansible loads temporary modules to the remote server to execute the
tasks (e.g., install packages, start services). After execution, these modules
are removed.

For more details on playbooks:

Expand All @@ -92,30 +88,33 @@ To learn more about ad-hoc commands, see:

## Server Management

Ansible excels at server management by providing:
Ansible is very good for server management due to the fact that it provides:

- **Playbooks**: Makes task handover between teams seamless, as all required
tasks are documented in playbooks
- **Inventory Files**: Organizes server IP addresses by groups, making it easy
to manage and assign tasks
- **SSH Key**: Automates authentication, making server access and management
more efficient
- **Playbooks**: If the group managing the servers is shifted and another one is
placed, as the tasks that are to be run are in the playbook, this will be easy
for the new group to understand what is to be done
- **Inventory Files**: Placing all the servers' IP addresses in a file makes it
easy to recall and know for which tasks are for which server. Just like in an
inventory file, there is a group of servers for databases and more
- **SSH Key**: The fact that Ansible uses SSH keys to handle authentication
makes it ideal for movement as the login is already an automated action

## What If Ansible Becomes Outdated?

If Ansible becomes outdated or no longer maintained, other modern tools can be
used for infrastructure automation and server management:
If Ansible becomes outdated or no longer maintained, there are other modern
tools that can be used for infrastructure automation and server management:

- [Chef](https://docs.chef.io/manage/)
- [SaltStack](https://github.com/saltstack/salt)
- [Pulumi](https://www.pulumi.com/)
- [Puppet](https://www.puppet.com/)

Each tool has its specific strengths:
Each of them is based on specific aspects:

| Tools | Language | Best Used For |
|-----------|-------------|---------------------------------------------|
| Chef | Ruby | Complex enterprise environments |
| SaltStack | YAML | Large-scale deployments |
| Pulumi | Various | Cloud infrastructure and resource management |
| Puppet | Puppet DSL | Large-scale environments |
| Tools | Language | Best Used For |
|-----------|-------------------------|----------------------------------|
| Chef | Ruby | Complex enterprise environments |
|SaltStack| YAML | Large-scale deployments |
| Pulumi | Programming language | Infrastructure provision and |
| | (various) | cloud resource management|
| Puppet | Puppet DSL| Large-scale environments |
Loading
Loading