# FAQ

> frequently asked questions
---

## How to configure NTP service?

> If NTP is not configured, use a public NTP service or sync time with the admin node.

If your nodes already have NTP configured, you can leave it there by setting `node_ntp_enabled` to `false`.

Otherwise, if you have Internet access, you can use public NTP services such as `pool.ntp.org`.

If you don’t have Internet access, at least you can sync time with the admin node with the following:

```bash
node_ntp_servers:                 # NTP servers in /etc/chrony.conf
  - pool cn.pool.ntp.org iburst
  - pool ${admin_ip} iburst       # assume non-admin nodes do not have internet access
```

------

## How to force sync time on nodes?

Use `chronyc` to sync time. You have to configure the NTP service first.

```bash
ansible all -b -a 'chronyc -a makestep'     # sync time
```

You can replace `all` with any group or host IP address to limit execution scope.

------

## Remote nodes are not accessible via SSH commands.

Consider using [**Ansible connection parameters**](https://docs.ansible.com/ansible/latest/inventory_guide/connection_details.html) if the target machine is hidden behind an SSH springboard machine, or if some customizations have been made that cannot be accessed directly using `ssh ip`. Additional SSH ports can be specified with `ansible_port` or `ansible_host` for SSH Alias.

```bash
pg-test:
  vars: { pg_cluster: pg-test }
  hosts:
    10.10.10.11: {pg_seq: 1, pg_role: primary, ansible_host: node-1 }
    10.10.10.12: {pg_seq: 2, pg_role: replica, ansible_port: 22223, ansible_user: admin }
    10.10.10.13: {pg_seq: 3, pg_role: offline, ansible_port: 22224 }
```

------

## Password required for remote node SSH and SUDO

**When performing deployments and changes**, the admin user used **must** have `ssh` and `sudo` privileges for all nodes. Password-free is not required.

You can pass in ssh and sudo passwords via the `-k|-K` parameter when executing the playbook or even use another user to run the playbook via `-e`[`ansible_host`](/docs/prepare/admin#using-alias)`=<another_user>`. However, Pigsty strongly recommends configuring SSH **passwordless login** with passwordless `sudo` for the admin user.

------

## Create an admin user with the existing admin user.

This will create an admin user specified by [`node_admin_username`](/docs/node/param#node_admin_username) using the existing admin user on that node.

```bash
./node.yml -k -K -e ansible_user=<another_admin> -t node_admin
```

------

## Exposing node services with HAProxy

You can expose service with [`haproxy_services`](/docs/node/param#haproxy_services) in `node.yml`.

And here’s an example of exposing MinIO service with it: [Expose MinIO Service](/docs/minio/config#expose-service)

------

## Why my nodes /etc/yum.repos.d/* are nuked?

Pigsty will try to include all dependencies in the local yum repo on infra nodes. This repo file will be added according to [`node_repo_modules`](/docs/node/param#node_repo_modules). And existing repo files will be removed by default according to the default value of [`node_repo_remove`](/docs/node/param#node_repo_remove). This will prevent the node from using the Internet repo or some stupid issues.

If you want to keep existing repo files during node init, just set [`node_repo_remove`](/docs/node/param#node_repo_remove) to `false`.

If you want to keep existing repo files during infra node local repo bootstrap, just set [`repo_remove`](/docs/infra/param#repo_remove) to `false`.

------

## Why my shell prompt change and how to restore it?

The pigsty prompt is defined with the environment variable `PS1` in `/etc/profile.d/node.sh`.

To restore your existing prompt, just remove that file and login again.

------

## Tencent OpenCloudOS Compatibility Issue

OpenCloudOS does not have softdog module, overwrite [`node_kernel_modules`](/docs/node/param#node_kernel_modules) on global vars:

```yaml
node_kernel_modules: [ ip_vs, ip_vs_rr, ip_vs_wrr, ip_vs_sh ]
```
