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,201 @@
|
|
|
1
|
+
This is where we implement provisioning layers. This can be a full-featured
|
|
2
|
+
cloud provider, like Amazon Web Services, or a simple node virtualization
|
|
3
|
+
or containerization layer, like VMWare or Docker.
|
|
4
|
+
|
|
5
|
+
Implementing a New Cloud Resource Type
|
|
6
|
+
--------------------------------------
|
|
7
|
+
|
|
8
|
+
The following is a walkthrough for developers adding an entirely new cloud
|
|
9
|
+
resource type (e.g. `Server`, `Alarm`, etc), one which has not yet been defined
|
|
10
|
+
or implemented for **any** cloud layer. For this example we'll discuss the
|
|
11
|
+
`Function` resource type, which in cloud provider terms will be an implemention
|
|
12
|
+
for serverless code services such as AWS Lambda, Google Cloud Functions, etc.
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
1. Add stubs to `modules/mu/cloud.rb`. Edit files file, and you'll see a
|
|
16
|
+
`@@resource_types` hash describing each cloud resource type Mu supports. The
|
|
17
|
+
configuration here governs a lot of Mu deployment engine behaviors, as well as
|
|
18
|
+
interaction with the configuration parser. For our `Function` type, we'll keep
|
|
19
|
+
it simple:
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
:Function => {
|
|
24
|
+
:has_multiples => false,
|
|
25
|
+
:can_live_in_vpc => true,
|
|
26
|
+
:cfg_name => "function",
|
|
27
|
+
:cfg_plural => "functions",
|
|
28
|
+
:interface => self.const_get("Function"),
|
|
29
|
+
:deps_wait_on_my_creation => true,
|
|
30
|
+
:waits_on_parent_completion => false,
|
|
31
|
+
:class => generic_class_methods,
|
|
32
|
+
:instance => generic_instance_methods
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
2. Add our new type to the configuration schema in `modules/mu/config`. This is where our parser learns to look for our type when loading Basket of Kittens YAML or JSON files. Let's start by adding to the top-level of the `@@schema` hash, which is actually a [http://json-schema.org/](JSON Schema) definition.
|
|
38
|
+
|
|
39
|
+
Each of these stubs must be subclass of `MU::Config` that implements a class with the same class name as you declared in step 1. This class must, at minimum, implement `self.schema` and `self.validate` methods. Minimal example:
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
module MU
|
|
43
|
+
class Config
|
|
44
|
+
class Function
|
|
45
|
+
|
|
46
|
+
def self.schema
|
|
47
|
+
{
|
|
48
|
+
"type" => "object",
|
|
49
|
+
"title" => "Functions",
|
|
50
|
+
"additionalProperties" => false,
|
|
51
|
+
"description" => "Create a serverless cloud function.",
|
|
52
|
+
"properties" => {
|
|
53
|
+
"cloud" => MU::Config.cloud_primitive,
|
|
54
|
+
"name" => {"type" => "string"},
|
|
55
|
+
"region" => MU::Config.region_primitive,
|
|
56
|
+
"vpc" => MU::Config::VPC.reference(MU::Config::VPC::ONE_SUBNET+MU::Config::VPC::MANY_SUBNETS, MU::Config::VPC::NO_NAT_OPTS, "all_private"),
|
|
57
|
+
"dependencies" => MU::Config.dependencies_primitive,
|
|
58
|
+
"tags" => MU::Config.tags_primitive,
|
|
59
|
+
"optional_tags" => {
|
|
60
|
+
"type" => "boolean",
|
|
61
|
+
"description" => "Tag the resource with our optional tags (MU-HANDLE, MU-MASTER-NAME, MU-OWNER). Defaults to true",
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Generic pre-processing of {MU::Config::BasketofKittens::functions}, bare and unvalidated.
|
|
68
|
+
# @param function [Hash]: The resource to process and validate
|
|
69
|
+
# @param configurator [MU::Config]: The overall deployment configurator of which this resource is a member
|
|
70
|
+
# @return [Boolean]: True if validation succeeded, False otherwise
|
|
71
|
+
def self.validate(function, configurator)
|
|
72
|
+
ok = true
|
|
73
|
+
ok
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
3. Define an empty implemention. Remember in step 1 where we had a couple configuration variables in our little hash (`:class => generic_class_methods`, `:instance => generic_instance_methods`)? Well those are lists of class methods and instance methods that any implemention will be required to have, no matter which
|
|
83
|
+
cloud provider it's for.
|
|
84
|
+
|
|
85
|
+
Looking elsewhere in `cloud.rb` let's see what all we have to do:
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
generic_class_methods = [:find, :cleanup, :validateConfig, :schema]
|
|
89
|
+
generic_instance_methods = [:create, :notify, :mu_name, :cloud_id, :config]
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Just the basics, for now. Here's what that will look like in the AWS layer, in the file `modules/mu/clouds/aws/function.rb`:
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
module MU
|
|
96
|
+
class Cloud
|
|
97
|
+
class AWS
|
|
98
|
+
# A function as configured in {MU::Config::BasketofKittens::functions}
|
|
99
|
+
class Function < MU::Cloud::Function
|
|
100
|
+
@deploy = nil
|
|
101
|
+
@config = nil
|
|
102
|
+
attr_reader :mu_name
|
|
103
|
+
attr_reader :config
|
|
104
|
+
attr_reader :cloud_id
|
|
105
|
+
|
|
106
|
+
@cloudformation_data = {}
|
|
107
|
+
attr_reader :cloudformation_data
|
|
108
|
+
|
|
109
|
+
# @param mommacat [MU::MommaCat]: A {MU::Mommacat} object containing the deploy of which this resource is/will be a member.
|
|
110
|
+
# @param kitten_cfg [Hash]: The fully parsed and resolved {MU::Config} resource descriptor as defined in {MU::Config::BasketofKittens::functions}
|
|
111
|
+
def initialize(mommacat: nil, kitten_cfg: nil, mu_name: nil, cloud_id: nil)
|
|
112
|
+
@deploy = mommacat
|
|
113
|
+
@config = MU::Config.manxify(kitten_cfg)
|
|
114
|
+
@cloud_id ||= cloud_id
|
|
115
|
+
@mu_name ||= @deploy.getResourceName(@config["name"])
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
# Called automatically by {MU::Deploy#createResources}
|
|
119
|
+
def create
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
# Return the metadata for this Function rule
|
|
123
|
+
# @return [Hash]
|
|
124
|
+
def notify
|
|
125
|
+
deploy_struct = {
|
|
126
|
+
}
|
|
127
|
+
return deploy_struct
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
# Remove all functions associated with the currently loaded deployment.
|
|
131
|
+
# @param noop [Boolean]: If true, will only print what would be done
|
|
132
|
+
# @param ignoremaster [Boolean]: If true, will remove resources not flagged as originating from this Mu server
|
|
133
|
+
# @param region [String]: The cloud provider region
|
|
134
|
+
# @return [void]
|
|
135
|
+
def self.cleanup(noop: false, ignoremaster: false, region: MU.curRegion, flags: {})
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
# Locate an existing function.
|
|
139
|
+
# @param cloud_id [String]: The cloud provider's identifier for this resource.
|
|
140
|
+
# @param region [String]: The cloud provider region.
|
|
141
|
+
# @param flags [Hash]: Optional flags
|
|
142
|
+
# @return [OpenStruct]: The cloud provider's complete descriptions of matching function.
|
|
143
|
+
def self.find(cloud_id: nil, region: MU.curRegion, flags: {})
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
# Cloud-specific configuration properties.
|
|
147
|
+
# @param config [MU::Config]: The calling MU::Config object
|
|
148
|
+
# @return [Array<Array,Hash>]: List of required fields, and json-schema Hash of cloud-specific configuration parameters for this resource
|
|
149
|
+
def self.schema(config)
|
|
150
|
+
toplevel_required = []
|
|
151
|
+
schema = {}
|
|
152
|
+
[toplevel_required, schema]
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
# Cloud-specific pre-processing of {MU::Config::BasketofKittens::functions}, bare and unvalidated.
|
|
156
|
+
# @param function [Hash]: The resource to process and validate
|
|
157
|
+
# @param configurator [MU::Config]: The overall deployment configurator of which this resource is a member
|
|
158
|
+
# @return [Boolean]: True if validation succeeded, False otherwise
|
|
159
|
+
def self.validateConfig(function, configurator)
|
|
160
|
+
ok = true
|
|
161
|
+
# if something_bad
|
|
162
|
+
# ok = false
|
|
163
|
+
# end
|
|
164
|
+
|
|
165
|
+
ok
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
As you press forward in your implementation, you may find that it makes sense
|
|
175
|
+
to add other requirements to this resource type. For example, many resource
|
|
176
|
+
types, such as `Servers`, have a `groom` phase that is invoked after initial
|
|
177
|
+
creation, but which can be run asynchronously with dependent child resources.
|
|
178
|
+
Others have methods that are peculiar to the resource type, such as the
|
|
179
|
+
`addRule` method for the `FirewallRule` type.
|
|
180
|
+
|
|
181
|
+
Most of these methods are self-explanatory, and you can look at other resource types for examples of actual implementation.
|
|
182
|
+
|
|
183
|
+
A bit about the purpose of the `self.schema` class method. This is for
|
|
184
|
+
injecting cloud-specific properties into the schema we defined in
|
|
185
|
+
step 2. Cloud providers often have nuanced functionality that doesn't map to
|
|
186
|
+
similar behavior in other providers, so we insert that here in the cloud layer
|
|
187
|
+
rather than the global config schema. Here's an example in the AWS `Server` implementation:
|
|
188
|
+
|
|
189
|
+
```
|
|
190
|
+
def self.schema(config)
|
|
191
|
+
toplevel_required = []
|
|
192
|
+
schema = {
|
|
193
|
+
"ami_id" => {
|
|
194
|
+
"type" => "string",
|
|
195
|
+
"description" => "The Amazon EC2 AMI on which to base this instance. Will use the default appropriate for the platform, if not specified."
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
[toplevel_required, schema]
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
```
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
# Copyright:: Copyright (c) 2014 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 Cloud
|
|
17
|
+
class AWS
|
|
18
|
+
# A alarm as configured in {MU::Config::BasketofKittens::alarms}
|
|
19
|
+
class Alarm < MU::Cloud::Alarm
|
|
20
|
+
@deploy = nil
|
|
21
|
+
@config = nil
|
|
22
|
+
attr_reader :mu_name
|
|
23
|
+
attr_reader :config
|
|
24
|
+
attr_reader :cloud_id
|
|
25
|
+
|
|
26
|
+
@cloudformation_data = {}
|
|
27
|
+
attr_reader :cloudformation_data
|
|
28
|
+
|
|
29
|
+
# @param mommacat [MU::MommaCat]: A {MU::Mommacat} object containing the deploy of which this resource is/will be a member.
|
|
30
|
+
# @param kitten_cfg [Hash]: The fully parsed and resolved {MU::Config} resource descriptor as defined in {MU::Config::BasketofKittens::alarms}
|
|
31
|
+
def initialize(mommacat: nil, kitten_cfg: nil, mu_name: nil, cloud_id: nil)
|
|
32
|
+
@deploy = mommacat
|
|
33
|
+
@config = MU::Config.manxify(kitten_cfg)
|
|
34
|
+
@cloud_id ||= cloud_id
|
|
35
|
+
@mu_name ||= @deploy.getResourceName(@config["name"])
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Called automatically by {MU::Deploy#createResources}
|
|
39
|
+
def create
|
|
40
|
+
if @config["dimensions"]
|
|
41
|
+
dimensions = []
|
|
42
|
+
@config["dimensions"].each { |dimension|
|
|
43
|
+
cloudid =
|
|
44
|
+
if dimension["name"] and dimension["depclass"]
|
|
45
|
+
if @dependencies.has_key?(dimension["depclass"])
|
|
46
|
+
@dependencies[dimension["depclass"]][dimension["name"]].cloudobj.cloud_id
|
|
47
|
+
end
|
|
48
|
+
elsif dimension["mu_name"] and dimension["deploy_id"]
|
|
49
|
+
found = MU::MommaCat.findStray("AWS", deps_class, deploy_id: dimension["deploy_id"], mu_name: dimension["mu_name"], region: @config["region"])
|
|
50
|
+
raise MuError, "Couldn't find #{deps_class} #{dimension["mu_name"]}" if found.nil? || found.empty?
|
|
51
|
+
resp = found.first.deploydata["cloud_id"]
|
|
52
|
+
resp.downcase if %w{database cache_cluster}.include?(deps_class)
|
|
53
|
+
else
|
|
54
|
+
dimension["cloud_id"]
|
|
55
|
+
end
|
|
56
|
+
dimensions << {:name => dimension["cloud_class"], :value => cloudid}
|
|
57
|
+
}
|
|
58
|
+
@config["dimensions"] = dimensions
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
if @config["enable_notifications"]
|
|
62
|
+
@config["alarm_actions"] = [] if @config["alarm_actions"].nil?
|
|
63
|
+
@config["ok_actions"] = [] if @config["ok_actions"].nil?
|
|
64
|
+
|
|
65
|
+
topic_arn = MU::Cloud::AWS::Notification.createTopic(@config["notification_group"], region: @config["region"])
|
|
66
|
+
MU::Cloud::AWS::Notification.subscribe(arn: topic_arn, protocol: @config["notification_type"], endpoint: @config["notification_endpoint"], region: @config["region"])
|
|
67
|
+
|
|
68
|
+
@config["alarm_actions"] << topic_arn
|
|
69
|
+
@config["ok_actions"] << topic_arn
|
|
70
|
+
end
|
|
71
|
+
@config["ok_actions"].uniq!
|
|
72
|
+
@config["alarm_actions"].uniq!
|
|
73
|
+
|
|
74
|
+
MU::Cloud::AWS::Alarm.setAlarm(
|
|
75
|
+
name: @mu_name,
|
|
76
|
+
ok_actions: @config["ok_actions"],
|
|
77
|
+
alarm_actions: @config["alarm_actions"],
|
|
78
|
+
insufficient_data_actions: @config["no_data_actions"],
|
|
79
|
+
metric_name: @config["metric_name"],
|
|
80
|
+
namespace: @config["namespace"],
|
|
81
|
+
statistic: @config["statistic"],
|
|
82
|
+
dimensions: @config["dimensions"],
|
|
83
|
+
period: @config["period"],
|
|
84
|
+
unit: @config["unit"],
|
|
85
|
+
evaluation_periods: @config["evaluation_periods"],
|
|
86
|
+
threshold: @config["threshold"],
|
|
87
|
+
comparison_operator: @config["comparison_operator"],
|
|
88
|
+
region: @config["region"]
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
@cloud_id = @mu_name
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# Canonical Amazon Resource Number for this resource
|
|
95
|
+
# @return [String]
|
|
96
|
+
def arn
|
|
97
|
+
cloud_desc.alarm_arn
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# Return the metadata for this Alarm rule
|
|
101
|
+
# @return [Hash]
|
|
102
|
+
def notify
|
|
103
|
+
deploy_struct = {
|
|
104
|
+
"ok_actions" => @config["ok_actions"],
|
|
105
|
+
"alarm_actions" => @config["alarm_actions"],
|
|
106
|
+
"insufficient_data_actions" => @config["no_data_actions"],
|
|
107
|
+
"metric_name" => @config["metric_name"],
|
|
108
|
+
"namespace" => @config["namespace"],
|
|
109
|
+
"statistic" => @config["statistic"],
|
|
110
|
+
"dimensions" => @config["dimensions"],
|
|
111
|
+
"period" => @config["period"],
|
|
112
|
+
"unit" => @config["unit"],
|
|
113
|
+
"evaluation_periods" => @config["evaluation_periods"],
|
|
114
|
+
"threshold" => @config["threshold"],
|
|
115
|
+
"comparison_operator" => @config["comparison_operator"]
|
|
116
|
+
}
|
|
117
|
+
return deploy_struct
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
# Remove all alarms associated with the currently loaded deployment.
|
|
121
|
+
# @param noop [Boolean]: If true, will only print what would be done
|
|
122
|
+
# @param ignoremaster [Boolean]: If true, will remove resources not flagged as originating from this Mu server
|
|
123
|
+
# @param region [String]: The cloud provider region
|
|
124
|
+
# @return [void]
|
|
125
|
+
def self.cleanup(noop: false, ignoremaster: false, region: MU.curRegion, flags: {})
|
|
126
|
+
alarms = []
|
|
127
|
+
# We don't have a way to tag alarms, so we try to delete them by the deploy ID.
|
|
128
|
+
# This can miss alarms in some cases (eg. cache_cluster) so we might want to delete alarms from each API as well.
|
|
129
|
+
MU::Cloud::AWS.cloudwatch(region).describe_alarms.each { |page|
|
|
130
|
+
page.metric_alarms.map(&:alarm_name).each { |alarm_name|
|
|
131
|
+
alarms << alarm_name if alarm_name.match(MU.deploy_id)
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
if !alarms.empty?
|
|
136
|
+
MU::Cloud::AWS.cloudwatch(region).delete_alarms(alarm_names: alarms) unless noop
|
|
137
|
+
MU.log "Deleted alarms #{alarms.join(', ')}"
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
# Locate an existing alarm.
|
|
142
|
+
# @param cloud_id [String]: The cloud provider's identifier for this resource.
|
|
143
|
+
# @param region [String]: The cloud provider region.
|
|
144
|
+
# @param flags [Hash]: Optional flags
|
|
145
|
+
# @return [OpenStruct]: The cloud provider's complete descriptions of matching alarm.
|
|
146
|
+
def self.find(cloud_id: nil, region: MU.curRegion, flags: {})
|
|
147
|
+
MU::Cloud::AWS::Alarm.getAlarmByName(cloud_id, region: region)
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
# Create an alarm.
|
|
151
|
+
def self.setAlarm(
|
|
152
|
+
name: nil, ok_actions: [], alarm_actions: [], insufficient_data_actions: [], metric_name: nil, namespace: nil, statistic: nil,
|
|
153
|
+
dimensions: [], period: nil, unit: nil, evaluation_periods: nil, threshold: nil, comparison_operator: nil, region: MU.curRegion
|
|
154
|
+
)
|
|
155
|
+
|
|
156
|
+
# If the alarm already exists, then assume we're updating it and
|
|
157
|
+
# munge in potentially new arguments.
|
|
158
|
+
ext_alarm = getAlarmByName(name, region: region)
|
|
159
|
+
if ext_alarm
|
|
160
|
+
if !ext_alarm.dimensions.empty?
|
|
161
|
+
ext_alarm.dimensions.each { |dim|
|
|
162
|
+
dimensions << dim.to_h
|
|
163
|
+
}
|
|
164
|
+
dimensions.uniq!
|
|
165
|
+
end
|
|
166
|
+
if alarm_actions
|
|
167
|
+
alarm_actions.concat(ext_alarm.alarm_actions)
|
|
168
|
+
alarm_actions.uniq!
|
|
169
|
+
end
|
|
170
|
+
if ok_actions
|
|
171
|
+
ok_actions.concat(ext_alarm.ok_actions)
|
|
172
|
+
ok_actions.uniq!
|
|
173
|
+
end
|
|
174
|
+
if insufficient_data_actions
|
|
175
|
+
insufficient_data_actions.concat(ext_alarm.insufficient_data_actions)
|
|
176
|
+
insufficient_data_actions.uniq!
|
|
177
|
+
end
|
|
178
|
+
MU.log "Modifying alarm #{name}"
|
|
179
|
+
else
|
|
180
|
+
MU.log "Creating alarm #{name}"
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
begin
|
|
184
|
+
MU::Cloud::AWS.cloudwatch(region).put_metric_alarm(
|
|
185
|
+
alarm_name: name,
|
|
186
|
+
alarm_description: name,
|
|
187
|
+
actions_enabled: true,
|
|
188
|
+
ok_actions: ok_actions,
|
|
189
|
+
alarm_actions: alarm_actions,
|
|
190
|
+
insufficient_data_actions: insufficient_data_actions,
|
|
191
|
+
metric_name: metric_name,
|
|
192
|
+
namespace: namespace,
|
|
193
|
+
statistic: statistic,
|
|
194
|
+
dimensions: dimensions,
|
|
195
|
+
period: period,
|
|
196
|
+
unit: unit,
|
|
197
|
+
evaluation_periods: evaluation_periods,
|
|
198
|
+
threshold: threshold,
|
|
199
|
+
comparison_operator: comparison_operator
|
|
200
|
+
)
|
|
201
|
+
rescue Aws::CloudWatch::Errors::ValidationError => e
|
|
202
|
+
# Dopey but ultimately harmless race condition
|
|
203
|
+
if e.message.match(/A separate request to update this alarm is in progress/)
|
|
204
|
+
MU.log "Duplicate request to create alarm #{name}. This one came from #{caller[0]}", MU::WARN
|
|
205
|
+
sleep 15
|
|
206
|
+
retry
|
|
207
|
+
else
|
|
208
|
+
raise e
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
# Retrieve the complete cloud provider description of a alarm.
|
|
215
|
+
# @param name [String]: The cloud provider's identifier for this alarm.
|
|
216
|
+
# @param region [String]: The cloud provider region
|
|
217
|
+
# @return [OpenStruct]
|
|
218
|
+
def self.getAlarmByName(name, region: MU.curRegion)
|
|
219
|
+
MU::Cloud::AWS.cloudwatch(region).describe_alarms(alarm_names: [name]).metric_alarms.first
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
# Publish logging data, or create a new custom container/group for your logging data
|
|
223
|
+
# @param namespace [String]: The name of the container, or group the data will be added to to.
|
|
224
|
+
# @param metric_data [Array]: The data points describing your new metric.
|
|
225
|
+
# @param region [String]: The cloud provider region.
|
|
226
|
+
def self.createMetric(namespace: nil, metric_data: [], region: MU.curRegion)
|
|
227
|
+
MU::Cloud::AWS.cloudwatch(region).put_metric_data(namespace: namespace, metric_data: metric_data, region: region)
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
# Enable the state of the alarm
|
|
231
|
+
# @param name [String]: The cloud provider's identifier for this alarm.
|
|
232
|
+
# @param region [String]: The cloud provider region.
|
|
233
|
+
def self.enableAlarmAction(name, region: MU.curRegion)
|
|
234
|
+
MU::Cloud::AWS.cloudwatch(region).enable_alarm_actions(alarm_names: [name])
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
# Cloud-specific configuration properties.
|
|
238
|
+
# @param config [MU::Config]: The calling MU::Config object
|
|
239
|
+
# @return [Array<Array,Hash>]: List of required fields, and json-schema Hash of cloud-specific configuration parameters for this resource
|
|
240
|
+
def self.schema(config)
|
|
241
|
+
toplevel_required = []
|
|
242
|
+
schema = {}
|
|
243
|
+
[toplevel_required, schema]
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
# Cloud-specific pre-processing of {MU::Config::BasketofKittens::alarms}, bare and unvalidated.
|
|
247
|
+
# @param alarm [Hash]: The resource to process and validate
|
|
248
|
+
# @param configurator [MU::Config]: The overall deployment configurator of which this resource is a member
|
|
249
|
+
# @return [Boolean]: True if validation succeeded, False otherwise
|
|
250
|
+
def self.validateConfig(alarm, configurator)
|
|
251
|
+
ok = true
|
|
252
|
+
alarm["dimensions"] ||= []
|
|
253
|
+
|
|
254
|
+
if alarm["#TARGETCLASS"] == "cache_cluster"
|
|
255
|
+
alarm['dimensions'] << { "name" => alarm["#TARGETCLASS"], "cloud_class" => "CacheClusterId" }
|
|
256
|
+
alarm["namespace"] = "AWS/ElastiCache" if alarm["namespace"].nil?
|
|
257
|
+
elsif alarm["#TARGETCLASS"] == "server"
|
|
258
|
+
alarm['dimensions'] << { "name" => alarm["#TARGETCLASS"], "cloud_class" => "InstanceId" }
|
|
259
|
+
alarm["namespace"] = "AWS/EC2" if alarm["namespace"].nil?
|
|
260
|
+
elsif alarm["#TARGETCLASS"] == "database"
|
|
261
|
+
alarm['dimensions'] << { "name" => alarm["#TARGETCLASS"], "cloud_class" => "DBInstanceIdentifier" }
|
|
262
|
+
alarm["namespace"] = "AWS/RDS" if alarm["namespace"].nil?
|
|
263
|
+
end
|
|
264
|
+
|
|
265
|
+
alarm.delete("#TARGETCLASS")
|
|
266
|
+
alarm.delete("#TARGETNAME")
|
|
267
|
+
|
|
268
|
+
if alarm["dimensions"]
|
|
269
|
+
alarm["dimensions"].each{ |dimension|
|
|
270
|
+
if dimension["cloud_class"].nil?
|
|
271
|
+
MU.log "You must specify 'cloud_class'", MU::ERR
|
|
272
|
+
ok = false
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
alarm["namespace"], depclass =
|
|
276
|
+
if ["InstanceId", "server", "Server"].include?(dimension["cloud_class"])
|
|
277
|
+
dimension["cloud_class"] = "InstanceId"
|
|
278
|
+
["AWS/EC2", "server"]
|
|
279
|
+
elsif ["AutoScalingGroupName", "server_pool", "ServerPool"].include?(dimension["cloud_class"])
|
|
280
|
+
dimension["cloud_class"] = "AutoScalingGroupName"
|
|
281
|
+
["AWS/EC2", "server_pool"]
|
|
282
|
+
elsif ["DBInstanceIdentifier", "database", "Database"].include?(dimension["cloud_class"])
|
|
283
|
+
dimension["cloud_class"] = "DBInstanceIdentifier"
|
|
284
|
+
["AWS/RDS", "database"]
|
|
285
|
+
elsif ["LoadBalancerName", "loadbalancer", "LoadBalancer"].include?(dimension["cloud_class"])
|
|
286
|
+
dimension["cloud_class"] = "LoadBalancerName"
|
|
287
|
+
["AWS/ELB", "loadbalancer"]
|
|
288
|
+
elsif ["CacheClusterId", "cache_cluster", "CacheCluster"].include?(dimension["cloud_class"])
|
|
289
|
+
dimension["cloud_class"] = "CacheClusterId"
|
|
290
|
+
["AWS/ElastiCache", "cache_cluster"]
|
|
291
|
+
elsif ["VolumeId", "volume", "Volume"].include?(dimension["cloud_class"])
|
|
292
|
+
dimension["cloud_class"] = "VolumeId"
|
|
293
|
+
["AWS/EBS", nil]
|
|
294
|
+
elsif ["BucketName", "bucket", "Bucket"].include?(dimension["cloud_class"])
|
|
295
|
+
dimension["cloud_class"] = "BucketName"
|
|
296
|
+
["AWS/S3", nil]
|
|
297
|
+
elsif ["TopicName", "notification", "Notification"].include?(dimension["cloud_class"])
|
|
298
|
+
dimension["cloud_class"] = "TopicName"
|
|
299
|
+
["AWS/SNS", nil]
|
|
300
|
+
end
|
|
301
|
+
|
|
302
|
+
if !depclass.nil?
|
|
303
|
+
dimension["depclass"] = depclass
|
|
304
|
+
if !dimension["name"].nil? and !dimension["name"].empty?
|
|
305
|
+
alarm["dependencies"] << { "name" => dimension["name"], "type" => depclass }
|
|
306
|
+
end
|
|
307
|
+
end
|
|
308
|
+
}
|
|
309
|
+
end
|
|
310
|
+
|
|
311
|
+
ok = false unless MU::Config::Alarm.validate(alarm, configurator) # XXX the stuff in this method is probably also AWS-specific
|
|
312
|
+
|
|
313
|
+
ok
|
|
314
|
+
end
|
|
315
|
+
|
|
316
|
+
end
|
|
317
|
+
end
|
|
318
|
+
end
|
|
319
|
+
end
|