# Environment Preparation
> Requirement
> Operating system:centos8.x
## Libc Requirement
```shell
ls -l /lib64/libc.so.6
"""
/lib64/libc.so.6 -> libc-2.28.so
"""
```
Determine the main operating IP, and all Ansible deployment operations will be performed on the main operating IP. In this example, the main operating IP is 172.20.3.200.
## Set up passwordless sudo login for non-sudo users
If the password is the same for each machine and the root username and password are used in inventory/hosts, then this step is not necessary.
```shell
vim /etc/sudoers
"""
dingo ALL=(ALL) NOPASSWD:ALL
"""
```
## Passwordless login using IP address
If the password is the same for each machine and the root username and password are used in inventory/hosts, then the following steps are not necessary.
1. Generate SSH public and private keys
```shell
ssh-keygen -f ~/.ssh/id_rsa -N '' -t rsa -q -b 2048
```
2. Copy the public key to all host nodes, including the local node
```shell
ssh-copy-id root@ip
ssh-copy-id root@ip
ssh-copy-id root@ip
```
3. Test if passwordless login is successful
```shell
ssh root@ip
```
## Directory Structure Planning
| Directory Types | Path |
|--------------------------------------------------------------------------------|:-------------------------------------------|
| Program installation path | ${installer_root_path} |
| Data path | ${installer_root_path}/data |
| Log path | ${installer_root_path}/log |
| dingo-store script path | ${installer_root_path}/dingo-store/scripts |
| dingo-store deployment path
(including separate data and log directories) | ${installer_root_path}/dingo-store/dist |
## User group planning
| Deployment Method | User name | Gorup name |
|-------------------|-----------|------------|
| ansible deploy | dingodb | dingodb |
## Component list and port usage
| Component | Version | Port | Remarks |
|------------------|---------|--------------------------------------------------------------------|---------------------------------------------------------------------|
| DingoDB | 0.6.0 | raft:22101/20101
server:22001/20001
executor:3307/8765 | Real-time analytics database |
| Prometheus | 2.14.0 | 19115 | Real-time analytics databaseTime-series database, metric monitoring |
| node_exporter | 0.18.1 | 19100 | Prometheus component, monitoring node information |
| process_exporter | 0.7.10 | 19090 | Prometheus component, monitoring process information |
| grafana | 8.3.3 | 3000 | Data visualization platform |
## Ansible install
### Online install
```shell
#Ensure that Python environment is installed on each machine using Python 3
#Install Ansible on the main IP, if it is not already installed.
pip3 install pip -U
pip3 install ansible==2.9.27 # Install with fixed version number, non-mandatory
pip3 install pyopenssl -U
```
### Offline machine install
```shell
# Preparation of files:
wget -r -nH http://ip:9000 # Download all required package files with one click
ansible_installer_centos8.sh Place the files separately and proceed with Ansible installation
Place other files in the deployment package dingo-deploy/artifacts directory
# Installing Ansible requires root user
bash ansible_installer_centos8.sh # This needs to be executed on all three machines to ensure that the path to Python 3 is consistent on each machine
#Note to modify inventory/hosts before deployment
ansible_python_interpreter=/usr/local/miniconda3/bin/python
# Replace all Ansible and Python commands below with full path, for example:
/usr/local/miniconda3/bin/ansible-playbook playbook.yml
```