Skip to content

Commit

Permalink
Merge "1.1.7 release and doc updates."
Browse files Browse the repository at this point in the history
  • Loading branch information
grafuls authored and gerritforge-ltd committed Feb 16, 2023
2 parents 857799d + 330e147 commit c18b3e5
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 103 deletions.
131 changes: 32 additions & 99 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ QUADS automates the future scheduling, end-to-end provisioning and delivery of b
* [QUADS Workflow](#quads-workflow)
* [QUADS Switch and Host Setup](#quads-switch-and-host-setup)
* [Installing QUADS](#installing-quads)
* [Installing QUADS with Docker Compose](#installing-quads-with-docker-compose)
* [Installing QUADS from Github](#installing-quads-from-github)
* [Installing QUADS from RPM](#installing-quads-from-rpm)
* [Installing other QUADS Components](#installing-other-quads-components)
* [QUADS Wiki](#quads-wiki)
* [Installing Wordpress via Ansible](#installing-wordpress-via-ansible)
* [Setup of Wordpress](#setup-of-wordpress)
* [Limit Page Revisions in Wordpress](#limit-page-revisions-in-wordpress)
* [QUADS Move Command](#quads-move-command)
* [Making QUADS Run](#making-quads-run)
Expand Down Expand Up @@ -101,7 +101,6 @@ QUADS automates the future scheduling, end-to-end provisioning and delivery of b
* Total duration and time remaining in system assignments
* Dynamic provisioning & system/network validation status per assignment
* Currently allocated/free optional publicly routable VLAN status
* ~~Granular Ansible facts inventory per server via [ansible-cmdb](https://github.com/fboender/ansible-cmdb)~~ (to be re-introduced in 1.1+)
- Query scheduling data to determine future availability
- Generates a per-month visualization map for per-machine allocations to assignments.
- RT (or similiar ticketing system) integration.
Expand Down Expand Up @@ -151,109 +150,19 @@ You can read about QUADS architecture, provisioning, visuals and workflow [in ou
- To ensure you have setup your network switches and bare-metal hosts properly please follow our [Switch and Host Setup Docs](/docs/switch-host-setup.md)

## Installing QUADS
- We offer Docker compose, RPM packages or a Git clone installation (for non RPM-based distributions, BSD UNIX, etc).
- It's recommended to use the Docker method as it requires less setup

### Installing QUADS with Docker Compose
- Clone the QUADS Github repository
```
git clone --single-branch --branch master https://github.com/redhat-performance/quads /opt/docker/quads
```
- Read through the [QUADS YAML configuration file](/conf/quads.yml) for other settings you way want.
- Make a copy of it and place it on the local filesystem of the Docker host outside the git checkout
```
mkdir -p /opt/quads/conf
cp /opt/docker/quads/conf/quads.yml /opt/quads/conf/quads.yml
```
- Make any changes required to your `/opt/quads/conf/quads.yml`
```
vi /opt/quads/conf/quads.yml
```
- Run docker-compose to bring up a full QUADS stack
```
docker-compose -f /opt/docker/quads/docker/docker-compose-production.yml up -d
```
- Access Quads Wiki via browser at `http://localhost` or `http://quads-container-host` to setup your Wiki environment.
- Run commands against containerized quads via docker exec

```
docker exec quads bin/quads-cli --define-cloud --cloud cloud01 --description cloud01
```

* Container Layout

| Container | Purpose | Source Image | Name |
|-----------|---------|--------------|----------------------|
| quads | quads server | Official Python3 Image | python:3 |
| quads_db | quads database | Official Mongodb Image | mongo:4.0.4-xenial |
| nginx | wiki proxy| Official Nginx Image | nginx:1.15.7-alpine |
| wiki | quads wiki | Official WP Image | wordpress:5.2.2-php7.2-fpm-alpine |
| wiki_db | wiki database | Official MariaDB Image | mariadb ||

We find it useful to create an alias on your quads container for executing quads-cli commands inside the container.

- On your docker host:
```
echo 'alias quads="docker exec -it quads bin/quads-cli"' >> ~/.bashrc
```

- e.g. creating an environment and adding hosts
```
quads --define-cloud --cloud cloud01 --description "spare pool"
quads --add-host --host host01 --default-cloud cloud01 --host-type general
```

### Installing QUADS from Github
This method requires you to satisfy all of your Python3 and library dependencies yourself and isn't recommended, however it probably is the only way to run QUADS on some platforms like FreeBSD. Substitute package names and methods appropriately.

- Clone the git repository (substitute paths below as needed)

```
git clone https://github.com/redhat-performance/quads /opt/quads
```
- Install pre-requisite Python packages
```
dnf install python3-requests python3-wordpress-xmlrpc python3-pexpect python3-paramiko ipmitool python3-cherrypy python3-mongoengine mongodb mongodb-server python3-jinja2 python3-passlib python3-PyYAML python3-requests python3-GitPython
```
- Install a webserver (Apache, nginx, etc)
```
dnf install httpd
```
- Create logging directory (you can edit this in ```conf/quads.yml``` via the ```log:``` parameter).
```
mkdir -p /opt/quads/log
```
- Create your visualization web directory (you can configure this in ```conf/quads.yml``` via ```visual_web_dir```)
```
mkdir -p /var/www/html/visual
```
- Read through the [QUADS YAML configuration file](/conf/quads.yml) for other settings you way want.
```
vi /opt/quads/conf/quads.yml
```
- Enable and start the QUADS systemd service (daemon)
- Note: You can change QUADS ```quads_base_url``` listening port in ```conf/quads.yml``` and use the ```--port``` option
```
cp /opt/quads/systemd/quads-server.service /etc/systemd/system/quads-server.service
systemctl daemon-reload
systemctl enable quads-server.service
systemctl start quads-server.service
```
- Note: You can use QUADS on non-systemd based Linux or UNIX distributions but you'll need to run ```/opt/quads/bin/quads-server``` via an alternative init process or similiar functionality.
- We support modern Fedora OS distributions using RPM packages.
- While we will provide Docker/container files this is more for CI testing and isn't recommended or properly maintained for production deployments.

### Installing QUADS from RPM
- We build RPM packages for Fedora and CentOS/RHEL 8
- We build RPM packages for the Fedora distribution.
- On Fedora 30 and above you'll need to manually install mongodb first, see [installing mongodb for QUADS](docs/install-mongodb.md)
- On Fedora 30 and above it is necessary to install `python3-wordpress-xmlrpc` as it is not included anymore

```
wget https://funcamp.net/w/python3-wordpress-xmlrpc-2.3-13.fc29.noarch.rpm
rpm -ivh --nodeps python3-wordpress-xmlrpc-2.3-13.fc29.noarch.rpm
rpm -ivh --nodeps https://funcamp.net/w/python3-wordpress-xmlrpc-2.3-14.noarch.rpm
```
This package is also available via `pip` via `pip install python-wordpress-xmlrpc`

- On RHEL/CentOS 8 you'll need to install MongoDB first via `dnf install mongodb mongodb-server`
- On RHEL/CentOS 8 you'll also need to satisfy `python3-paramiko` RPM package from somewhere as it's been removed from EL8 in lieu of `libssh`

* Once you have mongodb installed and running you can install/upgrade QUADS via RPM.

Expand Down Expand Up @@ -303,10 +212,34 @@ echo 'alias quads="quads-cli"' >> /root/.bashrc
```

### Installing other QUADS Components

#### QUADS Wiki
- There is also a Wordpress Wiki [VM](https://github.com/redhat-performance/ops-tools/tree/master/ansible/wiki-wordpress-nginx-mariadb) QUADS component that we use a place to automate documentation via a Markdown to Python RPC API but any Markdown-friendly documentation platform could suffice. Note that the container deployment sets this up for you.
- The Wiki component for QUADS is currently Wordpress, though in 2.x we'll be moving everything to Flask.
- Please use **Red Hat, CentOS Stream or Rocky 8** for the below Wordpress component.
- Wordpress needs to be on it's **own VM/server** as a standalone component.
- [Wordpress](https://github.com/redhat-performance/ops-tools/tree/master/ansible/wiki-wordpress-nginx-mariadb) provides a place to automate documentation and inventory/server status via the Wordpress Python RPC API.

##### Installing Wordpress via Ansible
- You can use our Ansible playbook for installing Wordpress / PHP / PHP-FPM / nginx on a Rocky8, RHEL8 or CentOS8 Stream standalone virtual machine.
- First, clone the repository
```
git clone https://github.com/redhat-performance/ops-tools
cd ansible/wiki-wordpress-nginx-mariadb
```
- Second, add the hostname or IP address of your intended Wiki/Wordpress host replacing `wiki.example.com` with your host in the `hosts` file.
```
# cat hosts
[wordpress_server]
wiki.example.com
```
- Third, run Ansible to deploy. You might take a look at `group_vars/all` for any configuration settings you want to change first.
```
ansible-playbook -i hosts site.yml
```
##### Setup of Wordpress
- You'll then simply need to create an `infrastructure` page and `assignments` page and denote their `page id` for use in automation. This is set in `conf/quads.yml`
- We also provide the `krusze` theme which does a great job of rendering Markdown-based tables, and the `JP Markdown` plugin which is required to upload Markdown to the [Wordpress XMLRPC Python API](https://hobo.house/2016/08/30/auto-generating-server-infrastructure-documentation-with-python-wordpress-foreman/). The `Classic Editor` plugin is also useful. All themes and plugins can be activated from settings.
- We also provide the [krusze theme](/docker/etc/wordpress/themes/krusze.0.9.7.zip) which does a great job of rendering Markdown-based tables, and the [JP Markdown plugin](/docker/etc/wordpress/plugins/jetpack-markdown.3.9.6.zip) which is required to upload Markdown to the [Wordpress XMLRPC Python API](https://hobo.house/2016/08/30/auto-generating-server-infrastructure-documentation-with-python-wordpress-foreman/). The `Classic Editor` plugin is also useful. All themes and plugins can be activated from settings.

##### Limit Page Revisions in Wordpress
- It's advised to set the following parameter in your `wp-config.php` file to limit the amount of page revisions that are kept in the database.
- Before the first reference to `ABSPATH` in `wp-config.php` add:
Expand Down
2 changes: 1 addition & 1 deletion conf/quads.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ ircbot_port: 5050
ircbot_channel: #yourchannel

# support for sending webhook notifications on assignment release
webhook_notify: true
webhook_notify: false
webhook_url: https://chat.example.com/v1/spaces/AAABBBCCC

# wordpress wiki
Expand Down
2 changes: 1 addition & 1 deletion quads/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ def API_URL(self):

FPING_TIMEOUT = 10000

QUADSVERSION = "1.1.6"
QUADSVERSION = "1.1.7"
QUADSCODENAME = "gaúcho"

SUPPORTED = [
Expand Down
12 changes: 10 additions & 2 deletions rpm/quads.spec
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

%define name quads-dev
%define reponame quads
%define version 1.1.6
%define version 1.1.7
%define build_timestamp %{lua: print(os.date("%Y%m%d"))}

Summary: Automated future scheduling, documentation, end-to-end provisioning and assignment of servers and networks.
Expand Down Expand Up @@ -43,13 +43,13 @@ Requires: python3-flask >= 1.0
Requires: python3-flask-bootstrap >= 3.3.7.1
Requires: python3-flask-wtf >= 0.12
Requires: python3-wtforms >= 2.2.0
Requires: python3-wordpress-xmlrpc >= 2.2
Requires: python3-pexpect >= 4.2
Requires: python3-ipdb >= 0.10
Requires: python3-argcomplete >= 1.9.5
Requires: haveged >= 1.8
Requires: python3-GitPython >= 2.0
Requires: logrotate >= 3.0
AutoReq: no

Url: https://quads.dev

Expand Down Expand Up @@ -130,6 +130,14 @@ fi;

%changelog

* Wed Feb 08 2023 Will Foster <[email protected]>
- 1.1.7 release
- no-op network moves for move-and-rebuild
- lshw2meta / lshw hardware metadata gathering tool
- many, many fixes
- several other features
- this will be the last 1.1 series release

* Thu Feb 03 2022 Will Foster <[email protected]>
- 1.1.6 release
- added jira token auth
Expand Down

0 comments on commit c18b3e5

Please sign in to comment.