Pulse-IT/Automate-IT for Docker
- Pulse-IT/Automate-IT for Docker
- Installation
Requirements To install Pulse-IT/Automate-IT for Docker, you will need:
- A server running a Linux of your choice and with Docker/Docker compose installed
- 32 Go Ram minimum. You may need more memory if you have several workers or schedulers running
- 250 Go Hard Drive
- Access to a shared storage (R/W).
- Following ports open for inbound traffic:
- 80 (only if you allow http access, not recommended): http
- 443: https
- 22: ssh
- 5672: rabbitMQ from server to worker both ways
- 5671: SSL rabbitMQ from server to worker both ways
Note The following documentation is applicable to both Pulse-IT and Automate-IT, as they share the same Docker setup.
Installation
Preparation steps
Docker installation on CentOS, Redhat, Amazon Linux
$> sudo yum install docker
$> sudo service docker start
$> sudo usermod -a -G docker $(whoami)
$> sudo chkconfig docker on
$> sudo yum install -y git
$> sudo reboot
Download docker-compose from Github
$> wget https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)
$> sudo mv docker-compose-$(uname -s)-$(uname -m) /usr/local/bin/docker-compose
$> sudo chmod -v +x /usr/local/bin/docker-compose
Docker installation on Rocky Linux
$> sudo dnf check-update
$> sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
$> sudo dnf install docker-ce docker-ce-cli containerd.io
$> sudo systemctl start docker
$> sudo systemctl enable docker
$> sudo usermod -aG docker $(whoami)
$> exit
Exit And reconnect
Login into Embrace Docker repository
$ docker login -u embracecustomer
pwd:
Install Pulse-IT/Automate-IT
Prepare installer
- Copy the installer in a folder of your choice
- Unzip the installer
unzip <installer>.zip
- Enter into installer folder
- add execute permission to embrace-app.sh
chmod +x embrace-app.sh
Install Pulse-IT/Automate-IT
$> ./embrace-app.sh
Create a superuser for Pulse-IT/Automate-IT
$> ./embrace-app.sh --createsuperuser
Follow instruction to create superuser
Access Pulse-IT/Automate-IT from your browser
To access the Pulse-IT/Automate-IT Web UI, open a web browser and navigate to:
http://<your-server-ip>:80
Import your Pulse-IT/Automate-IT licence
- Go to Administrator > License menu
- Import your license by clicking the "Import License" button
The embrace-app.sh helper script
Your installation folder contain a helper script. Without any option, the script will execute docker-compose up command
Options available:
=============================================================
Embrace Utility Script
=============================================================
Usage ./embrace-app.sh [options]
Options:
--help, -h display this usage message
--restart restart Embrace application
--createsuperuser create super user
--down stop and remove application containers
--upgrade upgrade existing installation
--status get containers status
--use-external-db use external database (Database won't be created and managed by this script)
--use-external-services use external database, RabbitMQ and Redis (Database, RabbitMQ and Redis won't be created and managed by this script)
--migrate-to-ssl enable SSL encryption on nginx. Your SSL certificate and key should be specified at conf/nginx/nginx-ssl.conf and specified to be mounted on compose-local.yml
--default-shared-storage <mountPath> specify a storage to mount when starting app. This option is required for no input install.
--mount-volume <mountPath> mount a volume shared between the host and containers.
--connector-name <connector_name> specify a connector name to create when mounting a volume
--skip-create-connector do not ask for a connector name to create when mounting a volume.
Examples:
Install the app without requesting user input for default shared storage
./embrace-app.sh --default-shared-storage /mnt/sharing
Mount a storage at /mnt/sharing for shared usage between the host and app container:
./embrace-app.sh --mount-volume /mnt/sharing
Mount storage at /mnt/sharing and create a file connector with a name:
./embrace-app.sh --mount-volume /mnt/sharing --connector-name shared_storage
Sample usage
$> ./embrace-app.sh
Note: docker version: 26.0.1
Note: Docker Compose version v2.26.1
Note: App version: 4.0-2140
[Step 0]: Checking running embrace installation...
✔ No running embrace installation found
[Step 1]: Checking database volume
✔ embrace-postgres-volume: ok
[Step 2]: Checking network
Error response from daemon: network with name embrace-internal already exists
✔ : ok
[Step 3]: Starting Embrace application...
[+] Running 12/12
✔ Container pulse-it-40-2140-04301630-docker-postgres-1 Healthy 0.1s
✔ Container pulse-it-40-2140-04301630-docker-logrotate-1 Started 0.1s
✔ Container pulse-it-40-2140-04301630-docker-redis-1 Healthy 0.1s
✔ Container pulse-it-40-2140-04301630-docker-rabbitmq-1 Healthy 0.1s
✔ Container pulse-it-40-2140-04301630-docker-pre_initialize_app-1 Exited 0.1s
✔ Container pulse-it-40-2140-04301630-docker-migration_app-1 Exited 0.1s
✔ Container pulse-it-40-2140-04301630-docker-app-1 Healthy 0.0s
✔ Container pulse-it-40-2140-04301630-docker-celery-beat-1 Started 0.1s
✔ Container pulse-it-40-2140-04301630-docker-remote-debugger-bridge-1 Started 0.1s
✔ Container pulse-it-40-2140-04301630-docker-nginx-1 Started 0.1s
✔ Container pulse-it-40-2140-04301630-docker-celery-2 Started 0.1s
✔ Container pulse-it-40-2140-04301630-docker-celery-1 Started 0.1s
[Step 4]: Ensure default storage exists
Starting app...
A shared storage location is required between the server and worker.
Enter the path to the shared storage:
A shared storage location must be accessible to both the server and the worker. The utility script prompts you to provide a shared storage path. Please input a valid shared storage path and press enter to confirm. Upon validation, the utility script proceeds to initiate the application:
Enter the path to the shared storage: /mnt/sharing
Mounting volume /mnt/sharing
System shared storage /mnt/sharing successfully mounted.
Connector with name system_media_selector successfully created
[+] Stopping 2/2
✔ Container pulse-it-40-2140-04301630-docker-nginx-1 Stopped 10.5s
✔ Container pulse-it-40-2140-04301630-docker-app-1 Stopped 10.2s
Going to remove pulse-it-40-2140-04301630-docker-nginx-1, pulse-it-40-2140-04301630-docker-app-1
[+] Removing 2/0
✔ Container pulse-it-40-2140-04301630-docker-app-1 Removed 0.0s
✔ Container pulse-it-40-2140-04301630-docker-nginx-1 Removed 0.1s
[+] Running 2/2
✔ Container pulse-it-40-2140-04301630-docker-app-1 Healthy 0.1s
✔ Container pulse-it-40-2140-04301630-docker-nginx-1 Started 0.0s
✔ ---- Application started successfully.----
Note:
The pre_initialize_app and migration_app services are currently in an existing state.
They execute an initialization task and then terminate.
These services are launched at the beginning of the application and exit when completing their tasks.
The compose-local.yml file
# Use this file to add custom configuration for services
# Each configuration in this file will override docker-compose.yml configurations
services:
app:
volumes: []
File Connectors and volume mapping
Let say you have a host mounted shared point on /mnt/sharing and that you want to have it available in Pulse-IT
Run the utility script with option --mount-volume
$> ./embrace-app.sh --mount-volume /mnt/sharing
The utility will prompt you to indicate whether you wish to create a file connector linked to this storage. Upon confirmation, you will be required to input a name for the file connector.
$> ./embrace-app.sh --mount-volume /mnt/sharing
Mounting volumes
Starting app...
Volume already mounted at /mnt/sharing
Define a connector name for /mnt/sharing: sharing
Connector with name sharing successfully created
[+] Stopping 1/1
✔ Container pulse-it-40-2133-04221653-docker-app-1 Stopped 10.4s
Going to remove pulse-it-40-2133-04221653-docker-app-1
[+] Removing 1/0
✔ Container pulse-it-40-2133-04221653-docker-app-1 Removed 0.0s
[+] Running 12/12
✔ Container pulse-it-40-2133-04221653-docker-rabbitmq-1 Healthy 0.0s
✔ Container pulse-it-40-2133-04221653-docker-redis-1 Healthy 0.0s
✔ Container pulse-it-40-2133-04221653-docker-postgres-1 Healthy 0.0s
✔ Container pulse-it-40-2133-04221653-docker-migration_app-1 Exited 0.0s
✔ Container pulse-it-40-2133-04221653-docker-logrotate-1 Running 0.0s
✔ Container pulse-it-40-2133-04221653-docker-pre_initialize_app-1 Exited 0.0s
✔ Container pulse-it-40-2133-04221653-docker-app-1 H... 0.2s
✔ Container pulse-it-40-2133-04221653-docker-nginx-1 Running 0.0s
✔ Container pulse-it-40-2133-04221653-docker-celery-1 Running 0.0s
✔ Container pulse-it-40-2133-04221653-docker-celery-2 Running 0.0s
✔ Container pulse-it-40-2133-04221653-docker-remote-debugger-bridge-1 Running 0.0s
✔ Container pulse-it-40-2133-04221653-docker-celery-beat-1 Running 0.0s
Your directory will be accessible within the container at /mnt/sharing, and a new file connector named "sharing" will be generated.
To specify a file connector name as an option in the utility script, use the following command:
$> ./embrace-app.sh --mount-volume /mnt/sharing --connector-name sharing
The utility script will generate a file connector automatically, without requiring input for the connector name.
To mount a volume without creating a connector, simply utilize the --skip-create-connector option.
$> ./embrace-app.sh --mount-volume /mnt/sharing --skip-create-connector
Upgrading a Pulse-IT server
- copy the installer to your server
- run the embrace-app.sh script
./embrace-app.sh --upgrade
- Enjoy
Installing Pulse-IT using external database such as RDS
Require PostgreSQL 16.x external database
- copy the installer to your server
- edit .local.env
- specify database host and credentials
DATABASE_HOST=postgres
DATABASE_PORT=5432
DATABASE_NAME=ait_factory
DATABASE_USER=ait
DATABASE_PASSWORD=
DATABASE_AWS_SECRET=
- run the embrace-app.sh script using the --external-db option
Installing Pulse-IT using external services configuration
(ex: using RDS, AmazonMQ and AWS Redis )
Require
PostgreSQL 16.x external database (ex: PostgreSQL RDS database)
RabbitMQ 3.12.x (ex: AmazonMQ)
Redis 6.2.x (ex: AWS Elasticache for Redis)
Beware: AWS Elasticache for Redis with cluster mode enabled is not supported
- copy the installer to your server
- edit .local.env
- specify database host and credentials
DATABASE_HOST=postgres
DATABASE_PORT=5432
DATABASE_NAME=ait_factory
DATABASE_USER=ait
DATABASE_PASSWORD=
DATABASE_AWS_SECRET=
- specify Redis host and credentials
# Define BROKER_URL OR define exploded configuration BROKER_xx
BROKER_URL=redis://localhost:6379/0
# OR
BROKER_HOST = localhost
BROKER_PORT = 5672
- edit specify redis host
CHANNEL_LAYER_HOST=redis
CHANNEL_LAYER_PORT=6379
- run the embrace-app.sh script using the --use-external-services option
Configuring Pulse-IT for SSL
1.Update the .local.env File
Add the Pulse-IT host address to the .local.env file:
CSRF_TRUSTED_ORIGINS="https://pulse-it.example.com"
2.Copy your own SSL certificate and key (optional):
You can use your own SSL certificate and key, instead of the self-signed certificates provided with Pulse-IT/Automate-IT.
To proceed, copy your SSL certificate and key files into the conf/certs directory, naming them factory-cert.pem and factory-key.pem, respectively.
3.Run the embrace-app.sh script using the --migrate-to-ssl option
$> ./embrace-app.sh --migrate-to-ssl