Skip to content

Terraform module for creating a Chatwoot customer engagement suite using Fedora CoreOS, and Libvirt.

Notifications You must be signed in to change notification settings

krestomatio/terraform-libvirt-fcos-chatwoot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Terraform module for creating a Chatwoot customer engagement suite using Fedora CoreOS, and Libvirt.

Dependencies

The following are the dependencies to create the VM with this module:

Requirements

Name Version
terraform >= 1.2.0
ct 0.11.0
libvirt ~> 0.7

Providers

Name Version
template n/a

Modules

Name Source Version
butane_snippet_install_certbot krestomatio/butane-snippets/ct//modules/certbot 0.0.12
chatwoot krestomatio/fcos/libvirt 0.0.28

Resources

Name Type
template_file.butane_snippet_install_chatwoot data source

Inputs

Name Description Type Default Required
additional_rpms Additional rpms to install during boot using rpm-ostree, along with any pre or post command
object(
{
cmd_pre = optional(list(string), [])
list = optional(list(string), [])
cmd_post = optional(list(string), [])
}
)
{
"cmd_post": [],
"cmd_pre": [],
"list": []
}
no
autostart Autostart with libvirt host bool null no
backup_volume_pool Node default backup volume pool string null no
backup_volume_size Node default backup volume size in bytes number null no
butane_snippets_additional Additional butane snippets list(string) [] no
certbot Certbot config
object(
{
agree_tos = bool
staging = optional(bool)
email = string
http_01_port = optional(number)
}
)
null no
chatwoot_envvars Environment variables for chatwoot map(string) n/a yes
chatwoot_image Chatwoot container image
object(
{
name = optional(string, "docker.io/chatwoot/chatwoot")
version = optional(string, "latest")
}
)
{
"name": "docker.io/chatwoot/chatwoot",
"version": "latest"
}
no
cidr_ip_address CIDR IP Address. Ex: 192.168.1.101/24 string null no
cpu_mode Libvirt default cpu mode for VMs string null no
data_volume_pool Node default data volume pool string null no
data_volume_size Node default data volume size in bytes number null no
etc_hosts /etc/host list
list(
object(
{
ip = string
hostname = string
fqdn = string
}
)
)
null no
etc_hosts_extra /etc/host extra block string null no
external_fqdn FQDN to access Chatwoot mail string n/a yes
fqdn Node FQDN string n/a yes
ignition_pool Default ignition files pool string null no
interface_name Network interface name string null no
keymap Keymap string null no
log_volume_pool Node default log volume pool string null no
log_volume_size Node default log volume size in bytes number null no
mac Mac address string null no
machine The machine type, you normally won't need to set this unless you are running on a platform that defaults to the wrong machine type for your template string null no
memory Node default memory in MiB number 512 no
nameservers List of nameservers for VMs list(string) null no
network_bridge Libvirt default network bridge name for VMs string null no
network_id Libvirt default network id for VMs string null no
network_name Libvirt default network name for VMs string null no
nginx_command Nginx container command list(string) [] no
nginx_cpus_limit Number of CPUs to limit the nginx container number 0 no
nginx_envvars Environment variables for nginx map(string) {} no
nginx_image Nginx container image
object(
{
name = optional(string, "docker.io/nginx")
version = optional(string, "1.25")
}
)
{
"name": "docker.io/nginx",
"version": "1.25"
}
no
nginx_memory_limit Amount of memory to limit the nginx container string "" no
nginx_server_conf Nginx server.conf. If not set, a default server.conf is used string null no
periodic_updates Only reboot for updates during certain timeframes
{
time_zone = "localtime"
windows = [
{
days = ["Sat"],
start_time = "23:30",
length_minutes = "60"
},
{
days = ["Sun"],
start_time = "00:30",
length_minutes = "60"
}
]
}
object(
{
time_zone = optional(string, "")
windows = list(
object(
{
days = list(string)
start_time = string
length_minutes = string
}
)
)
}
)
null no
postgres_command Postgres container command list(string) [] no
postgres_cpus_limit Number of CPUs to limit the postgres container number 0 no
postgres_envvars Environment variables for postgres map(string) n/a yes
postgres_image Postgres container image
object(
{
name = optional(string, "docker.io/postgres")
version = optional(string, "16")
}
)
{
"name": "docker.io/postgres",
"version": "16"
}
no
postgres_memory_limit Amount of memory to limit the postgres container string "" no
rails_command Rails command container command list(string)
[
"bundle",
"exec",
"rails",
"s",
"-p",
"3000",
"-b",
"0.0.0.0"
]
no
rails_cpus_limit Number of CPUs to limit the rails container number 0 no
rails_memory_limit Amount of memory to limit the rails container string "" no
redis_command Redis container command list(string)
[
"bash",
"-c",
""redis-server --requirepass \$REDIS_PASSWORD""
]
no
redis_cpus_limit Number of CPUs to limit the redis container number 0 no
redis_envvars Environment variables for redis map(string) n/a yes
redis_image Redis container image
object(
{
name = optional(string, "docker.io/redis")
version = optional(string, "7")
}
)
{
"name": "docker.io/redis",
"version": "7"
}
no
redis_memory_limit Amount of memory to limit the redis container string "" no
registry_login Login to a container registry server
object(
{
username = string
password = string
server = string
}
)
null no
rollout_wariness Wariness to update, 1.0 (very cautious) to 0.0 (very eager) string null no
root_base_volume_name Node default base root volume name string n/a yes
root_base_volume_pool Node default base root volume pool string null no
root_volume_pool Node default root volume pool string null no
root_volume_size Node default root volume size in bytes number null no
sidekiq_command Sidekiq container command list(string)
[
"bundle",
"exec",
"sidekiq",
"-C",
"config/sidekiq.yml"
]
no
sidekiq_cpus_limit Number of CPUs to limit the sidekiq container number 0 no
sidekiq_memory_limit Amount of memory to limit the sidekiq container string "" no
ssh_authorized_key Authorized ssh key for core user string n/a yes
super_admin_allowed_entries Allow only this entries to super_admin subpath list(string) [] no
sync_time_with_host Sync guest time with the kvm host bool null no
timezone Timezone for VMs as listed by timedatectl list-timezones string null no
vcpu Node default vcpu count number null no
wait_for_lease Wait for network lease bool null no

Outputs

No outputs.

Krestomatio is a managed service for Moodle™ e-learning platforms. It allows you to have open-source instances managed by a service optimized for Moodle™, complete with an additional plugin pack and customization options.

About

Terraform module for creating a Chatwoot customer engagement suite using Fedora CoreOS, and Libvirt.

Topics

Resources

Stars

Watchers

Forks

Languages