cloud-mu 1.9.0.pre.beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Berksfile +56 -0
- data/Berksfile.lock +250 -0
- data/Jenkinsfile +184 -0
- data/LICENSE.md +37 -0
- data/README.md +26 -0
- data/bin/mu-aws-setup +376 -0
- data/bin/mu-cleanup +68 -0
- data/bin/mu-configure +1133 -0
- data/bin/mu-deploy +166 -0
- data/bin/mu-firewall-allow-clients +30 -0
- data/bin/mu-gcp-setup +200 -0
- data/bin/mu-gen-docs +34 -0
- data/bin/mu-gen-env +42 -0
- data/bin/mu-load-config.rb +158 -0
- data/bin/mu-node-manage +683 -0
- data/bin/mu-self-update +228 -0
- data/bin/mu-ssh +23 -0
- data/bin/mu-tunnel-nagios +144 -0
- data/bin/mu-upload-chef-artifacts +757 -0
- data/bin/mu-user-manage +275 -0
- data/cookbooks/awscli/LICENSE +37 -0
- data/cookbooks/awscli/README.md +58 -0
- data/cookbooks/awscli/attributes/default.rb +1 -0
- data/cookbooks/awscli/libraries/instance_metadata.rb +21 -0
- data/cookbooks/awscli/metadata.rb +20 -0
- data/cookbooks/awscli/recipes/default.rb +56 -0
- data/cookbooks/awscli/templates/default/config.erb +18 -0
- data/cookbooks/mu-activedirectory/CHANGELOG.md +13 -0
- data/cookbooks/mu-activedirectory/LICENSE +37 -0
- data/cookbooks/mu-activedirectory/README.md +6 -0
- data/cookbooks/mu-activedirectory/attributes/default.rb +98 -0
- data/cookbooks/mu-activedirectory/files/default/password-auth +32 -0
- data/cookbooks/mu-activedirectory/files/default/sshd_pol.pp +0 -0
- data/cookbooks/mu-activedirectory/files/default/sshd_pol.te +32 -0
- data/cookbooks/mu-activedirectory/files/default/syslogd_oddjobd.pp +0 -0
- data/cookbooks/mu-activedirectory/files/default/syslogd_oddjobd.te +10 -0
- data/cookbooks/mu-activedirectory/files/default/system-auth +34 -0
- data/cookbooks/mu-activedirectory/files/default/winbindpol.pp +0 -0
- data/cookbooks/mu-activedirectory/files/default/winbindpol.te +37 -0
- data/cookbooks/mu-activedirectory/libraries/config.rb +106 -0
- data/cookbooks/mu-activedirectory/libraries/helper.rb +86 -0
- data/cookbooks/mu-activedirectory/metadata.rb +17 -0
- data/cookbooks/mu-activedirectory/providers/domain.rb +152 -0
- data/cookbooks/mu-activedirectory/providers/domain_controller.rb +89 -0
- data/cookbooks/mu-activedirectory/providers/domain_node.rb +275 -0
- data/cookbooks/mu-activedirectory/recipes/default.rb +8 -0
- data/cookbooks/mu-activedirectory/recipes/domain-controller.rb +44 -0
- data/cookbooks/mu-activedirectory/recipes/domain-node.rb +50 -0
- data/cookbooks/mu-activedirectory/recipes/domain.rb +43 -0
- data/cookbooks/mu-activedirectory/recipes/sssd.rb +185 -0
- data/cookbooks/mu-activedirectory/resources/domain.rb +25 -0
- data/cookbooks/mu-activedirectory/resources/domain_controller.rb +25 -0
- data/cookbooks/mu-activedirectory/resources/domain_node.rb +20 -0
- data/cookbooks/mu-activedirectory/templates/default/dhclient-eth0.conf.erb +4 -0
- data/cookbooks/mu-activedirectory/templates/default/interface +0 -0
- data/cookbooks/mu-activedirectory/templates/default/krb5.conf.erb +23 -0
- data/cookbooks/mu-activedirectory/templates/default/ntp.conf.erb +56 -0
- data/cookbooks/mu-activedirectory/templates/default/smb.conf.erb +33 -0
- data/cookbooks/mu-activedirectory/templates/default/sssd.conf.erb +60 -0
- data/cookbooks/mu-activedirectory/templates/windows/Backup.xml.erb +20 -0
- data/cookbooks/mu-activedirectory/templates/windows/bkupInfo.xml.erb +1 -0
- data/cookbooks/mu-activedirectory/templates/windows/gpreprt.xml.erb +198 -0
- data/cookbooks/mu-activedirectory/templates/windows/gptmpl.inf.erb +12 -0
- data/cookbooks/mu-activedirectory/templates/windows/manifest.xml.erb +1 -0
- data/cookbooks/mu-firewall/CHANGELOG.md +11 -0
- data/cookbooks/mu-firewall/LICENSE +37 -0
- data/cookbooks/mu-firewall/README.md +5 -0
- data/cookbooks/mu-firewall/attributes/default.rb +3 -0
- data/cookbooks/mu-firewall/metadata.rb +16 -0
- data/cookbooks/mu-firewall/recipes/default.rb +10 -0
- data/cookbooks/mu-glusterfs/CHANGELOG.md +13 -0
- data/cookbooks/mu-glusterfs/LICENSE +37 -0
- data/cookbooks/mu-glusterfs/README.md +5 -0
- data/cookbooks/mu-glusterfs/attributes/default.rb +34 -0
- data/cookbooks/mu-glusterfs/metadata.rb +17 -0
- data/cookbooks/mu-glusterfs/recipes/client.rb +62 -0
- data/cookbooks/mu-glusterfs/recipes/default.rb +16 -0
- data/cookbooks/mu-glusterfs/recipes/samba.rb +57 -0
- data/cookbooks/mu-glusterfs/recipes/server.rb +200 -0
- data/cookbooks/mu-glusterfs/templates/default/mu-gluster-client.erb +71 -0
- data/cookbooks/mu-glusterfs/templates/default/smb.conf.erb +14 -0
- data/cookbooks/mu-jenkins/CHANGELOG.md +13 -0
- data/cookbooks/mu-jenkins/LICENSE +37 -0
- data/cookbooks/mu-jenkins/README.md +105 -0
- data/cookbooks/mu-jenkins/attributes/default.rb +42 -0
- data/cookbooks/mu-jenkins/files/default/cleanup_deploy_config.xml +73 -0
- data/cookbooks/mu-jenkins/files/default/deploy_config.xml +44 -0
- data/cookbooks/mu-jenkins/metadata.rb +21 -0
- data/cookbooks/mu-jenkins/recipes/default.rb +195 -0
- data/cookbooks/mu-jenkins/recipes/node-ssh-config.rb +54 -0
- data/cookbooks/mu-jenkins/recipes/public_key.rb +24 -0
- data/cookbooks/mu-jenkins/templates/default/example_job.config.xml.erb +24 -0
- data/cookbooks/mu-jenkins/templates/default/org.jvnet.hudson.plugins.SSHBuildWrapper.xml.erb +14 -0
- data/cookbooks/mu-jenkins/templates/default/ssh_config.erb +6 -0
- data/cookbooks/mu-master/CHANGELOG.md +13 -0
- data/cookbooks/mu-master/LICENSE +37 -0
- data/cookbooks/mu-master/README.md +6 -0
- data/cookbooks/mu-master/attributes/default.rb +95 -0
- data/cookbooks/mu-master/files/default/0-mu-log-server.conf +19 -0
- data/cookbooks/mu-master/files/default/addRSA.ldif +8 -0
- data/cookbooks/mu-master/files/default/check_mem.pl +197 -0
- data/cookbooks/mu-master/files/default/cloudamatic.png +0 -0
- data/cookbooks/mu-master/files/default/dirsrv_admin.pp +0 -0
- data/cookbooks/mu-master/files/default/dirsrv_admin.te +13 -0
- data/cookbooks/mu-master/files/default/nagios_selinux.pp +0 -0
- data/cookbooks/mu-master/files/default/nagios_selinux.te +51 -0
- data/cookbooks/mu-master/files/default/nagios_selinux_7.pp +0 -0
- data/cookbooks/mu-master/files/default/nagios_selinux_7.te +17 -0
- data/cookbooks/mu-master/files/default/pam_sshd +18 -0
- data/cookbooks/mu-master/files/default/ssl_enable.ldif +18 -0
- data/cookbooks/mu-master/files/default/syslogd_oddjobd.pp +0 -0
- data/cookbooks/mu-master/files/default/syslogd_oddjobd.te +10 -0
- data/cookbooks/mu-master/files/default/vimrc +19 -0
- data/cookbooks/mu-master/libraries/mu.rb +29 -0
- data/cookbooks/mu-master/metadata.rb +30 -0
- data/cookbooks/mu-master/providers/user.rb +41 -0
- data/cookbooks/mu-master/recipes/389ds.rb +164 -0
- data/cookbooks/mu-master/recipes/basepackages.rb +58 -0
- data/cookbooks/mu-master/recipes/caching_nameserver.rb +37 -0
- data/cookbooks/mu-master/recipes/default.rb +451 -0
- data/cookbooks/mu-master/recipes/eks-kubectl.rb +41 -0
- data/cookbooks/mu-master/recipes/firewall-holes.rb +70 -0
- data/cookbooks/mu-master/recipes/init.rb +542 -0
- data/cookbooks/mu-master/recipes/ssl-certs.rb +109 -0
- data/cookbooks/mu-master/recipes/sssd.rb +89 -0
- data/cookbooks/mu-master/recipes/update_nagios_only.rb +242 -0
- data/cookbooks/mu-master/recipes/vault.rb +111 -0
- data/cookbooks/mu-master/resources/user.rb +19 -0
- data/cookbooks/mu-master/templates/default/389-directory-setup.inf.erb +28 -0
- data/cookbooks/mu-master/templates/default/chef-server.rb.erb +18 -0
- data/cookbooks/mu-master/templates/default/dhclient-eth0.conf.erb +9 -0
- data/cookbooks/mu-master/templates/default/mu-momma-cat.erb +149 -0
- data/cookbooks/mu-master/templates/default/mu.rc.erb +9 -0
- data/cookbooks/mu-master/templates/default/openssl.cnf.erb +354 -0
- data/cookbooks/mu-master/templates/default/sssd.conf.erb +44 -0
- data/cookbooks/mu-master/templates/default/web_app.conf.erb +90 -0
- data/cookbooks/mu-mongo/CHANGELOG.md +13 -0
- data/cookbooks/mu-mongo/LICENSE +37 -0
- data/cookbooks/mu-mongo/README.md +5 -0
- data/cookbooks/mu-mongo/attributes/default.rb +22 -0
- data/cookbooks/mu-mongo/files/default/keyfile +16 -0
- data/cookbooks/mu-mongo/files/default/remove_nodes.js +5 -0
- data/cookbooks/mu-mongo/metadata.rb +17 -0
- data/cookbooks/mu-mongo/recipes/default.rb +149 -0
- data/cookbooks/mu-mongo/recipes/yum-update-rule.rb +18 -0
- data/cookbooks/mu-mongo/templates/default/mongo_create_openfema_db.js.erb +2 -0
- data/cookbooks/mu-mongo/templates/default/mongo_init.js.erb +1 -0
- data/cookbooks/mu-mongo/templates/default/mongo_logrotate.erb +14 -0
- data/cookbooks/mu-mongo/templates/default/mongo_replset_addnodes.js.erb +6 -0
- data/cookbooks/mu-mongo/templates/default/replset_init.js.erb +2 -0
- data/cookbooks/mu-openvpn/CHANGELOG.md +13 -0
- data/cookbooks/mu-openvpn/LICENSE +37 -0
- data/cookbooks/mu-openvpn/README.md +6 -0
- data/cookbooks/mu-openvpn/attributes/default.rb +119 -0
- data/cookbooks/mu-openvpn/metadata.rb +18 -0
- data/cookbooks/mu-openvpn/recipes/default.rb +108 -0
- data/cookbooks/mu-openvpn/templates/default/users.json.erb +42 -0
- data/cookbooks/mu-php54/CHANGELOG.md +12 -0
- data/cookbooks/mu-php54/LICENSE +37 -0
- data/cookbooks/mu-php54/README.md +0 -0
- data/cookbooks/mu-php54/files/centos/php.ini +1802 -0
- data/cookbooks/mu-php54/files/ubuntu/php.ini +1870 -0
- data/cookbooks/mu-php54/metadata.rb +21 -0
- data/cookbooks/mu-php54/recipes/default.rb +97 -0
- data/cookbooks/mu-splunk/CHANGELOG.md +37 -0
- data/cookbooks/mu-splunk/LICENSE +37 -0
- data/cookbooks/mu-splunk/README.md +451 -0
- data/cookbooks/mu-splunk/attributes/default.rb +95 -0
- data/cookbooks/mu-splunk/attributes/upgrade.rb +49 -0
- data/cookbooks/mu-splunk/definitions/splunk_installer.rb +103 -0
- data/cookbooks/mu-splunk/files/default/splunk-nocheck +10 -0
- data/cookbooks/mu-splunk/libraries/helpers.rb +72 -0
- data/cookbooks/mu-splunk/libraries/splunk_app_provider.rb +156 -0
- data/cookbooks/mu-splunk/libraries/splunk_app_resource.rb +43 -0
- data/cookbooks/mu-splunk/metadata.json +30 -0
- data/cookbooks/mu-splunk/metadata.rb +17 -0
- data/cookbooks/mu-splunk/recipes/client.rb +143 -0
- data/cookbooks/mu-splunk/recipes/default.rb +31 -0
- data/cookbooks/mu-splunk/recipes/disabled.rb +41 -0
- data/cookbooks/mu-splunk/recipes/install_forwarder.rb +23 -0
- data/cookbooks/mu-splunk/recipes/install_server.rb +23 -0
- data/cookbooks/mu-splunk/recipes/server.rb +53 -0
- data/cookbooks/mu-splunk/recipes/service.rb +95 -0
- data/cookbooks/mu-splunk/recipes/setup_auth.rb +49 -0
- data/cookbooks/mu-splunk/recipes/setup_ssl.rb +63 -0
- data/cookbooks/mu-splunk/recipes/upgrade.rb +94 -0
- data/cookbooks/mu-splunk/recipes/user.rb +34 -0
- data/cookbooks/mu-splunk/templates/default/base_logs_unix_inputs.conf.erb +26 -0
- data/cookbooks/mu-splunk/templates/default/inputs.conf.erb +13 -0
- data/cookbooks/mu-splunk/templates/default/outputs.conf.erb +9 -0
- data/cookbooks/mu-splunk/templates/default/splunk-init.erb +74 -0
- data/cookbooks/mu-splunk/templates/default/system-web.conf.erb +7 -0
- data/cookbooks/mu-tools/CHANGELOG.md +12 -0
- data/cookbooks/mu-tools/LICENSE +37 -0
- data/cookbooks/mu-tools/README.md +188 -0
- data/cookbooks/mu-tools/attributes/default.rb +142 -0
- data/cookbooks/mu-tools/attributes/ebs_rolling_snapshots.rb +3 -0
- data/cookbooks/mu-tools/files/amazon/etc/freshclam.conf +235 -0
- data/cookbooks/mu-tools/files/centos/CentOS-Base.repo +52 -0
- data/cookbooks/mu-tools/files/centos/etc/bashrc +93 -0
- data/cookbooks/mu-tools/files/centos/etc/freshclam.conf +235 -0
- data/cookbooks/mu-tools/files/centos/etc/login.defs +72 -0
- data/cookbooks/mu-tools/files/centos/etc/profile +77 -0
- data/cookbooks/mu-tools/files/centos/etc/security/limits.conf +57 -0
- data/cookbooks/mu-tools/files/centos/etc/sysconfig/init +19 -0
- data/cookbooks/mu-tools/files/centos/etc/sysctl.conf +82 -0
- data/cookbooks/mu-tools/files/centos-6/README_MU +0 -0
- data/cookbooks/mu-tools/files/centos-6/etc/audit/stig.rules +173 -0
- data/cookbooks/mu-tools/files/centos-6/etc/bashrc +90 -0
- data/cookbooks/mu-tools/files/centos-6/etc/login.defs +70 -0
- data/cookbooks/mu-tools/files/centos-6/etc/pam.d/su +12 -0
- data/cookbooks/mu-tools/files/centos-6/etc/profile +83 -0
- data/cookbooks/mu-tools/files/centos-6/etc/securetty +12 -0
- data/cookbooks/mu-tools/files/centos-6/etc/sysconfig/init +30 -0
- data/cookbooks/mu-tools/files/centos-6/etc/sysctl.conf +40 -0
- data/cookbooks/mu-tools/files/default/Mu_CA.pem +34 -0
- data/cookbooks/mu-tools/files/default/PSWindowsUpdate.zip +0 -0
- data/cookbooks/mu-tools/files/default/ebs_snapshots.py +123 -0
- data/cookbooks/mu-tools/files/default/etc/BANNER +0 -0
- data/cookbooks/mu-tools/files/default/etc/BANNER-FEDERAL +19 -0
- data/cookbooks/mu-tools/files/default/gpo_no_uac.zip +0 -0
- data/cookbooks/mu-tools/files/default/mypol.pp +0 -0
- data/cookbooks/mu-tools/files/default/mypol.te +37 -0
- data/cookbooks/mu-tools/files/default/nrpe_c7.pp +0 -0
- data/cookbooks/mu-tools/files/default/nrpe_c7.te +31 -0
- data/cookbooks/mu-tools/files/default/nrpe_check_disk.pp +0 -0
- data/cookbooks/mu-tools/files/default/nrpe_check_disk.te +11 -0
- data/cookbooks/mu-tools/files/default/nrpe_disk.pp +0 -0
- data/cookbooks/mu-tools/files/default/nrpe_disk.te +10 -0
- data/cookbooks/mu-tools/files/default/nrpe_file.pp +0 -0
- data/cookbooks/mu-tools/files/default/nrpe_file.te +31 -0
- data/cookbooks/mu-tools/files/default/ntrights +0 -0
- data/cookbooks/mu-tools/files/default/serverclass.conf +18 -0
- data/cookbooks/mu-tools/files/default/splunk-apps/base_logs_unix/local/app.conf +1 -0
- data/cookbooks/mu-tools/files/default/splunk-apps/base_logs_unix/local/inputs.conf +13 -0
- data/cookbooks/mu-tools/files/default/splunk-apps/base_logs_windows/local/app.conf +1 -0
- data/cookbooks/mu-tools/files/default/splunk-apps/base_logs_windows/local/inputs.conf +8 -0
- data/cookbooks/mu-tools/files/default/sshd_pol.pp +0 -0
- data/cookbooks/mu-tools/files/default/sshd_pol.te +32 -0
- data/cookbooks/mu-tools/files/redhat/etc/bashrc +93 -0
- data/cookbooks/mu-tools/files/redhat/etc/freshclam.conf +235 -0
- data/cookbooks/mu-tools/files/redhat/etc/login.defs +72 -0
- data/cookbooks/mu-tools/files/redhat/etc/profile +77 -0
- data/cookbooks/mu-tools/files/redhat/etc/security/limits.conf +57 -0
- data/cookbooks/mu-tools/files/redhat/etc/sysconfig/init +19 -0
- data/cookbooks/mu-tools/files/redhat/etc/sysctl.conf +82 -0
- data/cookbooks/mu-tools/files/redhat-6/README_MU +0 -0
- data/cookbooks/mu-tools/files/redhat-6/etc/audit/stig.rules +173 -0
- data/cookbooks/mu-tools/files/redhat-6/etc/bashrc +90 -0
- data/cookbooks/mu-tools/files/redhat-6/etc/login.defs +70 -0
- data/cookbooks/mu-tools/files/redhat-6/etc/pam.d/su +12 -0
- data/cookbooks/mu-tools/files/redhat-6/etc/profile +83 -0
- data/cookbooks/mu-tools/files/redhat-6/etc/securetty +12 -0
- data/cookbooks/mu-tools/files/redhat-6/etc/sysconfig/init +30 -0
- data/cookbooks/mu-tools/files/redhat-6/etc/sysctl.conf +40 -0
- data/cookbooks/mu-tools/files/redhat-7.1/etc/freshclam.conf +235 -0
- data/cookbooks/mu-tools/files/ubuntu-12.04/etc/bash.bashrc +64 -0
- data/cookbooks/mu-tools/files/ubuntu-12.04/etc/common-session +30 -0
- data/cookbooks/mu-tools/files/ubuntu-12.04/etc/login.defs +338 -0
- data/cookbooks/mu-tools/files/ubuntu-12.04/etc/profile +30 -0
- data/cookbooks/mu-tools/files/ubuntu-12.04/etc/security/limits.conf +56 -0
- data/cookbooks/mu-tools/files/ubuntu-12.04/etc/sysctl.conf +60 -0
- data/cookbooks/mu-tools/libraries/helper.rb +292 -0
- data/cookbooks/mu-tools/metadata.rb +28 -0
- data/cookbooks/mu-tools/recipes/add_admin_ssh_keys.rb +35 -0
- data/cookbooks/mu-tools/recipes/apply_security.rb +440 -0
- data/cookbooks/mu-tools/recipes/aws_api.rb +23 -0
- data/cookbooks/mu-tools/recipes/base_repositories.rb +31 -0
- data/cookbooks/mu-tools/recipes/cisbenchmark.rb +59 -0
- data/cookbooks/mu-tools/recipes/clamav.rb +53 -0
- data/cookbooks/mu-tools/recipes/cloudinit.rb +58 -0
- data/cookbooks/mu-tools/recipes/configure_oracle_tools.rb +81 -0
- data/cookbooks/mu-tools/recipes/disable-requiretty.rb +22 -0
- data/cookbooks/mu-tools/recipes/ebs_rolling_snapshots.rb +75 -0
- data/cookbooks/mu-tools/recipes/efs.rb +70 -0
- data/cookbooks/mu-tools/recipes/eks.rb +160 -0
- data/cookbooks/mu-tools/recipes/gcloud.rb +98 -0
- data/cookbooks/mu-tools/recipes/google_api.rb +25 -0
- data/cookbooks/mu-tools/recipes/maldet.rb +67 -0
- data/cookbooks/mu-tools/recipes/nagios.rb +19 -0
- data/cookbooks/mu-tools/recipes/newclient.rb +23 -0
- data/cookbooks/mu-tools/recipes/nrpe.rb +115 -0
- data/cookbooks/mu-tools/recipes/python_pip.rb +35 -0
- data/cookbooks/mu-tools/recipes/retrieve_application.rb +51 -0
- data/cookbooks/mu-tools/recipes/rsyslog.rb +65 -0
- data/cookbooks/mu-tools/recipes/set_local_fw.rb +57 -0
- data/cookbooks/mu-tools/recipes/set_mu_hostname.rb +81 -0
- data/cookbooks/mu-tools/recipes/split_var_partitions.rb +86 -0
- data/cookbooks/mu-tools/recipes/splunk-client.rb +69 -0
- data/cookbooks/mu-tools/recipes/splunk-server.rb +104 -0
- data/cookbooks/mu-tools/recipes/store_inspec_attr.rb +8 -0
- data/cookbooks/mu-tools/recipes/updates.rb +96 -0
- data/cookbooks/mu-tools/recipes/windows-client.rb +202 -0
- data/cookbooks/mu-tools/resources/aws_windows.rb +33 -0
- data/cookbooks/mu-tools/resources/disk.rb +88 -0
- data/cookbooks/mu-tools/resources/mommacat_request.rb +11 -0
- data/cookbooks/mu-tools/resources/scheduled_tasks.rb +29 -0
- data/cookbooks/mu-tools/resources/sshd_service.rb +45 -0
- data/cookbooks/mu-tools/resources/windows_users.rb +242 -0
- data/cookbooks/mu-tools/templates/amazon/sshd_config.erb +168 -0
- data/cookbooks/mu-tools/templates/centos-6/sshd_config.erb +212 -0
- data/cookbooks/mu-tools/templates/centos-7/sshd_config.erb +215 -0
- data/cookbooks/mu-tools/templates/default/0-mu-log-client.conf.erb +13 -0
- data/cookbooks/mu-tools/templates/default/conf.maldet.erb +137 -0
- data/cookbooks/mu-tools/templates/default/etc_hosts.erb +30 -0
- data/cookbooks/mu-tools/templates/default/etc_pamd_password-auth.erb +14 -0
- data/cookbooks/mu-tools/templates/default/etc_pamd_system-auth.erb +14 -0
- data/cookbooks/mu-tools/templates/default/etc_sysconfig_network.erb +12 -0
- data/cookbooks/mu-tools/templates/default/kubeconfig.erb +29 -0
- data/cookbooks/mu-tools/templates/default/kubelet.service.erb +35 -0
- data/cookbooks/mu-tools/templates/default/maldet_scanall.sh.erb +15 -0
- data/cookbooks/mu-tools/templates/default/nrpe.cfg.erb +233 -0
- data/cookbooks/mu-tools/templates/redhat-6/sshd_config.erb +213 -0
- data/cookbooks/mu-tools/templates/redhat-7/sshd_config.erb +215 -0
- data/cookbooks/mu-tools/templates/ubuntu-12.04/sshd_config.erb +146 -0
- data/cookbooks/mu-tools/templates/ubuntu-14.04/sshd_config.erb +145 -0
- data/cookbooks/mu-tools/templates/windows/Backup.xml.erb +20 -0
- data/cookbooks/mu-tools/templates/windows/bkupInfo.xml.erb +1 -0
- data/cookbooks/mu-tools/templates/windows/gpreprt.xml.erb +214 -0
- data/cookbooks/mu-tools/templates/windows/gptmpl.inf.erb +12 -0
- data/cookbooks/mu-tools/templates/windows/manifest.xml.erb +1 -0
- data/cookbooks/mu-tools/templates/windows/set_ad_dns_scheduled_task.ps1.erb +6 -0
- data/cookbooks/mu-tools/templates/windows/sshd_config.erb +136 -0
- data/cookbooks/mu-utility/CHANGELOG.md +12 -0
- data/cookbooks/mu-utility/LICENSE +37 -0
- data/cookbooks/mu-utility/README.md +6 -0
- data/cookbooks/mu-utility/attributes/default.rb +1 -0
- data/cookbooks/mu-utility/libraries/matchers.rb +21 -0
- data/cookbooks/mu-utility/metadata.rb +16 -0
- data/cookbooks/mu-utility/recipes/apt.rb +23 -0
- data/cookbooks/mu-utility/recipes/cleanup_image_helper.rb +118 -0
- data/cookbooks/mu-utility/recipes/iptables.rb +26 -0
- data/cookbooks/mu-utility/recipes/luks.rb +18 -0
- data/cookbooks/mu-utility/recipes/nat.rb +104 -0
- data/cookbooks/mu-utility/recipes/php.rb +33 -0
- data/cookbooks/mu-utility/recipes/rdp_gateway.rb +83 -0
- data/cookbooks/mu-utility/recipes/remi.rb +44 -0
- data/cookbooks/mu-utility/recipes/vim.rb +26 -0
- data/cookbooks/mu-utility/recipes/windows_basics.rb +37 -0
- data/cookbooks/mu-utility/recipes/zip.rb +26 -0
- data/cookbooks/mu-utility/templates/default/BundleConfig.xml.erb +34 -0
- data/cookbooks/mu-utility/templates/default/config.xml.erb +60 -0
- data/cookbooks/nagios/Berksfile +8 -0
- data/cookbooks/nagios/CHANGELOG.md +589 -0
- data/cookbooks/nagios/CONTRIBUTING.md +11 -0
- data/cookbooks/nagios/LICENSE +37 -0
- data/cookbooks/nagios/README.md +328 -0
- data/cookbooks/nagios/TESTING.md +2 -0
- data/cookbooks/nagios/attributes/config.rb +171 -0
- data/cookbooks/nagios/attributes/default.rb +228 -0
- data/cookbooks/nagios/chefignore +102 -0
- data/cookbooks/nagios/definitions/command.rb +33 -0
- data/cookbooks/nagios/definitions/contact.rb +33 -0
- data/cookbooks/nagios/definitions/contactgroup.rb +33 -0
- data/cookbooks/nagios/definitions/host.rb +33 -0
- data/cookbooks/nagios/definitions/hostdependency.rb +33 -0
- data/cookbooks/nagios/definitions/hostescalation.rb +34 -0
- data/cookbooks/nagios/definitions/hostgroup.rb +33 -0
- data/cookbooks/nagios/definitions/nagios_conf.rb +38 -0
- data/cookbooks/nagios/definitions/resource.rb +33 -0
- data/cookbooks/nagios/definitions/service.rb +33 -0
- data/cookbooks/nagios/definitions/servicedependency.rb +33 -0
- data/cookbooks/nagios/definitions/serviceescalation.rb +34 -0
- data/cookbooks/nagios/definitions/servicegroup.rb +33 -0
- data/cookbooks/nagios/definitions/timeperiod.rb +33 -0
- data/cookbooks/nagios/libraries/base.rb +314 -0
- data/cookbooks/nagios/libraries/command.rb +91 -0
- data/cookbooks/nagios/libraries/contact.rb +230 -0
- data/cookbooks/nagios/libraries/contactgroup.rb +112 -0
- data/cookbooks/nagios/libraries/custom_option.rb +36 -0
- data/cookbooks/nagios/libraries/data_bag_helper.rb +23 -0
- data/cookbooks/nagios/libraries/default.rb +90 -0
- data/cookbooks/nagios/libraries/host.rb +412 -0
- data/cookbooks/nagios/libraries/hostdependency.rb +181 -0
- data/cookbooks/nagios/libraries/hostescalation.rb +173 -0
- data/cookbooks/nagios/libraries/hostgroup.rb +119 -0
- data/cookbooks/nagios/libraries/nagios.rb +282 -0
- data/cookbooks/nagios/libraries/resource.rb +59 -0
- data/cookbooks/nagios/libraries/service.rb +455 -0
- data/cookbooks/nagios/libraries/servicedependency.rb +215 -0
- data/cookbooks/nagios/libraries/serviceescalation.rb +195 -0
- data/cookbooks/nagios/libraries/servicegroup.rb +144 -0
- data/cookbooks/nagios/libraries/timeperiod.rb +160 -0
- data/cookbooks/nagios/libraries/users_helper.rb +54 -0
- data/cookbooks/nagios/metadata.rb +25 -0
- data/cookbooks/nagios/recipes/_load_databag_config.rb +153 -0
- data/cookbooks/nagios/recipes/_load_default_config.rb +241 -0
- data/cookbooks/nagios/recipes/apache.rb +48 -0
- data/cookbooks/nagios/recipes/default.rb +204 -0
- data/cookbooks/nagios/recipes/nginx.rb +82 -0
- data/cookbooks/nagios/recipes/pagerduty.rb +143 -0
- data/cookbooks/nagios/recipes/server_package.rb +40 -0
- data/cookbooks/nagios/recipes/server_source.rb +164 -0
- data/cookbooks/nagios/templates/default/apache2.conf.erb +96 -0
- data/cookbooks/nagios/templates/default/cgi.cfg.erb +266 -0
- data/cookbooks/nagios/templates/default/commands.cfg.erb +13 -0
- data/cookbooks/nagios/templates/default/contacts.cfg.erb +37 -0
- data/cookbooks/nagios/templates/default/hostgroups.cfg.erb +25 -0
- data/cookbooks/nagios/templates/default/hosts.cfg.erb +15 -0
- data/cookbooks/nagios/templates/default/htpasswd.users.erb +6 -0
- data/cookbooks/nagios/templates/default/nagios.cfg.erb +22 -0
- data/cookbooks/nagios/templates/default/nginx.conf.erb +62 -0
- data/cookbooks/nagios/templates/default/pagerduty.cgi.erb +185 -0
- data/cookbooks/nagios/templates/default/resource.cfg.erb +27 -0
- data/cookbooks/nagios/templates/default/servicedependencies.cfg.erb +15 -0
- data/cookbooks/nagios/templates/default/servicegroups.cfg.erb +14 -0
- data/cookbooks/nagios/templates/default/services.cfg.erb +14 -0
- data/cookbooks/nagios/templates/default/templates.cfg.erb +31 -0
- data/cookbooks/nagios/templates/default/timeperiods.cfg.erb +13 -0
- data/cookbooks/s3fs/CHANGELOG.md +13 -0
- data/cookbooks/s3fs/LICENSE +37 -0
- data/cookbooks/s3fs/README.md +6 -0
- data/cookbooks/s3fs/attributes/default.rb +15 -0
- data/cookbooks/s3fs/files/default/fuse-2.9.3.zip +0 -0
- data/cookbooks/s3fs/metadata.rb +16 -0
- data/cookbooks/s3fs/recipes/default.rb +91 -0
- data/data_bags/demo/app.json +7 -0
- data/data_bags/nagios_services/chef.json +6 -0
- data/data_bags/nagios_services/linux_diskspace.json +5 -0
- data/data_bags/nagios_services/momma_cat.json +6 -0
- data/data_bags/nagios_services/mu-master-memory.json +5 -0
- data/data_bags/nagios_services/nagios_ui.json +6 -0
- data/data_bags/nagios_services/node_ssh.json +6 -0
- data/data_bags/nagios_services/ssh.json +6 -0
- data/demo/lambda_test.yaml +29 -0
- data/environments/DEV.json +8 -0
- data/environments/PROD.json +8 -0
- data/environments/dev.json +8 -0
- data/environments/development.json +8 -0
- data/environments/prod.json +8 -0
- data/extras/README.md +1 -0
- data/extras/admin-role-binding.yaml +16 -0
- data/extras/admin-user.yaml +6 -0
- data/extras/aws-auth-cm.yaml.erb +12 -0
- data/extras/clean-stock-amis +48 -0
- data/extras/git-fix-permissions-hook +12 -0
- data/extras/gitlab-eks-helper.sh.erb +20 -0
- data/extras/image-generators/README.md +2 -0
- data/extras/image-generators/aws/centos6.yaml +18 -0
- data/extras/image-generators/aws/centos7-govcloud.yaml +24 -0
- data/extras/image-generators/aws/centos7.yaml +17 -0
- data/extras/image-generators/aws/rhel7.yaml +17 -0
- data/extras/image-generators/aws/win2k12.yaml +16 -0
- data/extras/image-generators/aws/win2k16.yaml +16 -0
- data/extras/image-generators/aws/windows.yaml +18 -0
- data/extras/image-generators/gcp/centos6.yaml +17 -0
- data/extras/lambda_waf_domain_blacklist.py +103 -0
- data/extras/platform_berksfile_base +50 -0
- data/extras/ruby_rpm/build.sh +17 -0
- data/extras/ruby_rpm/muby.spec +44 -0
- data/extras/vault_tools/README.md +6 -0
- data/extras/vault_tools/export_vaults.sh +3 -0
- data/extras/vault_tools/recreate_vaults.sh +5 -0
- data/extras/vault_tools/test_vaults.sh +5 -0
- data/install/README.md +8 -0
- data/install/cfn_create_mu_master.json +1034 -0
- data/install/chef-server.rb.erb +19 -0
- data/install/deprecated-bash-library.sh +1891 -0
- data/install/images/Usage.png +0 -0
- data/install/installer +71 -0
- data/install/jenkinskeys.rb +8 -0
- data/install/user-dot-murc.erb +14 -0
- data/modules/html.erb +19 -0
- data/modules/mommacat.ru +426 -0
- data/modules/mu/cleanup.rb +339 -0
- data/modules/mu/cloud.rb +1446 -0
- data/modules/mu/clouds/README.md +201 -0
- data/modules/mu/clouds/aws/alarm.rb +319 -0
- data/modules/mu/clouds/aws/cache_cluster.rb +1010 -0
- data/modules/mu/clouds/aws/collection.rb +373 -0
- data/modules/mu/clouds/aws/container_cluster.rb +667 -0
- data/modules/mu/clouds/aws/database.rb +1836 -0
- data/modules/mu/clouds/aws/dnszone.rb +911 -0
- data/modules/mu/clouds/aws/firewall_rule.rb +641 -0
- data/modules/mu/clouds/aws/folder.rb +92 -0
- data/modules/mu/clouds/aws/function.rb +349 -0
- data/modules/mu/clouds/aws/group.rb +251 -0
- data/modules/mu/clouds/aws/loadbalancer.rb +888 -0
- data/modules/mu/clouds/aws/log.rb +363 -0
- data/modules/mu/clouds/aws/msg_queue.rb +480 -0
- data/modules/mu/clouds/aws/notification.rb +139 -0
- data/modules/mu/clouds/aws/role.rb +656 -0
- data/modules/mu/clouds/aws/search_domain.rb +646 -0
- data/modules/mu/clouds/aws/server.rb +2294 -0
- data/modules/mu/clouds/aws/server_pool.rb +1388 -0
- data/modules/mu/clouds/aws/storage_pool.rb +495 -0
- data/modules/mu/clouds/aws/user.rb +382 -0
- data/modules/mu/clouds/aws/userdata/README.md +4 -0
- data/modules/mu/clouds/aws/userdata/linux.erb +179 -0
- data/modules/mu/clouds/aws/userdata/windows.erb +278 -0
- data/modules/mu/clouds/aws/vpc.rb +1943 -0
- data/modules/mu/clouds/aws.rb +1009 -0
- data/modules/mu/clouds/cloudformation/alarm.rb +146 -0
- data/modules/mu/clouds/cloudformation/cache_cluster.rb +167 -0
- data/modules/mu/clouds/cloudformation/collection.rb +117 -0
- data/modules/mu/clouds/cloudformation/database.rb +278 -0
- data/modules/mu/clouds/cloudformation/dnszone.rb +274 -0
- data/modules/mu/clouds/cloudformation/firewall_rule.rb +308 -0
- data/modules/mu/clouds/cloudformation/loadbalancer.rb +193 -0
- data/modules/mu/clouds/cloudformation/log.rb +170 -0
- data/modules/mu/clouds/cloudformation/server.rb +370 -0
- data/modules/mu/clouds/cloudformation/server_pool.rb +279 -0
- data/modules/mu/clouds/cloudformation/vpc.rb +322 -0
- data/modules/mu/clouds/cloudformation.rb +733 -0
- data/modules/mu/clouds/docker.rb +30 -0
- data/modules/mu/clouds/google/container_cluster.rb +290 -0
- data/modules/mu/clouds/google/database.rb +152 -0
- data/modules/mu/clouds/google/firewall_rule.rb +267 -0
- data/modules/mu/clouds/google/group.rb +164 -0
- data/modules/mu/clouds/google/loadbalancer.rb +479 -0
- data/modules/mu/clouds/google/server.rb +1510 -0
- data/modules/mu/clouds/google/server_pool.rb +274 -0
- data/modules/mu/clouds/google/user.rb +266 -0
- data/modules/mu/clouds/google/userdata/README.md +4 -0
- data/modules/mu/clouds/google/userdata/linux.erb +137 -0
- data/modules/mu/clouds/google/userdata/windows.erb +275 -0
- data/modules/mu/clouds/google/vpc.rb +890 -0
- data/modules/mu/clouds/google.rb +811 -0
- data/modules/mu/config/README.md +11 -0
- data/modules/mu/config/alarm.rb +271 -0
- data/modules/mu/config/cache_cluster.rb +172 -0
- data/modules/mu/config/collection.rb +87 -0
- data/modules/mu/config/container_cluster.rb +103 -0
- data/modules/mu/config/container_cluster.yml +36 -0
- data/modules/mu/config/database.rb +458 -0
- data/modules/mu/config/database.yml +26 -0
- data/modules/mu/config/dnszone.rb +327 -0
- data/modules/mu/config/firewall_rule.rb +118 -0
- data/modules/mu/config/folder.rb +70 -0
- data/modules/mu/config/function.rb +140 -0
- data/modules/mu/config/group.rb +64 -0
- data/modules/mu/config/loadbalancer.rb +482 -0
- data/modules/mu/config/log.rb +47 -0
- data/modules/mu/config/log.yml +6 -0
- data/modules/mu/config/msg_queue.rb +47 -0
- data/modules/mu/config/msg_queue.yml +9 -0
- data/modules/mu/config/notification.rb +44 -0
- data/modules/mu/config/project.rb +71 -0
- data/modules/mu/config/role.rb +102 -0
- data/modules/mu/config/search_domain.rb +61 -0
- data/modules/mu/config/search_domain.yml +25 -0
- data/modules/mu/config/server.rb +587 -0
- data/modules/mu/config/server.yml +8 -0
- data/modules/mu/config/server_pool.rb +216 -0
- data/modules/mu/config/server_pool.yml +71 -0
- data/modules/mu/config/storage_pool.rb +145 -0
- data/modules/mu/config/user.rb +78 -0
- data/modules/mu/config/vpc.rb +743 -0
- data/modules/mu/config/vpc.yml +6 -0
- data/modules/mu/config.rb +2000 -0
- data/modules/mu/defaults/README.md +2 -0
- data/modules/mu/defaults/amazon_images.yaml +121 -0
- data/modules/mu/defaults/google_images.yaml +16 -0
- data/modules/mu/deploy.rb +686 -0
- data/modules/mu/groomer.rb +123 -0
- data/modules/mu/groomers/README.md +58 -0
- data/modules/mu/groomers/chef.rb +1024 -0
- data/modules/mu/kittens.rb +11319 -0
- data/modules/mu/logger.rb +208 -0
- data/modules/mu/master/README.md +27 -0
- data/modules/mu/master/chef.rb +471 -0
- data/modules/mu/master/ldap.rb +1005 -0
- data/modules/mu/master.rb +415 -0
- data/modules/mu/mommacat.rb +2703 -0
- data/modules/mu-load-config.rb +1 -0
- data/modules/mu.rb +724 -0
- data/modules/scratchpad.erb +1 -0
- data/modules/tests/super_complex_bok.yml +41 -0
- data/modules/tests/super_simple_bok.yml +40 -0
- data/mu.gemspec +62 -0
- data/roles/demo-dbservice-configure.json +19 -0
- data/roles/demo-portal-configure.json +19 -0
- data/roles/mu-master-jenkins.json +24 -0
- data/roles/mu-master-nagios-only.json +13 -0
- data/roles/mu-master.json +12 -0
- data/roles/mu-node.json +19 -0
- data/roles/mu-splunk-server.json +13 -0
- data/roles/mu-splunk.json +13 -0
- data/test/clean_up.py +25 -0
- data/test/demo-test-profile/README.md +3 -0
- data/test/demo-test-profile/controls/flask.rb +84 -0
- data/test/demo-test-profile/inspec.lock +7 -0
- data/test/demo-test-profile/inspec.yml +11 -0
- data/test/etco-test-profile/README.md +3 -0
- data/test/etco-test-profile/controls/all-in-one.rb +182 -0
- data/test/etco-test-profile/inspec.lock +7 -0
- data/test/etco-test-profile/inspec.yml +11 -0
- data/test/exec_inspec.py +246 -0
- data/test/exec_mu_install.py +241 -0
- data/test/exec_retry.py +44 -0
- data/test/mu-master-test/README.md +3 -0
- data/test/mu-master-test/controls/all_in_one.rb +557 -0
- data/test/mu-master-test/inspec.lock +3 -0
- data/test/mu-master-test/inspec.yml +11 -0
- data/test/mu-tools-test/README.md +3 -0
- data/test/mu-tools-test/controls/base.rb +265 -0
- data/test/mu-tools-test/inspec.lock +3 -0
- data/test/mu-tools-test/inspec.yml +8 -0
- data/test/simple-server-php-test/README.md +3 -0
- data/test/simple-server-php-test/controls/apachephp.rb +25 -0
- data/test/simple-server-php-test/controls/example.rb +19 -0
- data/test/simple-server-php-test/inspec.lock +7 -0
- data/test/simple-server-php-test/inspec.yml +12 -0
- data/test/simple-server-rails-test/README.md +3 -0
- data/test/simple-server-rails-test/controls/rails.rb +188 -0
- data/test/simple-server-rails-test/inspec.lock +7 -0
- data/test/simple-server-rails-test/inspec.yml +11 -0
- data/test/simple-windows-test/README.md +3 -0
- data/test/simple-windows-test/controls/windows.rb +20 -0
- data/test/simple-windows-test/inspec.lock +7 -0
- data/test/simple-windows-test/inspec.yml +11 -0
- data/test/smoke_test.rb +75 -0
- data/test/wordpress-test/README.md +3 -0
- data/test/wordpress-test/controls/wordpress.rb +97 -0
- data/test/wordpress-test/inspec.lock +7 -0
- data/test/wordpress-test/inspec.yml +11 -0
- metadata +979 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
This directory contains schema definitions for the various cloud resource types
|
|
2
|
+
supported by Mu. There should be one file per resource type here, each defining
|
|
3
|
+
one class under `MU::Config` and implementing, at minimum, the class methods `self.schema` and `self.validate`.
|
|
4
|
+
|
|
5
|
+
The schema and validation should by cloud-generic, that is it should only
|
|
6
|
+
contain properties common across cloud providers. Platform-specific schema and
|
|
7
|
+
validation behaviors should be written into the actual implementation, e.g.
|
|
8
|
+
`MU::Cloud::AWS::Log` will contain AWS-specific schema components and
|
|
9
|
+
validation checks.
|
|
10
|
+
|
|
11
|
+
See also the [Cloud layer developer README](https://github.com/cloudamatic/mu/tree/master/modules/mu/clouds)
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
# Copyright:: Copyright (c) 2018 eGlobalTech, Inc., all rights reserved
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the BSD-3 license (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License in the root of the project or at
|
|
6
|
+
#
|
|
7
|
+
# http://egt-labs.com/mu/LICENSE.html
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
module MU
|
|
16
|
+
class Config
|
|
17
|
+
# Basket of Kittens config schema and parser logic. See modules/mu/clouds/*/alarm.rb
|
|
18
|
+
class Alarm
|
|
19
|
+
|
|
20
|
+
# Sections of Alarm schema shared between Alarms as a first-class
|
|
21
|
+
# resource and as inline declarations in other resources.
|
|
22
|
+
# @return [Hash]
|
|
23
|
+
def self.common_properties
|
|
24
|
+
{
|
|
25
|
+
"name" => {
|
|
26
|
+
"type" => "string"
|
|
27
|
+
},
|
|
28
|
+
"ok_actions" => {
|
|
29
|
+
"type" => "array",
|
|
30
|
+
"minItems" => 1,
|
|
31
|
+
"description" => "What actions to take when alarm state transitions to 'OK'.",
|
|
32
|
+
"items" => {
|
|
33
|
+
"type" => "String"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"alarm_actions" => {
|
|
37
|
+
"type" => "array",
|
|
38
|
+
"minItems" => 1,
|
|
39
|
+
"description" => "What actions to take when alarm state transitions to 'ALARM'.",
|
|
40
|
+
"items" => {
|
|
41
|
+
"type" => "String"
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"no_data_actions" => {
|
|
45
|
+
"type" => "array",
|
|
46
|
+
"minItems" => 1,
|
|
47
|
+
"description" => "What actions to take when alarm state transitions to 'INSUFFICIENT'.",
|
|
48
|
+
"items" => {
|
|
49
|
+
"type" => "String"
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"metric_name" => {
|
|
53
|
+
"type" => "string",
|
|
54
|
+
"description" => "The name of the attribute to monitor eg. CPUUtilization."
|
|
55
|
+
},
|
|
56
|
+
"namespace" => {
|
|
57
|
+
"type" => "string",
|
|
58
|
+
"description" => "The name of container 'metric_name' belongs to eg. 'AWS/EC2'"
|
|
59
|
+
},
|
|
60
|
+
"statistic" => {
|
|
61
|
+
"type" => "string",
|
|
62
|
+
"description" => "",
|
|
63
|
+
"enum" => ["SampleCount", "Average", "Sum", "Minimum", "Maximum"]
|
|
64
|
+
},
|
|
65
|
+
"dimensions" => {
|
|
66
|
+
"type" => "array",
|
|
67
|
+
"description" => "What to monitor",
|
|
68
|
+
"items" => {
|
|
69
|
+
"type" => "object",
|
|
70
|
+
"additionalProperties" => false,
|
|
71
|
+
"required" => ["cloud_class"],
|
|
72
|
+
"description" => "What to monitor",
|
|
73
|
+
"properties" => {
|
|
74
|
+
"cloud_class" => {
|
|
75
|
+
"type" => "string",
|
|
76
|
+
"description" => "The type of resource we're checking",
|
|
77
|
+
"enum" => ["InstanceId", "server", "Server", "DBInstanceIdentifier", "database", "Database", "LoadBalancerName", "loadbalancer", "LoadBalancer", "CacheClusterId", "cache_cluster", "CacheCluster", "VolumeId", "volume", "Volume", "BucketName", "bucket", "Bucket", "TopicName", "notification", "Notification", "AutoScalingGroupName", "server_pool", "ServerPool"]
|
|
78
|
+
},
|
|
79
|
+
"cloud_id" => {
|
|
80
|
+
"type" => "string",
|
|
81
|
+
"description" => "The cloud identifier of the resource the alarm is being created for. eg - i-d96eca0d. Must use either 'cloud_id' OR 'mu_name' AND 'deploy_id'"
|
|
82
|
+
},
|
|
83
|
+
"mu_name" => {
|
|
84
|
+
"type" => "string",
|
|
85
|
+
"description" => "The full name of a resource in a foreign deployment which we should monitor. You should also include 'deploy_id' so we will be able to identifiy a single resource. Use either 'cloud_id' OR 'mu_name' and 'deploy_id'"
|
|
86
|
+
},
|
|
87
|
+
"deploy_id" => {
|
|
88
|
+
"type" => "string",
|
|
89
|
+
"description" => "Should be used with 'mu_name' to identifiy a single resource."
|
|
90
|
+
},
|
|
91
|
+
"name" => {
|
|
92
|
+
"type" => "string",
|
|
93
|
+
"description" => "The name of another resource in this stack with which to associate this alarm."
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
"period" => {
|
|
99
|
+
"type" => "integer",
|
|
100
|
+
"description" => "The time, in seconds the 'statistic' is checked/tested. Must be multiples of 60"
|
|
101
|
+
},
|
|
102
|
+
"unit" => {
|
|
103
|
+
"type" => "string",
|
|
104
|
+
"description" => "Associated with the 'metric'",
|
|
105
|
+
"enum" => ["Seconds", "Microseconds", "Milliseconds", "Bytes", "Kilobytes", "Megabytes", "Gigabytes", "Terabytes", "Bits", "Kilobits", "Megabits", "Gigabits", "Terabits", "Percent", "Count", "Bytes/Second",
|
|
106
|
+
"Kilobytes/Second", "Megabytes/Second", "Gigabytes/Second", "Terabytes/Second", "Bits/Second", "Kilobits/Second", "Megabits/Second", "Gigabits/Second", "Terabits/Second", "Count/Second", "nil"]
|
|
107
|
+
},
|
|
108
|
+
"evaluation_periods" => {
|
|
109
|
+
"type" => "integer",
|
|
110
|
+
"description" => "The number of times to repeat the 'period' before changing the state of an alarm. eg form 'OK' to 'ALARM' state"
|
|
111
|
+
},
|
|
112
|
+
"threshold" => {
|
|
113
|
+
# TO DO: This should be a float
|
|
114
|
+
"type" => "integer",
|
|
115
|
+
"description" => "The value the 'statistic' is compared to and action (eg 'alarm_actions') will be invoked "
|
|
116
|
+
},
|
|
117
|
+
"comparison_operator" => {
|
|
118
|
+
"type" => "string",
|
|
119
|
+
"description" => "The arithmetic operation to use when comparing 'statistic' and 'threshold'. The 'statistic' value is used as the first operand",
|
|
120
|
+
"enum" => ["GreaterThanOrEqualToThreshold", "GreaterThanThreshold", "LessThanThreshold", "LessThanOrEqualToThreshold"]
|
|
121
|
+
},
|
|
122
|
+
# TO DO: Separate all of these to an SNS primitive
|
|
123
|
+
"enable_notifications" => {
|
|
124
|
+
"type" => "boolean",
|
|
125
|
+
"description" => "Rather to send notifications when the alarm state changes"
|
|
126
|
+
},
|
|
127
|
+
"notification_group" => {
|
|
128
|
+
"type" => "string",
|
|
129
|
+
"description" => "The name of the notification group. Will be created if it doesn't exist. We use / create a default one if not specified. NOTE: because we can't confirm subscription to a group programmatically, you should use an existing group",
|
|
130
|
+
"default" => "mu-default"
|
|
131
|
+
},
|
|
132
|
+
"notification_type" => {
|
|
133
|
+
"type" => "string",
|
|
134
|
+
"description" => "What type of notification endpoint will the notification be sent to. defaults to 'email'",
|
|
135
|
+
"enum" => ["http", "https", "email", "email-json", "sms", "sqs", "application"],
|
|
136
|
+
"default" => "email"
|
|
137
|
+
},
|
|
138
|
+
"notification_endpoint" => {
|
|
139
|
+
"type" => "string",
|
|
140
|
+
"description" => "The endpoint the notification will be sent to. eg. if notification_type is 'email'/'email-json' the endpoint will be the email address. A confirmation email will be sent to this email address if a new notification_group is created, if not specified and notification_type is set to 'email' we will use the mu-master email address",
|
|
141
|
+
"default_if" => [
|
|
142
|
+
{
|
|
143
|
+
"key_is" => "notification_type",
|
|
144
|
+
"value_is" => "email",
|
|
145
|
+
"set" => MU::Config.notification_email
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"key_is" => "notification_type",
|
|
149
|
+
"value_is" => "email-json",
|
|
150
|
+
"set" => MU::Config.notification_email
|
|
151
|
+
}
|
|
152
|
+
]
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
# Base configuration schema for a Alarm
|
|
158
|
+
# @return [Hash]
|
|
159
|
+
def self.schema
|
|
160
|
+
base = {
|
|
161
|
+
"type" => "object",
|
|
162
|
+
"additionalProperties" => false,
|
|
163
|
+
"description" => "Cloud platform monitoring alarms",
|
|
164
|
+
"properties" => {
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
base["properties"].merge!(common_properties)
|
|
168
|
+
base
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
# Most Alarm objects aren't actually declared as first-class resources,
|
|
172
|
+
# but instead inline on other objects. Schema is slightly different.
|
|
173
|
+
def self.inline
|
|
174
|
+
{
|
|
175
|
+
"type" => "array",
|
|
176
|
+
"minItems" => 1,
|
|
177
|
+
"items" => {
|
|
178
|
+
"description" => "Create a CloudWatch Alarm.",
|
|
179
|
+
"type" => "object",
|
|
180
|
+
"title" => "CloudWatch Alarm Parameters",
|
|
181
|
+
"required" => ["name", "metric_name", "statistic", "period", "evaluation_periods", "threshold", "comparison_operator"],
|
|
182
|
+
"additionalProperties" => false,
|
|
183
|
+
"properties" => common_properties
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
# Generic pre-processing of {MU::Config::BasketofKittens::alarms}, bare and unvalidated.
|
|
189
|
+
# @param alarm [Hash]: The resource to process and validate
|
|
190
|
+
# @param configurator [MU::Config]: The overall deployment configurator of which this resource is a member
|
|
191
|
+
# @return [Boolean]: True if validation succeeded, False otherwise
|
|
192
|
+
def self.validate(alarm, configurator)
|
|
193
|
+
ok = true
|
|
194
|
+
|
|
195
|
+
if alarm["namespace"].nil?
|
|
196
|
+
MU.log "You must specify 'namespace' when creating an alarm", MU::ERR
|
|
197
|
+
ok = false
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
if alarm["metric_name"].nil?
|
|
201
|
+
MU.log "You must specify 'metric_name' when creating an alarm", MU::ERR
|
|
202
|
+
ok = false
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
if alarm["statistic"].nil?
|
|
206
|
+
MU.log "You must specify 'statistic' when creating an alarm", MU::ERR
|
|
207
|
+
ok = false
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
if alarm["period"].nil?
|
|
211
|
+
MU.log "You must specify 'period' when creating an alarm", MU::ERR
|
|
212
|
+
ok = false
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
if alarm["evaluation_periods"].nil?
|
|
216
|
+
MU.log "You must specify 'evaluation_periods' when creating an alarm", MU::ERR
|
|
217
|
+
ok = false
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
if alarm["threshold"].nil?
|
|
221
|
+
MU.log "You must specify 'threshold' when creating an alarm", MU::ERR
|
|
222
|
+
ok = false
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
if alarm["comparison_operator"].nil?
|
|
226
|
+
MU.log "You must specify 'comparison_operator' when creating an alarm", MU::ERR
|
|
227
|
+
ok = false
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
if alarm["enable_notifications"]
|
|
231
|
+
if alarm["comparison_operator"].nil?
|
|
232
|
+
MU.log "You must specify 'comparison_operator' when creating an alarm", MU::ERR
|
|
233
|
+
ok = false
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
if alarm["notification_group"].nil?
|
|
237
|
+
MU.log "You must specify 'notification_group' when 'enable_notifications' is set to true", MU::ERR
|
|
238
|
+
ok = false
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
if alarm["notification_type"].nil?
|
|
242
|
+
MU.log "You must specify 'notification_type' when 'enable_notifications' is set to true", MU::ERR
|
|
243
|
+
ok = false
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
#if alarm["notification_endpoint"].nil?
|
|
247
|
+
# MU.log "You must specify 'notification_endpoint' when 'enable_notifications' is set to true", MU::ERR
|
|
248
|
+
# ok = false
|
|
249
|
+
#end
|
|
250
|
+
end
|
|
251
|
+
|
|
252
|
+
if alarm["dimensions"]
|
|
253
|
+
alarm["dimensions"].each{ |dimension|
|
|
254
|
+
if dimension["mu_name"] && dimension["cloud_id"]
|
|
255
|
+
MU.log "You can only specfiy 'mu_name' or 'cloud_id'", MU::ERR
|
|
256
|
+
ok = false
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
if dimension["cloud_class"].nil?
|
|
260
|
+
ok = false
|
|
261
|
+
MU.log "You must specify 'cloud_class'", MU::ERR
|
|
262
|
+
end
|
|
263
|
+
}
|
|
264
|
+
end
|
|
265
|
+
|
|
266
|
+
ok
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
end
|
|
270
|
+
end
|
|
271
|
+
end
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
# Copyright:: Copyright (c) 2018 eGlobalTech, Inc., all rights reserved
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the BSD-3 license (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License in the root of the project or at
|
|
6
|
+
#
|
|
7
|
+
# http://egt-labs.com/mu/LICENSE.html
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
module MU
|
|
16
|
+
class Config
|
|
17
|
+
# Basket of Kittens config schema and parser logic. See modules/mu/clouds/*/cache_cluster.rb
|
|
18
|
+
class CacheCluster
|
|
19
|
+
|
|
20
|
+
# Base configuration schema for a CacheCluster
|
|
21
|
+
# @return [Hash]
|
|
22
|
+
def self.schema
|
|
23
|
+
{
|
|
24
|
+
"type" => "object",
|
|
25
|
+
"description" => "Create cache cluster(s).",
|
|
26
|
+
"required" => ["name", "engine", "size", "cloud"],
|
|
27
|
+
"additionalProperties" => false,
|
|
28
|
+
"properties" => {
|
|
29
|
+
"name" => {"type" => "string"},
|
|
30
|
+
"scrub_mu_isms" => {
|
|
31
|
+
"type" => "boolean",
|
|
32
|
+
"default" => false,
|
|
33
|
+
"description" => "When 'cloud' is set to 'CloudFormation,' use this flag to strip out Mu-specific artifacts (tags, standard userdata, naming conventions, etc) to yield a clean, source-agnostic template."
|
|
34
|
+
},
|
|
35
|
+
"region" => MU::Config.region_primitive,
|
|
36
|
+
"tags" => MU::Config.tags_primitive,
|
|
37
|
+
"optional_tags" => MU::Config.optional_tags_primitive,
|
|
38
|
+
"engine_version" => {"type" => "string"},
|
|
39
|
+
"node_count" => {
|
|
40
|
+
"type" => "integer",
|
|
41
|
+
"description" => "The number of cache nodes in a cache cluster (memcached), or the number of cache clusters in a cache group (redis)",
|
|
42
|
+
"default" => 1
|
|
43
|
+
},
|
|
44
|
+
"add_firewall_rules" => MU::Config::FirewallRule.reference,
|
|
45
|
+
"ingress_rules" => {
|
|
46
|
+
"type" => "array",
|
|
47
|
+
"items" => MU::Config::FirewallRule.ruleschema
|
|
48
|
+
},
|
|
49
|
+
"engine" => {
|
|
50
|
+
"enum" => ["memcached", "redis"],
|
|
51
|
+
"type" => "string",
|
|
52
|
+
"default" => "redis"
|
|
53
|
+
},
|
|
54
|
+
"dns_records" => MU::Config::DNSZone.records_primitive(need_target: false, default_type: "CNAME", need_zone: true),
|
|
55
|
+
"dns_sync_wait" => {
|
|
56
|
+
"type" => "boolean",
|
|
57
|
+
"description" => "Wait for DNS record to propagate in DNS Zone.",
|
|
58
|
+
"default" => true
|
|
59
|
+
},
|
|
60
|
+
"alarms" => MU::Config::Alarm.inline,
|
|
61
|
+
"size" => { # XXX this is AWS-specific, and should be done via API check anyway
|
|
62
|
+
"pattern" => "^cache\.(t|m|c|i|g|hi|hs|cr|cg|cc){1,2}[0-9]\\.(micro|small|medium|[248]?x?large)$",
|
|
63
|
+
"type" => "string",
|
|
64
|
+
"description" => "The Amazon EleastiCache instance type to use when creating this cache cluster.",
|
|
65
|
+
},
|
|
66
|
+
"port" => {
|
|
67
|
+
"type" => "integer",
|
|
68
|
+
"default" => 6379,
|
|
69
|
+
"default_if" => [
|
|
70
|
+
{
|
|
71
|
+
"key_is" => "engine",
|
|
72
|
+
"value_is" => "memcached",
|
|
73
|
+
"set" => 11211
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"key_is" => "engine",
|
|
77
|
+
"value_is" => "redis",
|
|
78
|
+
"set" => 6379
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
},
|
|
82
|
+
"vpc" => MU::Config::VPC.reference(MU::Config::VPC::MANY_SUBNETS, MU::Config::VPC::NAT_OPTS, "all_public"),
|
|
83
|
+
"multi_az" => {
|
|
84
|
+
"type" => "boolean",
|
|
85
|
+
"description" => "Rather to deploy the cache cluster/cache group in Multi AZ or Single AZ",
|
|
86
|
+
"default" => false
|
|
87
|
+
},
|
|
88
|
+
"snapshot_arn" => {
|
|
89
|
+
"type" => "string",
|
|
90
|
+
"description" => "The ARN (Resource Name) of the redis backup stored in S3. Applies only to redis"
|
|
91
|
+
},
|
|
92
|
+
"snapshot_retention_limit" => {
|
|
93
|
+
"type" => "integer",
|
|
94
|
+
"description" => "The number of days to retain an automatic cache cluster snapshot. Applies only to redis"
|
|
95
|
+
},
|
|
96
|
+
"snapshot_window" => {
|
|
97
|
+
"type" => "string",
|
|
98
|
+
"description" => "The preferred time range to perform automatic cache cluster backups. Time is in UTC. Applies only to redis. Window must be at least 60 minutes long - 05:00-06:00."
|
|
99
|
+
},
|
|
100
|
+
"preferred_maintenance_window" => {
|
|
101
|
+
"type" => "string",
|
|
102
|
+
"description" => "The preferred data/time range to perform cache cluster maintenance. Window must be at least 60 minutes long - sun:06:00-sun:07:00. "
|
|
103
|
+
},
|
|
104
|
+
"auto_minor_version_upgrade" => {
|
|
105
|
+
"type" => "boolean",
|
|
106
|
+
"default" => true
|
|
107
|
+
},
|
|
108
|
+
"creation_style" => {
|
|
109
|
+
"type" => "string",
|
|
110
|
+
"enum" => ["new", "new_snapshot", "existing_snapshot"],
|
|
111
|
+
"description" => "'new' - create a new cache cluster; 'new_snapshot' - create a snapshot of of an existing cache cluster, and build a new cache cluster from that snapshot; 'existing_snapshot' - create a cache cluster from an existing snapshot.",
|
|
112
|
+
"default" => "new"
|
|
113
|
+
},
|
|
114
|
+
"identifier" => {
|
|
115
|
+
"type" => "string",
|
|
116
|
+
"description" => "For any creation_style other than 'new' this parameter identifies the cache cluster to use. In the case of new_snapshot it will create a snapshot from that cache cluster first; in the case of existing_snapshot, it will use the latest avaliable snapshot."
|
|
117
|
+
},
|
|
118
|
+
"notification_arn" => {
|
|
119
|
+
"type" => "string",
|
|
120
|
+
"description" => "The AWS resource name of the AWS SNS notification topic notifications will be sent to.",
|
|
121
|
+
},
|
|
122
|
+
"parameter_group_parameters" => {
|
|
123
|
+
"type" => "array",
|
|
124
|
+
"minItems" => 1,
|
|
125
|
+
"items" => {
|
|
126
|
+
"description" => "The cache cluster parameter group parameter to change and when to apply the change.",
|
|
127
|
+
"type" => "object",
|
|
128
|
+
"title" => "Cache Cluster Parameter",
|
|
129
|
+
"required" => ["name", "value"],
|
|
130
|
+
"additionalProperties" => false,
|
|
131
|
+
"properties" => {
|
|
132
|
+
"name" => {
|
|
133
|
+
"type" => "string"
|
|
134
|
+
},
|
|
135
|
+
"value" => {
|
|
136
|
+
"type" => "string"
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
"parameter_group_family" => {
|
|
142
|
+
"type" => "String",
|
|
143
|
+
"enum" => ["memcached1.4", "redis2.6", "redis2.8"],
|
|
144
|
+
"description" => "The cache cluster family to create the Parameter Group for. The family type must be the same type as the cache cluster major version - eg if you set engine_version to 2.6 this parameter must be set to redis2.6."
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
# Generic pre-processing of {MU::Config::BasketofKittens::cache_clusters}, bare and unvalidated.
|
|
151
|
+
# @param cache [Hash]: The resource to process and validate
|
|
152
|
+
# @param configurator [MU::Config]: The overall deployment configurator of which this resource is a member
|
|
153
|
+
# @return [Boolean]: True if validation succeeded, False otherwise
|
|
154
|
+
def self.validate(cache, configurator)
|
|
155
|
+
ok = true
|
|
156
|
+
if cluster["creation_style"] != "new" && cluster["identifier"].nil?
|
|
157
|
+
MU.log "CacheCluster #{cluster['name']}'s creation_style is set to #{cluster['creation_style']} but no identifier was provided. Either set creation_style to new or provide an identifier", MU::ERR
|
|
158
|
+
ok = false
|
|
159
|
+
end
|
|
160
|
+
if !cluster.has_key?("node_count") or cluster["node_count"] < 1
|
|
161
|
+
MU.log "CacheCluster node_count must be >=1.", MU::ERR
|
|
162
|
+
ok = false
|
|
163
|
+
end
|
|
164
|
+
cluster["multi_az"] = true if cluster["node_count"] > 1
|
|
165
|
+
|
|
166
|
+
cluster['dependencies'] << adminFirewallRuleset(vpc: cluster['vpc'], region: cluster['region'], cloud: cluster['cloud']) if !cluster['scrub_mu_isms']
|
|
167
|
+
|
|
168
|
+
ok
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
end
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Copyright:: Copyright (c) 2018 eGlobalTech, Inc., all rights reserved
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the BSD-3 license (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License in the root of the project or at
|
|
6
|
+
#
|
|
7
|
+
# http://egt-labs.com/mu/LICENSE.html
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
module MU
|
|
16
|
+
class Config
|
|
17
|
+
# Basket of Kittens config schema and parser logic. See modules/mu/clouds/*/collection.rb
|
|
18
|
+
class Collection
|
|
19
|
+
|
|
20
|
+
# Base configuration schema for a Collection
|
|
21
|
+
# @return [Hash]
|
|
22
|
+
def self.schema
|
|
23
|
+
{
|
|
24
|
+
"type" => "object",
|
|
25
|
+
"required" => ["name"],
|
|
26
|
+
"additionalProperties" => false,
|
|
27
|
+
"description" => "Create an Amazon CloudFormation stack.",
|
|
28
|
+
"properties" => {
|
|
29
|
+
"name" => {"type" => "string"},
|
|
30
|
+
"tags" => MU::Config.tags_primitive,
|
|
31
|
+
"parameters" => {
|
|
32
|
+
"type" => "array",
|
|
33
|
+
"items" => {
|
|
34
|
+
"type" => "object",
|
|
35
|
+
"description" => "set cloudformation template parameter",
|
|
36
|
+
"required" => ["parameter_key", "parameter_value"],
|
|
37
|
+
"additionalProperties" => false,
|
|
38
|
+
"properties" => {
|
|
39
|
+
"parameter_key" => {"type" => "string"},
|
|
40
|
+
"parameter_value" => {"type" => "string"}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"pass_deploy_key_as" => {
|
|
45
|
+
"type" => "string",
|
|
46
|
+
"description" => "Pass in the deploy key for this stack as a CloudFormation parameter. Set this to the CloudFormation parameter name.",
|
|
47
|
+
},
|
|
48
|
+
"pass_parent_parameters" => {
|
|
49
|
+
"type" => "boolean",
|
|
50
|
+
"default" => true,
|
|
51
|
+
"description" => "If targeting CloudFormation, this will pass all of the parent template's parameters to the nested template"
|
|
52
|
+
},
|
|
53
|
+
"on_failure" => {
|
|
54
|
+
"type" => "string",
|
|
55
|
+
"enum" => ["DO_NOTHING", "ROLLBACK", "DELETE"],
|
|
56
|
+
"default" => "ROLLBACK"
|
|
57
|
+
},
|
|
58
|
+
"template_file" => {"type" => "string"},
|
|
59
|
+
"timeout" => {
|
|
60
|
+
"type" => "string",
|
|
61
|
+
"description" => "Timeout (in minutes) for building this Collection.",
|
|
62
|
+
"default" => "45"
|
|
63
|
+
},
|
|
64
|
+
"template_url" => {
|
|
65
|
+
"type" => "string",
|
|
66
|
+
"pattern" => "^#{URI::regexp(%w(http https))}$"
|
|
67
|
+
},
|
|
68
|
+
"creation_style" => {
|
|
69
|
+
"type" => "string",
|
|
70
|
+
"enum" => ["existing", "new"]
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# Generic pre-processing of {MU::Config::BasketofKittens::collections}, bare and unvalidated.
|
|
77
|
+
# @param stack [Hash]: The resource to process and validate
|
|
78
|
+
# @param configurator [MU::Config]: The overall deployment configurator of which this resource is a member
|
|
79
|
+
# @return [Boolean]: True if validation succeeded, False otherwise
|
|
80
|
+
def self.validate(stack, configurator)
|
|
81
|
+
ok = true
|
|
82
|
+
ok
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Copyright:: Copyright (c) 2018 eGlobalTech, Inc., all rights reserved
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the BSD-3 license (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License in the root of the project or at
|
|
6
|
+
#
|
|
7
|
+
# http://egt-labs.com/mu/LICENSE.html
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
module MU
|
|
16
|
+
class Config
|
|
17
|
+
# Basket of Kittens config schema and parser logic. See modules/mu/clouds/*/container_cluster.rb
|
|
18
|
+
class ContainerCluster
|
|
19
|
+
|
|
20
|
+
# Base configuration schema for a ContainerCluster
|
|
21
|
+
# @return [Hash]
|
|
22
|
+
def self.schema
|
|
23
|
+
base = {
|
|
24
|
+
"type" => "object",
|
|
25
|
+
"description" => "Create a cluster of container hosts.",
|
|
26
|
+
"required" => ["name", "cloud", "instance_type", "instance_count"],
|
|
27
|
+
"additionalProperties" => false,
|
|
28
|
+
"properties" => {
|
|
29
|
+
"name" => { "type" => "string" },
|
|
30
|
+
"region" => MU::Config.region_primitive,
|
|
31
|
+
"vpc" => MU::Config::VPC.reference(MU::Config::VPC::ONE_SUBNET + MU::Config::VPC::MANY_SUBNETS, MU::Config::VPC::NO_NAT_OPTS, "all"),
|
|
32
|
+
"tags" => MU::Config.tags_primitive,
|
|
33
|
+
"optional_tags" => MU::Config.optional_tags_primitive,
|
|
34
|
+
"instance_count" => {
|
|
35
|
+
"type" => "integer",
|
|
36
|
+
"default" => 2
|
|
37
|
+
},
|
|
38
|
+
"kubernetes" => {
|
|
39
|
+
"type" => "object",
|
|
40
|
+
"description" => "Options for Kubernetes, specific to EKS or GKE",
|
|
41
|
+
"properties" => {
|
|
42
|
+
"version" => {
|
|
43
|
+
"type" => "string",
|
|
44
|
+
"default" => "1.10",
|
|
45
|
+
"description" => "Version of Kubernetes control plane to deploy",
|
|
46
|
+
},
|
|
47
|
+
"max_pods" => {
|
|
48
|
+
"type" => "integer",
|
|
49
|
+
"default" => 5,
|
|
50
|
+
"description" => "Maximum number of pods that can be deployed on any given worker node",
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"kubernetes_resources" => {
|
|
55
|
+
"type" => "array",
|
|
56
|
+
"items" => {
|
|
57
|
+
"type" => "object",
|
|
58
|
+
"description" => "Optional Kubernetes-specific resource descriptors to run with kubectl create|replace when grooming this cluster. See https://kubernetes.io/docs/concepts/overview/working-with-objects/kubernetes-objects/#understanding-kubernetes-objects"
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"flavor" => {
|
|
62
|
+
"type" => "string",
|
|
63
|
+
"description" => "Container clusters in Amazon can be ECS, EKS, or Fargate; Google supports GKE only"
|
|
64
|
+
},
|
|
65
|
+
"platform" => {
|
|
66
|
+
"type" => "string",
|
|
67
|
+
"default" => "linux",
|
|
68
|
+
# XXX change to reflect available keys in mu/defaults/amazon_images.yaml and mu/defaults/google_images.yaml
|
|
69
|
+
"enum" => ["linux", "windows", "centos", "ubuntu", "centos6", "ubuntu14", "win2k12", "win2k12r2", "win2k16", "centos7", "rhel7", "rhel71", "amazon"],
|
|
70
|
+
"description" => "Helps select default AMIs, and enables correct grooming behavior based on operating system type.",
|
|
71
|
+
},
|
|
72
|
+
"instance_type" => {
|
|
73
|
+
"type" => "string",
|
|
74
|
+
"description" => "Type of container host instances to use. Equivalent to 'size' parameter in Server or ServerPool"
|
|
75
|
+
},
|
|
76
|
+
"instance_subnet_pref" => {
|
|
77
|
+
"type" => "string",
|
|
78
|
+
"default" => "all_private",
|
|
79
|
+
"description" => "Worker nodes inherit the main cluster VPC configuration by default. This parameter allows targeting the worker node-cluster to a different class of subnets"
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
MU::Config::Server.common_properties.keys.each { |k|
|
|
84
|
+
if !base["properties"][k]
|
|
85
|
+
base["properties"][k] = MU::Config::Server.common_properties[k].dup
|
|
86
|
+
end
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
base
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# Generic pre-processing of {MU::Config::BasketofKittens::container_clusters}, bare and unvalidated.
|
|
93
|
+
# @param cluster [Hash]: The resource to process and validate
|
|
94
|
+
# @param configurator [MU::Config]: The overall deployment configurator of which this resource is a member
|
|
95
|
+
# @return [Boolean]: True if validation succeeded, False otherwise
|
|
96
|
+
def self.validate(cluster, configurator)
|
|
97
|
+
ok = true
|
|
98
|
+
ok
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|