diff --git a/templates/mysql-configmap-mysql-init-script.yaml b/templates/mysql-configmap-mysql-init-script.yaml new file mode 100644 index 0000000..e484383 --- /dev/null +++ b/templates/mysql-configmap-mysql-init-script.yaml @@ -0,0 +1,184 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: mysql-init-script + namespace: {{ .Release.Namespace }} +data: + init.sql: | + GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; + FLUSH PRIVILEGES; + + CREATE DATABASE /*!32312 IF NOT EXISTS*/`AnsibleForms` /*!40100 DEFAULT CHARACTER SET utf8 */; + + USE `AnsibleForms`; + DROP TABLE IF EXISTS `groups`; + CREATE TABLE `groups`( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `uk_AnsibleForms_groups_natural_key` (`name`) + ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; + + USE `AnsibleForms`; + DROP TABLE IF EXISTS `users`; + CREATE TABLE `users`( + `id` int(11) NOT NULL AUTO_INCREMENT, + `username` varchar(255) NOT NULL, + `password` varchar(255) NOT NULL, + `email` varchar(255) NOT NULL, + `group_id` int(11) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `uk_AnsibleForms_users_natural_key` (`username`), + KEY `FK_users_group` (`group_id`), + CONSTRAINT `FK_users_group` FOREIGN KEY (`group_id`) REFERENCES `groups` (`id`) ON DELETE CASCADE ON UPDATE CASCADE + ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; + + USE `AnsibleForms`; + DROP TABLE IF EXISTS `tokens`; + CREATE TABLE `tokens` ( + `username` varchar(250) NOT NULL, + `username_type` varchar(10) NOT NULL, + `refresh_token` text DEFAULT NULL, + `timestamp` datetime NOT NULL DEFAULT current_timestamp() + ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + USE `AnsibleForms`; + DROP TABLE IF EXISTS `credentials`; + CREATE TABLE `credentials` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(250) NOT NULL, + `user` varchar(250) NOT NULL, + `password` text NOT NULL, + `host` varchar(250) DEFAULT NULL, + `port` int(11) DEFAULT NULL, + `description` text NOT NULL, + `secure` tinyint(4) DEFAULT NULL, + `db_type` varchar(10) DEFAULT NULL, + `db_name` varchar(255) DEFAULT NULL, + `is_database` tinyint(4) DEFAULT 1, + PRIMARY KEY (`id`), + UNIQUE KEY `uk_AnsibleForms_credentials_natural_key` (`name`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + USE `AnsibleForms`; + DROP TABLE IF EXISTS `ldap`; + CREATE TABLE `ldap` ( + `server` varchar(250) DEFAULT NULL, + `port` int(11) DEFAULT NULL, + `ignore_certs` tinyint(4) DEFAULT NULL, + `enable_tls` tinyint(4) DEFAULT NULL, + `cert` text DEFAULT NULL, + `ca_bundle` text DEFAULT NULL, + `bind_user_dn` varchar(250) DEFAULT NULL, + `bind_user_pw` text DEFAULT NULL, + `search_base` varchar(250) DEFAULT NULL, + `username_attribute` varchar(250) DEFAULT NULL, + `groups_attribute` varchar(250) DEFAULT NULL, + `enable` tinyint(4) DEFAULT NULL, + `is_advanced` tinyint(4) DEFAULT NULL, + `groups_search_base` varchar(250) DEFAULT NULL, + `group_class` varchar(250) DEFAULT NULL, + `group_member_attribute` varchar(250) DEFAULT NULL, + `group_member_user_attribute` varchar(250) DEFAULT NULL, + `mail_attribute` varchar(250) DEFAULT NULL + ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + USE `AnsibleForms`; + DROP TABLE IF EXISTS `awx`; + CREATE TABLE `awx` ( + `uri` varchar(250) NOT NULL, + `username` varchar(250) NOT NULL, + `token` text NOT NULL, + `password` text NOT NULL, + `ignore_certs` tinyint(4) DEFAULT NULL, + `use_credentials` tinyint(4) DEFAULT NULL, + `ca_bundle` text DEFAULT NULL + ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + USE `AnsibleForms`; + DROP TABLE IF EXISTS `job_output`; + DROP TABLE IF EXISTS `jobs`; + CREATE TABLE `jobs` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `form` varchar(250) DEFAULT NULL, + `target` varchar(250) DEFAULT NULL, + `status` varchar(20) DEFAULT NULL, + `start` datetime NOT NULL DEFAULT current_timestamp(), + `end` datetime DEFAULT NULL, + `user` varchar(250) DEFAULT NULL, + `user_type` varchar(10) DEFAULT NULL, + `job_type` varchar(20) DEFAULT NULL, + `extravars` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `credentials` mediumtext DEFAULT NULL, + `notifications` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `approval` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `step` varchar(250) DEFAULT NULL, + `parent_id` int(11) DEFAULT NULL, + `awx_id` int(11) DEFAULT NULL, + PRIMARY KEY (`id`) + ) ENGINE=InnoDB AUTO_INCREMENT=47 DEFAULT CHARSET=utf8; + CREATE TABLE `job_output` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `output` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `timestamp` datetime NOT NULL DEFAULT current_timestamp(), + `output_type` varchar(10) NOT NULL, + `job_id` int(11) NOT NULL, + `order` int(11) NOT NULL, + PRIMARY KEY (`id`), + KEY `FK_job_output_jobs` (`job_id`), + CONSTRAINT `FK_job_output_jobs` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`id`) ON DELETE CASCADE ON UPDATE CASCADE + ) ENGINE=InnoDB AUTO_INCREMENT=1650 DEFAULT CHARSET=utf8; + + USE `AnsibleForms`; + DROP TABLE IF EXISTS `settings`; + CREATE TABLE `settings` ( + `mail_server` varchar(250) DEFAULT NULL, + `mail_port` int(11) DEFAULT NULL, + `mail_secure` tinyint(4) DEFAULT NULL, + `mail_username` varchar(250) DEFAULT NULL, + `mail_password` text DEFAULT NULL, + `mail_from` varchar(250) DEFAULT NULL, + `url` varchar(250) DEFAULT NULL, + `forms_yaml` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL + ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + USE `AnsibleForms`; + DROP TABLE IF EXISTS `azuread`; + CREATE TABLE `azuread` ( + `client_id` text DEFAULT NULL, + `secret_id` text DEFAULT NULL, + `enable` tinyint(4) DEFAULT NULL, + `groupfilter` varchar(250) DEFAULT NULL + ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + USE `AnsibleForms`; + DROP TABLE IF EXISTS `repositories`; + CREATE TABLE `repositories` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(250) NOT NULL, + `branch` varchar(250) DEFAULT NULL, + `user` varchar(250) DEFAULT NULL, + `password` text DEFAULT NULL, + `uri` varchar(250) DEFAULT NULL, + `description` text NOT NULL, + `use_for_forms` tinyint(4) DEFAULT NULL, + `use_for_playbooks` tinyint(4) DEFAULT NULL, + `cron` varchar(50) DEFAULT NULL, + `status` varchar(50) DEFAULT NULL, + `output` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `head` varchar(50) DEFAULT NULL, + `rebase_on_start` tinyint(4) DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `uk_AnsibleForms_repositories_natural_key` (`name`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + USE `AnsibleForms`; + DROP TABLE IF EXISTS `oidc`; + CREATE TABLE `oidc` ( + `issuer` text DEFAULT NULL, + `client_id` text DEFAULT NULL, + `secret_id` text DEFAULT NULL, + `enabled` tinyint(4) DEFAULT NULL, + `groupfilter` varchar(250) DEFAULT NULL + ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + diff --git a/templates/mysql-deployment.yaml b/templates/mysql-deployment.yaml index bf035d8..3e2cb74 100644 --- a/templates/mysql-deployment.yaml +++ b/templates/mysql-deployment.yaml @@ -47,6 +47,8 @@ spec: - name: mysql-my-cnf mountPath: /etc/mysql/my.cnf subPath: my.cnf + - name: init-script # init script + mountPath: /docker-entrypoint-initdb.d restartPolicy: Always volumes: - name: mysql-persistent-storage @@ -58,3 +60,6 @@ spec: items: - key: my.cnf path: my.cnf + - name: init-script + configMap: + name: mysql-init-script \ No newline at end of file diff --git a/templates/mysql-pv-claim.yaml b/templates/mysql-pv-claim.yaml index 5cf2789..5eb31dc 100644 --- a/templates/mysql-pv-claim.yaml +++ b/templates/mysql-pv-claim.yaml @@ -3,10 +3,17 @@ kind: PersistentVolumeClaim metadata: namespace: {{ .Release.Namespace }} name: {{ .Release.Name }}-mysql-pvc + labels: + app.kubernetes.io/name: mysql + app.kubernetes.io/instance: mysql + app.kubernetes.io/component: mysql + app.kubernetes.io/part-of: {{ .Release.Name }} spec: accessModes: - ReadWriteMany resources: requests: storage: {{ .Values.storage.mysql.size }} - storageClassName: {{ .Values.storage.mysql.className }} + storageClassName: '' + volumeName: {{ .Release.Name }}-mysql-pv + diff --git a/templates/server-pv-claim.yaml b/templates/server-pv-claim.yaml index c58b8fa..853d4e1 100644 --- a/templates/server-pv-claim.yaml +++ b/templates/server-pv-claim.yaml @@ -14,4 +14,5 @@ spec: resources: requests: storage: {{ .Values.storage.server.size }} - storageClassName: {{ .Values.storage.server.className }} + storageClassName: '' + volumeName: {{ .Release.Name }}-server-pv diff --git a/values.yaml b/values.yaml index e2d7e4e..8ff8cdf 100644 --- a/values.yaml +++ b/values.yaml @@ -2,9 +2,9 @@ application: server: env: - ENCRYPTION_SECRET: # recommended - ADMIN_USERNAME: # default admin - ADMIN_PASSWORD: # default AnsibleForms!123 + ENCRYPTION_SECRET: AnsibleForms!123 # recommended + ADMIN_USERNAME: admin # default admin + ADMIN_PASSWORD: AnsibleForms!123 # default AnsibleForms!123 mysql: user: root # required password: AnsibleForms!123 # required