Configurable Settings - Server on Linux VM



How to apply changes to the Server environment

Changes in the server-installation.yaml can be applied by running the install.sh script or the upgrade.sh script. Note that re-running the install.sh script will delete any database information that would have been stored previously.


Required fields in server-installation.yaml

Variable Name
Key Value
Explanation of the Variable and Key Values
server.host
String The server.host value needs to start with http:// or https://. The value can be an IP Address or a FQDN. This value needs to match the URL that Developers will use in a browser to access this server.
server.org_name
String Used as an identifier for the Organization using vFunction
server.admin.email
String Accepted characters include A-Z a-z 0-9 . _ % + - @
server.admin.name
String Used an an identifier for the logged in user in the vFunction Server UI
server.admin.password
String Used for the Admin as the password for first logging into the Server UI. The Admin can then change the password from the Server UI if desired. Minimum requirements: 8 characters, lower & uppercase letter, number and a special character ! @ # $ % ^ &

Sample server-installation.yaml with required fields

server:
  host: http://10.0.0.143
  org_name: myAppName
  admin:
    email: charlotte.lee@mycompany.com
    name: Charlotte Lee
    password: c0mpleX!
  smtp:
  authentication:
  tls:
storage:
measurements:
  S3:
networking:
security:
backup:
  mysql:
    S3:
logging:
monitoring:
  custom_labels:

Optional fields in server-installation.yaml


backend.custom_<container>_service_port
Server-Installation.yaml Configuration
Details
backend:
   custom_vfapi_idp_service_port: 10001
   custom_mysql_service_port: 10002
   custom_vfapi_users_service_port: 10003
   custom_vfapi_organizations_service_port: 10004
   custom_vfapi_measurements_service_port: 10005
   custom_vfapi_parser_service_port: 10006

The ports used to communicate with each vFunction Container can be customized as needed. The following details outline the default ports:

  • vfapi-idp = 8005
  • vfapi-measurements = 8003
  • vfapi-organizations = 8001
  • vfapi-parser = 8002
  • vfapi-users = 8004
  • mysql = 3306

backup.mysql.S3
Installation.yaml Configuration
Details
backup:
   mysql:
      S3:
         bucket: "awsBucket"
         key: "awsKey"
         secret:"awsSecret"
         region: "awsRegion"
  • The MySQL DB Persistent Volume can be backed up to an AWS S3 bucket if desired

logging.syslog
Installation.yaml Configuration
Details
logging:
   syslog:
      server_host: syslogHost
      server_port: 514
  • Set the logging.syslog.server_host and logging.syslog.server_port to stream logs to an organization's existing syslog server
  • To enable this feature, logging.use_fluentd must remain commented out or must be set to true

logging.use_fluentd
Installation.yaml Configuration
Details
logging:
   use_fluentd: false
  • By default, this field is commented out. With it commented out, the value is set to TRUE
  • Uncommenting this key and value and setting the value to FALSE will ensure that the fluentd driver is not used to fetch the vFunction Server Docker Container logs. Setting the value to FALSE ensures that the logs are not centralized under one filesystem folder
  • If disabled, all logs can still be retrieved via "docker logs" commands for each container

measurements.S3

monitoring.custom_labels
Server-Installation.yaml Configuration
Details
monitoring:
   custom_labels:
      - "OwnerContact=charlotte.lee@mycompany.com"
      - "TeamName=vFunctionAppModernization"
  • Used for adding specific details into a Container such as the Container's Owner for security scans
  • The Docker Container will be started with the command:
    docker run --name vfunction-monit --label key1=value1 --label key2=value2

monitoring.use_monit
Installation.yaml Configuration
Details
monitoring:
   use_monit: false
  • By default, this field is commented out. With it commented out, the value is set to TRUE
  • Uncommenting this key and value and setting the value to FALSE will ensure that the vFunction Monit Container is not started for health checking, and reviving when needed, the other vFunction Server Containers
  • If disabled, the best way to revive the system is to run upgrade.sh again

networking.bind_nginx_host_ip

networking.disable_ipv6
Server-Installation.yaml Configuration
Details
networking:
   disable_ipv6: true
  • Used when IPv6 is disabled for the Docker Network

security.custom_containers_user
Server-Installation.yaml Configuration
Details
security:
   custom_containers_user: "1501:1501"
  • Used to define a specific User ID and Group ID that will run the Docker Containers
  • To see the users under which the Docker Containers are run:
    docker inspect $(docker ps -q) --format '{(.Config.User)} {(.Name)}'

security.custom_docker_binary_path

security.custom_network
Server-Installation.yaml Configuration
Details
security:
   custom_network: customNetwork
  • By default, the installer creates a network called vFunction for communication between Containers
  • To list all the networks for the Docker Containers, run:
    docker network ls

security.custom_security_options
Server-Installation.yaml Configuration
Details
security:
   custom_security_options: "--security-opt seccomp=/path/to/seccomp/profile.json --cap-drop=all"
  • By default, the Docker containers run with the security option:
    "--security-opt no-new-privileges --cap-drop=all"

server.authentication
Server-Installation.yaml Configuration
Details
server:
   authentication:
      authority: https://accounts.google.com
      client_id: clientID-xyz
      client_secret: clientSecret-xyz
      jwks_url: https://www.googleapis.com/oauth2/v3/certs
      issuer: https://accounts.google.com
  • By default, a vFunction Server allows users to authenticate with a built-in OAuth username and password workflow
  • The authentication subkey is used to change the authentication workflow from this built-in OAuth username and password to integrate with an OpenID Connect identity provider

server.smtp
Server-Installation.yaml Configuration
Details
server:
   smtp:
      user: notifications@mycompany.com
      password: my$uperS3cr3t
      identity:
      url: smtp://smtp.gmail.com:587
  • The vFunction Server can send notifications about upgrades, about Architectural Observability Events and about user onboarding
  • The vFunction Server uses SMTP AUTH (RFC 2554) to send email messages

server.tls.use_lets_encrypt

storage.database
Server-Installation.yaml Configuration
Details
storage:
   database: /home/USERNAME/vfunction/db/
  • By default, the vFunction Server creates a 50gb Docker Volume for database storage in:
    - Docker: /var/lib/docker/volumes/mysql_vol/
    - Podman: $HOME/.local/share/container/storage/volumes/mysql_vol/
  • Use this field to move the database volume storage field to another location where there is more space
  • Docker: You will need to change the ownership on the directory you use to 999:999, e.g. chown -R 999:999 /home/USERNAME/vfunction_docker/db/
  • Docker: Alternatively, move the Docker Root Directory to change the location of the Docker Volumes
  • Podman / UBI: You will need to change the ownership on the directory you use to $SUBUID+27:$SUBGID+27, e.g. chown -R 10027:10027 /home/USERNAME/vfunction_podman/db/
  • Podman: Alternatively, move the Podman Storage Root Directory to change the location of the Podman Volumes

storage.dm
Server-Installation.yaml Configuration
Details
storage:
   dm: /home/USERNAME/vfunction/dm/

storage.measurements
Server-Installation.yaml Configuration
Details
storage:
   measurements: /home/USERNAME/vfunction/measurements/
  • By default, the vFunction Server creates a 50gb Docker Volume for measurement storage in:
    - Docker: /var/lib/docker/volumes/vfapi_measurements_storage_vol/
    - Podman: $HOME/.local/share/container/storage/volumes/vfapi_measurements_storage_vol/
  • Use this field to move the measurements volume storage field to another location where there is more space
  • Docker: You will need to change the ownership on the directory you use to 1500:1500, e.g. chown -R 1500:1500 /home/USERNAME/vfunction/measurements/
  • Docker: Alternatively, move the Docker Root Directory to change the location of the Docker Volumes
  • Podman / UBI: Additionally, you will need to change the ownership on the directory you use to $SUBUID+1500:$SUBGID+1500, e.g. chown -R 11500:11500 /home/USERNAME/vfunction_podman/measurements/
  • Podman: Alternatively, move the Podman Storage Root Directory to change the location of the Podman Volumes