Skip to content
Snippets Groups Projects
Commit d45dc138 authored by Krish Moodbidri's avatar Krish Moodbidri
Browse files

added initial instructions to setup and configure rabbitmq on a standalone vm (alma9) on openstack

parent a3ca071c
No related branches found
No related tags found
1 merge request!156Update README with improvements and corrections
......@@ -49,112 +49,155 @@ This project automates user registration workflows at UAB using **RabbitMQ** to
### Prerequisites
- macOS
- Homebrew
- Python 3.x
* Launch an alma9 instance on openstack, ssh into it and run the following commands
*Before proceeding, set these environment variables:*
```
export RABBITMQ_USER="reggie" # RabbitMQ admin username
export RABBITMQ_PASSWORD="secure_password" # RabbitMQ admin password
export CELERY_VHOST="adduser" # Celery-dedicated vhost
export CELERY_USER="celery_user" # Celery service username
export CELERY_PASSWORD="celery_pass" # Celery service password
```
### 1.1 Configure Package Repositories
### Install and Setup RabbitMQ
# Import security keys
sudo rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
sudo rpm --import https://packagecloud.io/rabbitmq/erlang/gpgkey
sudo rpm --import https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
```bash
brew update
brew install rabbitmq
# Erlang Repository (AlmaLinux 8)
```
sudo tee /etc/yum.repos.d/rabbitmq_erlang.repo <<'EOL'
[rabbitmq_erlang]
name=RabbitMQ Erlang
baseurl=https://packagecloud.io/rabbitmq/erlang/el/8/$basearch
gpgcheck=1
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
enabled=1
EOL
```
For CentOS, refer to:
- [RabbitMQ Role Configuration](https://github.com/jprorama/CRI_XCBC/blob/dev/roles/ohpc_rabbitmq/tasks/main.yaml)
- [VHost Configuration](https://github.com/jprorama/CRI_XCBC/blob/dev/roles/ohpc_add_rabbitmq_agents/tasks/main.yaml)
# RabbitMQ Server Repository
```
sudo tee /etc/yum.repos.d/rabbitmq_server.repo <<'EOL'
[rabbitmq_server]
name=RabbitMQ Server
baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/8/$basearch
gpgcheck=1
gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
enabled=1
EOL
```
### Add RabbitMQ to Your PATH
### 1.2 Install Packages
```
echo 'export PATH="/usr/local/sbin:$PATH"' >> ~/.zshrc
source ~/.zshrc # Reload your shell to apply changes
sudo yum install -y socat logrotate
sudo yum install -y erlang-25.3.2 rabbitmq-server-3.12.6
sudo systemctl enable --now rabbitmq-server
```
### install centos steps
https://github.com/jprorama/CRI_XCBC/blob/dev/roles/ohpc_rabbitmq/tasks/main.yaml
and the 2 vhosts
https://github.com/jprorama/CRI_XCBC/blob/dev/roles/ohpc_add_rabbitmq_agents/tasks/main.yaml
### Start RabbitMQ
## 2. RabbitMQ Configuration
### 2.1 Create Admin User & Permissions
```
brew services start rabbitmq
sudo rabbitmqctl add_user $RABBITMQ_USER $RABBITMQ_PASSWORD
sudo rabbitmqctl set_user_tags $RABBITMQ_USER administrator
sudo rabbitmqctl set_permissions -p / $RABBITMQ_USER ".*" ".*" ".*"
```
### Check RabbitMQ Status
### 2.2 Configure Celery Environment
```
rabbitmqctl status
sudo rabbitmqctl add_vhost $CELERY_VHOST
sudo rabbitmqctl add_user $CELERY_USER $CELERY_PASSWORD
sudo rabbitmqctl set_permissions -p $CELERY_VHOST $CELERY_USER ".*" ".*" ".*"
```
### Create Config File
## 3. Agent Service Setup
### 3.1 Deploy Agent Codebase
```
echo '[{rabbit, [{loopback_users, []}]}].' | sudo tee /etc/rabbitmq/rabbitmq.config
sudo chown rabbitmq:rabbitmq /etc/rabbitmq/rabbitmq.config
sudo chmod 644 /etc/rabbitmq/rabbitmq.config
AGENT_DIR="/cm/shared/rabbitmq_agents"
sudo git clone https://gitlab.rc.uab.edu/rc/rabbitmq_agents.git $AGENT_DIR
cd $AGENT_DIR
sudo git checkout main # Or specific commit/tag
```
### Restart Service
### 3.2 Configure Python Environment
```
sudo systemctl restart rabbitmq-server
sudo python3 -m venv $AGENT_DIR/venv
sudo $AGENT_DIR/venv/bin/pip install -r $AGENT_DIR/requirements.txt
```
### Access the Management UI
### 3.3 Create Agent Configuration
- **URL**: [http://localhost:15672](http://localhost:15672/)
- **Credentials**:
- Username: `guest`
- Password: `guest`
Create `$AGENT_DIR/rabbit_config.py` with:
```
# rabbit_config.py
host = 'localhost' # Or your cluster host
port = 5672
vhost = '$CELERY_VHOST' # Use actual vhost name
user = '$CELERY_USER' # Celery username
password = '$CELERY_PASSWORD'
```
### Add Vhost in **rabbit_config.py**
### 3.4 Systemd Service Setup
```
RABBITMQ = {
'HOST': 'localhost',
'PORT': 5672,
'VHOST': 'adduser',
'USER': 'reggie',
'PASSWORD': 'reggie'
}
sudo tee /etc/systemd/system/ood_account_agent.service <<'EOL'
[Unit]
Description=User Account Agent
After=rabbitmq-server.service
[Service]
Type=simple
User=root
WorkingDirectory=/cm/shared/rabbitmq_agents
ExecStart=/cm/shared/rabbitmq_agents/venv/bin/python agent_main.py
Restart=on-failure
Environment="PYTHONUNBUFFERED=1"
[Install]
WantedBy=multi-user.target
EOL
sudo systemctl daemon-reload
sudo systemctl enable --now ood_account_agent
```
### Add Celery Vhost
## 4. Network Configuration
### Disable Firewall (Testing Only)
```
rabbitmqctl add_vhost adduser
rabbitmqctl add_user reggie reggie
rabbitmqctl set_permissions -p adduser reggie ".*" ".*" ".*"
sudo systemctl stop firewalld
sudo systemctl disable firewalld
```
### WIP Configuration Steps
## 5. Validation & Testing
```
# Verify Services
systemctl is-active rabbitmq-server ood_account_agent
# Check RabbitMQ Users
sudo rabbitmqctl list_users
# Inspect Agent Logs
journalctl -u ood_account_agent -f --since "5m ago"
```
1. **Bind Queues to `RegUsr` Exchange**:
Use these routing keys:
- `request<queuename>`
- `completed<queuename>`
- `verify<queuename>`
_(Replace `<queuename>` with your queue’s name, e.g., `request_user_reg`)_
2. **Deploy Agents**:
- Run the Web UI (`self_reg_app`) for user submissions.
- Execute `create_account.py` to process tasks (e.g., UID assignment).
3. **Monitor Queues**:
Use RabbitMQ’s management UI or CLI tools to check:
- `task_manager` for workflow progress.
- `notify user` for delivery status of emails/SMS.
----------
## Error Handling
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment