cloud-mu 1.9.0.pre.beta
Sign up to get free protection for your applications and to get access to all the features.
- 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,646 @@
|
|
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 Cloud
|
17
|
+
class AWS
|
18
|
+
# A search_domain as configured in {MU::Config::BasketofKittens::search_domains}
|
19
|
+
class SearchDomain < MU::Cloud::SearchDomain
|
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::search_domains}
|
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
|
+
@config['domain_name'] = @deploy.getResourceName(@config["name"], max_length: 28, need_unique_string: true).downcase
|
41
|
+
|
42
|
+
params = genParams
|
43
|
+
|
44
|
+
MU.log "Creating ElasticSearch domain #{@config['domain_name']}", details: params
|
45
|
+
resp = MU::Cloud::AWS.elasticsearch(@config['region']).create_elasticsearch_domain(params).domain_status
|
46
|
+
|
47
|
+
tagDomain
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
# Called automatically by {MU::Deploy#createResources}
|
52
|
+
def groom
|
53
|
+
tagDomain
|
54
|
+
@config['domain_name'] ||= @deploydata['domain_name']
|
55
|
+
params = genParams(cloud_desc) # get parameters that would change only
|
56
|
+
|
57
|
+
if params.size > 1
|
58
|
+
waitWhileProcessing # wait until the create finishes, if still going
|
59
|
+
|
60
|
+
MU.log "Updating ElasticSearch domain #{@config['domain_name']}", MU::NOTICE, details: params
|
61
|
+
MU::Cloud::AWS.elasticsearch(@config['region']).update_elasticsearch_domain_config(params)
|
62
|
+
end
|
63
|
+
|
64
|
+
waitWhileProcessing # don't return until creation/updating is complete
|
65
|
+
end
|
66
|
+
|
67
|
+
# Wrapper for cloud_desc method that deals with finding the AWS
|
68
|
+
# domain_name parameter, which isn't what we'd call ourselves if we had
|
69
|
+
# our druthers.
|
70
|
+
def cloud_desc
|
71
|
+
if @config['domain_name']
|
72
|
+
MU::Cloud::AWS.elasticsearch(@config['region']).describe_elasticsearch_domain(
|
73
|
+
domain_name: @config['domain_name']
|
74
|
+
).domain_status
|
75
|
+
elsif @deploydata['domain_name']
|
76
|
+
MU::Cloud::AWS.elasticsearch(@config['region']).describe_elasticsearch_domain(
|
77
|
+
domain_name: @deploydata['domain_name']
|
78
|
+
).domain_status
|
79
|
+
else
|
80
|
+
raise MU::MuError "#{@mu_name} can't find its official Elasticsearch domain name!"
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
# Canonical Amazon Resource Number for this resource
|
85
|
+
# @return [String]
|
86
|
+
def arn
|
87
|
+
cloud_desc.arn
|
88
|
+
end
|
89
|
+
|
90
|
+
# Return the metadata for this SearchDomain rule
|
91
|
+
# @return [Hash]
|
92
|
+
def notify
|
93
|
+
deploy_struct = MU.structToHash(cloud_desc)
|
94
|
+
tags = MU::Cloud::AWS.elasticsearch(@config['region']).list_tags(arn: deploy_struct[:arn]).tag_list
|
95
|
+
deploy_struct['tags'] = tags.map { |t| { t.key => t.value } }
|
96
|
+
if deploy_struct['endpoint']
|
97
|
+
deploy_struct['kibana'] = deploy_struct['endpoint']+"/_plugin/kibana/"
|
98
|
+
end
|
99
|
+
deploy_struct['domain_name'] ||= @config['domain_name'] if @config['domain_name']
|
100
|
+
deploy_struct
|
101
|
+
end
|
102
|
+
|
103
|
+
# Remove all search_domains associated with the currently loaded deployment.
|
104
|
+
# @param noop [Boolean]: If true, will only print what would be done
|
105
|
+
# @param ignoremaster [Boolean]: If true, will remove resources not flagged as originating from this Mu server
|
106
|
+
# @param region [String]: The cloud provider region
|
107
|
+
# @return [void]
|
108
|
+
def self.cleanup(noop: false, ignoremaster: false, region: MU.curRegion, flags: {})
|
109
|
+
list = MU::Cloud::AWS.elasticsearch(region).list_domain_names
|
110
|
+
if list and list.domain_names and list.domain_names.size > 0
|
111
|
+
descs = MU::Cloud::AWS.elasticsearch(region).describe_elasticsearch_domains(domain_names: list.domain_names.map { |d| d.domain_name } )
|
112
|
+
|
113
|
+
descs.domain_status_list.each { |domain|
|
114
|
+
tags = MU::Cloud::AWS.elasticsearch(region).list_tags(arn: domain.arn)
|
115
|
+
tags.tag_list.each { |tag|
|
116
|
+
if tag.key == "MU-ID" and tag.value == MU.deploy_id
|
117
|
+
MU.log "Deleting ElasticSearch Domain #{domain.domain_name}"
|
118
|
+
if !noop
|
119
|
+
MU::Cloud::AWS.elasticsearch(region).delete_elasticsearch_domain(domain_name: domain.domain_name)
|
120
|
+
end
|
121
|
+
break
|
122
|
+
end
|
123
|
+
}
|
124
|
+
}
|
125
|
+
end
|
126
|
+
|
127
|
+
unless noop
|
128
|
+
marker = nil
|
129
|
+
begin
|
130
|
+
resp = MU::Cloud::AWS.iam.list_roles(marker: marker)
|
131
|
+
resp.roles.each{ |role|
|
132
|
+
# XXX Maybe we should have a more generic way to delete IAM profiles and policies. The call itself should be moved from MU::Cloud::AWS::Server.
|
133
|
+
# MU::Cloud::AWS::Server.removeIAMProfile(role.role_name) if role.role_name.match(/^#{Regexp.quote(MU.deploy_id)}/)
|
134
|
+
}
|
135
|
+
marker = resp.marker
|
136
|
+
end while resp.is_truncated
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
# Locate an existing search_domain.
|
141
|
+
# @param cloud_id [String]: The cloud provider's identifier for this resource.
|
142
|
+
# @param region [String]: The cloud provider region.
|
143
|
+
# @param flags [Hash]: Optional flags
|
144
|
+
# @return [OpenStruct]: The cloud provider's complete descriptions of matching search_domain.
|
145
|
+
def self.find(cloud_id: nil, region: MU.curRegion, flags: {})
|
146
|
+
if cloud_id
|
147
|
+
# Annoyingly, we might expect one of several possible artifacts,
|
148
|
+
# since AWS couldn't decide what the real identifier of these
|
149
|
+
# things should be
|
150
|
+
list = MU::Cloud::AWS.elasticsearch(region).list_domain_names
|
151
|
+
if list and list.domain_names and list.domain_names.size > 0
|
152
|
+
descs = MU::Cloud::AWS.elasticsearch(region).describe_elasticsearch_domains(domain_names: list.domain_names.map { |d| d.domain_name } )
|
153
|
+
descs.domain_status_list.each { |domain|
|
154
|
+
return domain if domain.arn == cloud_id
|
155
|
+
return domain if domain.domain_name == cloud_id
|
156
|
+
return domain if domain.domain_id == cloud_id
|
157
|
+
}
|
158
|
+
end
|
159
|
+
end
|
160
|
+
# TODO consider a search by tags
|
161
|
+
nil
|
162
|
+
end
|
163
|
+
|
164
|
+
# Cloud-specific configuration properties.
|
165
|
+
# @param config [MU::Config]: The calling MU::Config object
|
166
|
+
# @return [Array<Array,Hash>]: List of required fields, and json-schema Hash of cloud-specific configuration parameters for this resource
|
167
|
+
def self.schema(config)
|
168
|
+
toplevel_required = ["elasticsearch_version", "instance_type"]
|
169
|
+
versions = MU::Cloud::AWS.elasticsearch.list_elasticsearch_versions.elasticsearch_versions
|
170
|
+
instance_types = nil
|
171
|
+
begin
|
172
|
+
instance_types = MU::Cloud::AWS.elasticsearch.list_elasticsearch_instance_types(
|
173
|
+
elasticsearch_version: "6.3"
|
174
|
+
).elasticsearch_instance_types
|
175
|
+
rescue Aws::ElasticsearchService::Errors::ValidationException
|
176
|
+
# Some regions (GovCloud) lag
|
177
|
+
instance_types = MU::Cloud::AWS.elasticsearch.list_elasticsearch_instance_types(
|
178
|
+
elasticsearch_version: "6.2"
|
179
|
+
).elasticsearch_instance_types
|
180
|
+
end
|
181
|
+
|
182
|
+
schema = {
|
183
|
+
"elasticsearch_version" => {
|
184
|
+
"type" => "string",
|
185
|
+
"default" => versions.first,
|
186
|
+
"description" => "A supported ElasticSearch version for the region of this SearchDomain. Known versions from #{MU.myRegion}: "+versions.join(", ")
|
187
|
+
},
|
188
|
+
"instance_type" => {
|
189
|
+
"type" => "string",
|
190
|
+
"default" => instance_types.first,
|
191
|
+
"description" => "A supported ElasticSearch instance type for the region of this SearchDomain. Known types from #{MU.myRegion}: "+instance_types.join(", ")+"."
|
192
|
+
},
|
193
|
+
"dedicated_masters" => {
|
194
|
+
"type" => "integer",
|
195
|
+
"default" => 0,
|
196
|
+
"description" => "Separate, dedicated master node(s), over and above the search instances specified in instance_count."
|
197
|
+
},
|
198
|
+
"access_policies" => {
|
199
|
+
"type" => "object",
|
200
|
+
"description" => "An IAM policy document for access to ElasticSearch. Our parser expects this to be defined inline like the rest of your YAML/JSON Basket of Kittens, not as raw JSON. For guidance on ElasticSearch IAM capabilities, see: https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-ac.html"
|
201
|
+
},
|
202
|
+
"master_instance_type" => {
|
203
|
+
"type" => "string",
|
204
|
+
"description" => "Instance type for dedicated master nodes, if any were requested. Will default to match instance_type."
|
205
|
+
},
|
206
|
+
"ebs_type" => {
|
207
|
+
"type" => "string",
|
208
|
+
"default" => "standard",
|
209
|
+
"description" => "Type of EBS storage to use for cluster nodes. If 'none' is specified, EBS storage will not be used, but this is only valid for certain instance types.",
|
210
|
+
"enum" => ["standard", "gp2", "io1", "none"]
|
211
|
+
},
|
212
|
+
"ebs_iops" => {
|
213
|
+
"type" => "integer",
|
214
|
+
"description" => "Specifies the IOPD for a Provisioned IOPS EBS volume (SSD). Must specify ebs_type for this to take effect."
|
215
|
+
},
|
216
|
+
"ebs_size" => {
|
217
|
+
"type" => "integer",
|
218
|
+
"default" => 20,
|
219
|
+
"description" => "Specifies the size (GB) of EBS storage. Must specify ebs_type for this to take effect."
|
220
|
+
},
|
221
|
+
"snapshot_hour" => {
|
222
|
+
"type" => "integer",
|
223
|
+
"default" => 23,
|
224
|
+
"description" => "Clock hour (UTC) to begin daily snapshots"
|
225
|
+
},
|
226
|
+
"kms_encryption_key_id" => {
|
227
|
+
"type" => "string",
|
228
|
+
"description" => "If specified, will attempt to enable encryption at rest with this KMS Key ID"
|
229
|
+
},
|
230
|
+
"zone_aware" => {
|
231
|
+
"type" => "boolean",
|
232
|
+
"default" => false,
|
233
|
+
"description" => "Spread search instances across Availability Zones to facilitate replica index sharding for greater resilience. Note that you also must use the native Elasticsearch API to create replica shards for your cluster. Zone awareness requires an even number of instances in the instance count."
|
234
|
+
},
|
235
|
+
"slow_logs" => {
|
236
|
+
"type" => "string",
|
237
|
+
"description" => "The ARN of a CloudWatch Log Group to which we we'll send slow index and search logs. If not specified, a log group will be generated."
|
238
|
+
},
|
239
|
+
"advanced_options" => {
|
240
|
+
"type" => "object",
|
241
|
+
"description" => "Key => Value strings pairs that pass certain configuration options to Elasticsearch. For a list of supported values, see https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-createupdatedomains.html#es-createdomain-configure-advanced-options",
|
242
|
+
},
|
243
|
+
"cognito" => {
|
244
|
+
"type" => "object",
|
245
|
+
"description" => "Options to specify the Cognito user and identity pools for Kibana authentication. For more information, see http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-cognito-auth.html",
|
246
|
+
"required" => ["user_pool_id", "identity_pool_id"],
|
247
|
+
"properties" => {
|
248
|
+
"user_pool_id" => {
|
249
|
+
"type" => "string",
|
250
|
+
"description" => "Amazon Cognito user pool. Looks like 'us-east-1:69e2223c-2c74-42ca-9b27-1037fcb60b91'. See https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html"
|
251
|
+
},
|
252
|
+
"identity_pool_id" => {
|
253
|
+
"type" => "string",
|
254
|
+
"description" => "Amazon Cognito identity pool. Looks like 'us-east-1_eSwWA1VGY'. See https://docs.aws.amazon.com/cognito/latest/developerguide/identity-pools.html"
|
255
|
+
},
|
256
|
+
"role_arn" => {
|
257
|
+
"type" => "string",
|
258
|
+
"description" => "An IAM role that has the AmazonESCognitoAccess policy attached. If not specified, one will be generated automatically."
|
259
|
+
}
|
260
|
+
}
|
261
|
+
}
|
262
|
+
}
|
263
|
+
[toplevel_required, schema]
|
264
|
+
end
|
265
|
+
|
266
|
+
# Cloud-specific pre-processing of {MU::Config::BasketofKittens::search_domains}, bare and unvalidated.
|
267
|
+
# @param dom [Hash]: The resource to process and validate
|
268
|
+
# @param configurator [MU::Config]: The overall deployment configurator of which this resource is a member
|
269
|
+
# @return [Boolean]: True if validation succeeded, False otherwise
|
270
|
+
def self.validateConfig(dom, configurator)
|
271
|
+
ok = true
|
272
|
+
versions = MU::Cloud::AWS.elasticsearch(dom['region']).list_elasticsearch_versions.elasticsearch_versions
|
273
|
+
if !versions.include?(dom["elasticsearch_version"])
|
274
|
+
MU.log "Invalid ElasticSearch version '#{dom["elasticsearch_version"]}' in SearchDomain '#{dom['name']}'", MU::ERR, details: versions
|
275
|
+
ok = false
|
276
|
+
else
|
277
|
+
resp = MU::Cloud::AWS.elasticsearch(dom['region']).list_elasticsearch_instance_types(
|
278
|
+
elasticsearch_version: dom["elasticsearch_version"]
|
279
|
+
)
|
280
|
+
|
281
|
+
if resp.nil? or resp.elasticsearch_instance_types.nil?
|
282
|
+
MU.log "Failed to list valid ElasticSearch instance types in #{dom['region']}", MU::WARN
|
283
|
+
end
|
284
|
+
|
285
|
+
if !resp.elasticsearch_instance_types.include?(dom["instance_type"])
|
286
|
+
MU.log "Invalid instance_type '#{dom["instance_type"]}' in SearchDomain '#{dom['name']}'", MU::ERR, details: resp.elasticsearch_instance_types
|
287
|
+
ok = false
|
288
|
+
end
|
289
|
+
end
|
290
|
+
|
291
|
+
if dom["dedicated_masters"] > 0 and dom["master_instance_type"].nil?
|
292
|
+
dom["master_instance_type"] = dom["instance_type"]
|
293
|
+
end
|
294
|
+
|
295
|
+
if dom["instance_count"] < 1
|
296
|
+
MU.log "Must have at least one search node in SearchDomain '#{dom['name']}'", MU::ERR
|
297
|
+
ok = false
|
298
|
+
end
|
299
|
+
|
300
|
+
if dom["zone_aware"] and (dom["instance_count"] % 2) != 0
|
301
|
+
MU.log "Must set an even number for instance_count when enabling Zone Awareness in SearchDomain '#{dom['name']}'", MU::ERR
|
302
|
+
ok = false
|
303
|
+
end
|
304
|
+
|
305
|
+
if !dom["vpc"]
|
306
|
+
MU.log "No VPC specified for SearchDomain '#{dom['name']},' endpoints will be public", MU::NOTICE
|
307
|
+
if (dom['ingress_rules'] and dom['ingress_rules'].size > 0) or
|
308
|
+
(dom['add_firewall_rules'] and dom['add_firewall_rules'].size > 0)
|
309
|
+
MU.log "You must deploy SearchDomain '#{dom['name']}' into a VPC in order to use ingress_rules", MU::ERR
|
310
|
+
ok = false
|
311
|
+
end
|
312
|
+
else
|
313
|
+
if dom['ingress_rules']
|
314
|
+
fwname = "searchdomain-#{dom['name']}"
|
315
|
+
acl = {"name" => fwname, "rules" => dom['ingress_rules'], "region" => dom['region'], "optional_tags" => dom['optional_tags']}
|
316
|
+
acl["tags"] = dom['tags'] if dom['tags'] && !dom['tags'].empty?
|
317
|
+
acl["vpc"] = dom['vpc'].dup if dom['vpc']
|
318
|
+
ok = false if !configurator.insertKitten(acl, "firewall_rules")
|
319
|
+
dom["add_firewall_rules"] = [] if dom["add_firewall_rules"].nil?
|
320
|
+
dom["add_firewall_rules"] << {"rule_name" => fwname}
|
321
|
+
end
|
322
|
+
end
|
323
|
+
|
324
|
+
if dom['snapshot_hour'] < 0 or dom['snapshot_hour'] > 23
|
325
|
+
MU.log "Invalid snapshot_hour in SearchDomain '#{dom['name']}', must be in the range 0..23", MU::ERR
|
326
|
+
ok = false
|
327
|
+
end
|
328
|
+
|
329
|
+
if dom['slow_logs']
|
330
|
+
if configurator.haveLitterMate?(dom['slow_logs'], "log")
|
331
|
+
dom['dependencies'] << { "name" => dom['slow_logs'], "type" => "log" }
|
332
|
+
else
|
333
|
+
log_group = MU::Cloud::AWS::Log.find(cloud_id: dom['slow_logs'], region: dom['region'])
|
334
|
+
if !log_group
|
335
|
+
MU.log "Specified slow_logs CloudWatch log group '#{dom['slow_logs']}' in SearchDomain '#{dom['name']}' doesn't appear to exist", MU::ERR
|
336
|
+
ok = false
|
337
|
+
else
|
338
|
+
dom['slow_logs'] = log_group.arn
|
339
|
+
end
|
340
|
+
end
|
341
|
+
else
|
342
|
+
dom['slow_logs'] = dom['name']+"-slowlog"
|
343
|
+
log_group = { "name" => dom['slow_logs'] }
|
344
|
+
ok = false if !configurator.insertKitten(log_group, "logs")
|
345
|
+
dom['dependencies'] << { "name" => dom['slow_logs'], "type" => "log" }
|
346
|
+
end
|
347
|
+
|
348
|
+
if dom['advanced_options']
|
349
|
+
dom['advanced_options'].each_pair { |key, val|
|
350
|
+
dom['advanced_options'][key] = val.to_s
|
351
|
+
}
|
352
|
+
end
|
353
|
+
|
354
|
+
if dom['cognito']
|
355
|
+
begin
|
356
|
+
MU::Cloud::AWS.cognito_ident(dom['region']).describe_identity_pool(
|
357
|
+
identity_pool_id: dom['cognito']['identity_pool_id']
|
358
|
+
)
|
359
|
+
rescue ::Aws::CognitoIdentity::Errors::ValidationException, Aws::CognitoIdentity::Errors::ResourceNotFoundException => e
|
360
|
+
MU.log "Cognito identity pool #{dom['cognito']['identity_pool_id']} malformed or does not exist in SearchDomain '#{dom['name']}'", MU::ERR
|
361
|
+
ok = false
|
362
|
+
end
|
363
|
+
begin
|
364
|
+
MU::Cloud::AWS.cognito_user(dom['region']).describe_user_pool(
|
365
|
+
user_pool_id: dom['cognito']['user_pool_id']
|
366
|
+
)
|
367
|
+
rescue ::Aws::CognitoIdentityProvider::Errors::InvalidParameterException, Aws::CognitoIdentityProvider::Errors::ResourceNotFoundException => e
|
368
|
+
MU.log "Cognito identity pool #{dom['cognito']['user_pool_id']} malformed or does not exist in SearchDomain '#{dom['name']}'", MU::ERR
|
369
|
+
ok = false
|
370
|
+
end
|
371
|
+
|
372
|
+
if dom['cognito']['role_arn']
|
373
|
+
rolename = dom['cognito']['role_arn'].sub(/.*?:role\/([a-z0-9-]+)$/, '\1')
|
374
|
+
begin
|
375
|
+
if !dom['cognito']['role_arn'].match(/^arn:/)
|
376
|
+
role = MU::Cloud::AWS.iam(dom['region']).get_role(role_name: rolename)
|
377
|
+
dom['cognito']['role_arn'] = role.role.arn
|
378
|
+
end
|
379
|
+
pols = MU::Cloud::AWS.iam(dom['region']).list_attached_role_policies(role_name: rolename).attached_policies
|
380
|
+
found = false
|
381
|
+
pols.each { |policy|
|
382
|
+
found = true if policy.policy_name == "AmazonESCognitoAccess"
|
383
|
+
}
|
384
|
+
if !found
|
385
|
+
MU.log "IAM role #{dom['cognito']['role_arn']} exists, but not does have the AmazonESCognitoAccess policy attached. SearchDomain '#{dom['name']}' may not have necessary Cognito permissions.", MU::WARN
|
386
|
+
end
|
387
|
+
rescue Aws::IAM::Errors::NoSuchEntity => e
|
388
|
+
MU.log "IAM role #{dom['cognito']['role_arn']} malformed or does not exist in SearchDomain '#{dom['name']}'", MU::ERR
|
389
|
+
ok = false
|
390
|
+
end
|
391
|
+
else
|
392
|
+
roledesc = {
|
393
|
+
"name" => dom['name']+"cognitorole",
|
394
|
+
"can_assume" => [
|
395
|
+
{
|
396
|
+
"entity_id" => "es.amazonaws.com",
|
397
|
+
"entity_type" => "service"
|
398
|
+
}
|
399
|
+
],
|
400
|
+
"import" => [
|
401
|
+
"AmazonESCognitoAccess"
|
402
|
+
]
|
403
|
+
}
|
404
|
+
configurator.insertKitten(roledesc, "roles")
|
405
|
+
|
406
|
+
dom['dependencies'] ||= []
|
407
|
+
dom['dependencies'] << {
|
408
|
+
"type" => "role",
|
409
|
+
"name" => dom['name']+"cognitorole"
|
410
|
+
}
|
411
|
+
end
|
412
|
+
|
413
|
+
end
|
414
|
+
|
415
|
+
# TODO queue['access_policies'] should generate a policy blob via MU::Cloud::AWS::Role
|
416
|
+
|
417
|
+
ok
|
418
|
+
end
|
419
|
+
|
420
|
+
private
|
421
|
+
|
422
|
+
# create_elasticsearch_domain and update_elasticsearch_domain_config
|
423
|
+
# take almost the same set of parameters, so our create and groom
|
424
|
+
# methods do nearly the same things. Factor it. If we're operating on
|
425
|
+
# an existing domain, only return things that would be changed.
|
426
|
+
def genParams(ext = nil)
|
427
|
+
params = {
|
428
|
+
:domain_name => @config['domain_name'] || @deploydata['domain_name']
|
429
|
+
}
|
430
|
+
|
431
|
+
if ext.nil?
|
432
|
+
params[:elasticsearch_version] = @config['elasticsearch_version']
|
433
|
+
elsif ext.elasticsearch_version != @config['elasticsearch_version']
|
434
|
+
|
435
|
+
raise MU::MuError, "Can't change ElasticSearch version of an existing cluster"
|
436
|
+
end
|
437
|
+
|
438
|
+
if ext.nil? or
|
439
|
+
ext.elasticsearch_cluster_config.instance_type != @config['instance_type'] or
|
440
|
+
ext.elasticsearch_cluster_config.instance_count != @config['instance_count'] or
|
441
|
+
ext.elasticsearch_cluster_config.zone_awareness_enabled != @config['zone_aware']
|
442
|
+
params[:elasticsearch_cluster_config] = {}
|
443
|
+
params[:elasticsearch_cluster_config][:instance_type] = @config['instance_type']
|
444
|
+
params[:elasticsearch_cluster_config][:instance_count] = @config['instance_count']
|
445
|
+
params[:elasticsearch_cluster_config][:zone_awareness_enabled] = @config['zone_aware']
|
446
|
+
end
|
447
|
+
|
448
|
+
if @config['dedicated_masters'] > 0
|
449
|
+
if ext.nil? or !ext.elasticsearch_cluster_config.dedicated_master_enabled or
|
450
|
+
ext.elasticsearch_cluster_config.dedicated_master_count != @config['dedicated_masters'] or
|
451
|
+
ext.elasticsearch_cluster_config.dedicated_master_type != @config['master_instance_type']
|
452
|
+
params[:elasticsearch_cluster_config][:dedicated_master_enabled] = true
|
453
|
+
params[:elasticsearch_cluster_config][:dedicated_master_count] = @config['dedicated_masters']
|
454
|
+
params[:elasticsearch_cluster_config][:dedicated_master_type] = @config['master_instance_type']
|
455
|
+
end
|
456
|
+
end
|
457
|
+
|
458
|
+
if ext.nil? or ext.snapshot_options.automated_snapshot_start_hour != @config['snapshot_hour']
|
459
|
+
params[:snapshot_options] = {}
|
460
|
+
params[:snapshot_options][:automated_snapshot_start_hour] = @config['snapshot_hour']
|
461
|
+
end
|
462
|
+
|
463
|
+
if @config['access_policies']
|
464
|
+
# TODO check against ext.access_policies.options
|
465
|
+
params[:access_policies] = JSON.generate(@config['access_policies'])
|
466
|
+
end
|
467
|
+
|
468
|
+
if @config['slow_logs']
|
469
|
+
arn = nil
|
470
|
+
if @config['slow_logs'].match(/^arn:/i)
|
471
|
+
arn = @config['slow_logs']
|
472
|
+
else
|
473
|
+
log_group = @deploy.findLitterMate(type: "log", name: @config['slow_logs'])
|
474
|
+
log_group = MU::Cloud::AWS::Log.find(cloud_id: log_group.mu_name, region: log_group.cloudobj.config['region'])
|
475
|
+
if log_group.nil? or log_group.arn.nil?
|
476
|
+
raise MuError, "Failed to retrieve ARN of sibling LogGroup '#{@config['slow_logs']}'"
|
477
|
+
end
|
478
|
+
arn = log_group.arn
|
479
|
+
end
|
480
|
+
|
481
|
+
if arn
|
482
|
+
@config['slow_logs'] = arn
|
483
|
+
end
|
484
|
+
|
485
|
+
if ext.nil? or
|
486
|
+
ext.log_publishing_options.nil? or
|
487
|
+
ext.log_publishing_options["INDEX_SLOW_LOGS"].nil? or
|
488
|
+
!ext.log_publishing_options["INDEX_SLOW_LOGS"][:enabled] or
|
489
|
+
ext.log_publishing_options["INDEX_SLOW_LOGS"][:cloud_watch_logs_log_group_arn] != arn or
|
490
|
+
ext.log_publishing_options["SEARCH_SLOW_LOGS"].nil? or
|
491
|
+
!ext.log_publishing_options["SEARCH_SLOW_LOGS"][:enabled] or
|
492
|
+
ext.log_publishing_options["SEARCH_SLOW_LOGS"][:cloud_watch_logs_log_group_arn] != arn
|
493
|
+
params[:log_publishing_options] = {}
|
494
|
+
params[:log_publishing_options]["INDEX_SLOW_LOGS"] = {}
|
495
|
+
params[:log_publishing_options]["INDEX_SLOW_LOGS"][:enabled] = true
|
496
|
+
params[:log_publishing_options]["INDEX_SLOW_LOGS"][:cloud_watch_logs_log_group_arn] = arn
|
497
|
+
|
498
|
+
params[:log_publishing_options]["SEARCH_SLOW_LOGS"] = {}
|
499
|
+
params[:log_publishing_options]["SEARCH_SLOW_LOGS"][:enabled] = true
|
500
|
+
params[:log_publishing_options]["SEARCH_SLOW_LOGS"][:cloud_watch_logs_log_group_arn] = arn
|
501
|
+
MU::Cloud::AWS::Log.allowService("es.amazonaws.com", arn, @config['region'])
|
502
|
+
end
|
503
|
+
end
|
504
|
+
|
505
|
+
if @config['advanced_options'] and (ext.nil? or
|
506
|
+
ext.advanced_options != @config['advanced_options'])
|
507
|
+
params[:advanced_options] = {}
|
508
|
+
@config['advanced_options'].each_pair { |key, value|
|
509
|
+
params[:advanced_options][key] = value
|
510
|
+
}
|
511
|
+
end
|
512
|
+
|
513
|
+
if @config['vpc']
|
514
|
+
subnet_ids = []
|
515
|
+
sgs = []
|
516
|
+
if !@config["vpc"]["subnets"].nil? and @config["vpc"]["subnets"].size > 0
|
517
|
+
@config["vpc"]["subnets"].each { |subnet|
|
518
|
+
subnet_obj = @vpc.getSubnet(cloud_id: subnet["subnet_id"], name: subnet["subnet_name"])
|
519
|
+
subnet_ids << subnet_obj.cloud_id
|
520
|
+
}
|
521
|
+
else
|
522
|
+
@vpc.subnets.each { |subnet_obj|
|
523
|
+
next if subnet_obj.private? and ["all_public", "public"].include?(@config["vpc"]["subnet_pref"])
|
524
|
+
next if !subnet_obj.private? and ["all_private", "private"].include?(@config["vpc"]["subnet_pref"])
|
525
|
+
subnet_ids << subnet_obj.cloud_id
|
526
|
+
}
|
527
|
+
end
|
528
|
+
if subnet_ids.size == 0
|
529
|
+
raise MuError, "No valid subnets found for #{@mu_name} from #{@config["vpc"]}"
|
530
|
+
end
|
531
|
+
|
532
|
+
if @dependencies.has_key?("firewall_rule")
|
533
|
+
@dependencies['firewall_rule'].values.each { |sg|
|
534
|
+
sgs << sg.cloud_id
|
535
|
+
}
|
536
|
+
end
|
537
|
+
|
538
|
+
if ext.nil? or
|
539
|
+
ext.vpc_options.subnet_ids != subnet_ids or
|
540
|
+
ext.vpc_options.security_group_ids != sgs
|
541
|
+
params[:vpc_options] = {}
|
542
|
+
params[:vpc_options][:subnet_ids] = subnet_ids
|
543
|
+
params[:vpc_options][:security_group_ids] = sgs
|
544
|
+
end
|
545
|
+
end
|
546
|
+
|
547
|
+
if @config['ebs_type']
|
548
|
+
if ext.nil? or ext.ebs_options.nil? or !ext.ebs_options.ebs_enabled or
|
549
|
+
ext.ebs_options.volume_type != @config['ebs_type'] or
|
550
|
+
ext.ebs_options.volume_size != @config['ebs_size'] or
|
551
|
+
ext.ebs_options.iops != @config['ebs_iops']
|
552
|
+
params[:ebs_options] = {}
|
553
|
+
params[:ebs_options][:ebs_enabled] = true
|
554
|
+
params[:ebs_options][:volume_type] = @config['ebs_type']
|
555
|
+
params[:ebs_options][:volume_size] = @config['ebs_size']
|
556
|
+
if @config['ebs_iops']
|
557
|
+
params[:ebs_options][:iops] = @config['ebs_iops']
|
558
|
+
end
|
559
|
+
end
|
560
|
+
end
|
561
|
+
|
562
|
+
if @config['kms_encryption_key_id']
|
563
|
+
if ext.nil? or !ext.encryption_at_rest_options.enabled or
|
564
|
+
ext.kms_key_id != @config['kms_encryption_key_id']
|
565
|
+
params[:encryption_at_rest_options] = {}
|
566
|
+
params[:encryption_at_rest_options][:enabled] = true
|
567
|
+
params[:encryption_at_rest_options][:kms_key_id] = @config['kms_encryption_key_id']
|
568
|
+
end
|
569
|
+
end
|
570
|
+
|
571
|
+
|
572
|
+
# XXX API fails with "Amazon Elasticsearch must be allowed to use the
|
573
|
+
# passed role" when we do this on creation, but it works fine if we
|
574
|
+
# modify an existing group. AWS bug, workaround is to just apply
|
575
|
+
# this in groom phase exclusively.
|
576
|
+
if @config['cognito'] and !ext.nil?
|
577
|
+
myrole = setIAMPolicies
|
578
|
+
|
579
|
+
if ext.nil? or !ext.cognito_options.enabled or
|
580
|
+
ext.cognito_options.user_pool_id != @config['cognito']['user_pool_id'] or
|
581
|
+
ext.cognito_options.identity_pool_id != @config['cognito']['identity_pool_id'] or
|
582
|
+
(@config['cognito']['role_arn'] and ext.cognito_options.role_arn != @config['cognito']['role_arn'])
|
583
|
+
params[:cognito_options] = {}
|
584
|
+
params[:cognito_options][:enabled] = true
|
585
|
+
params[:cognito_options][:user_pool_id] = @config['cognito']['user_pool_id']
|
586
|
+
params[:cognito_options][:identity_pool_id] = @config['cognito']['identity_pool_id']
|
587
|
+
if @config['cognito']['role_arn']
|
588
|
+
params[:cognito_options][:role_arn] = @config['cognito']['role_arn']
|
589
|
+
else
|
590
|
+
myrole = @deploy.findLitterMate(name: @config['name']+"cognitorole", type: "roles")
|
591
|
+
params[:cognito_options][:role_arn] = myrole.cloudobj.arn
|
592
|
+
end
|
593
|
+
end
|
594
|
+
end
|
595
|
+
|
596
|
+
params
|
597
|
+
end
|
598
|
+
|
599
|
+
def tagDomain
|
600
|
+
tags = [{ key: "Name", value: @mu_name }]
|
601
|
+
|
602
|
+
MU::MommaCat.listStandardTags.each_pair { |name, value|
|
603
|
+
tags << {key: name, value: value }
|
604
|
+
}
|
605
|
+
|
606
|
+
if @config['optional_tags']
|
607
|
+
MU::MommaCat.listOptionalTags.each_pair { |name, value|
|
608
|
+
tags << {key: name, value: value }
|
609
|
+
}
|
610
|
+
end
|
611
|
+
|
612
|
+
if @config['tags']
|
613
|
+
@config['tags'].each { |tag|
|
614
|
+
tags << {key: tag['key'], value: tag['value'] }
|
615
|
+
}
|
616
|
+
end
|
617
|
+
domain = cloud_desc
|
618
|
+
if !domain or !domain.arn
|
619
|
+
raise MU::MuError, "Can't tag ElasticSearch domain, cloud descriptor came back without an ARN"
|
620
|
+
end
|
621
|
+
|
622
|
+
MU::Cloud::AWS.elasticsearch(@config['region']).add_tags(
|
623
|
+
arn: domain.arn,
|
624
|
+
tag_list: tags
|
625
|
+
)
|
626
|
+
end
|
627
|
+
|
628
|
+
def waitWhileProcessing
|
629
|
+
retries = 0
|
630
|
+
interval = 60
|
631
|
+
|
632
|
+
begin
|
633
|
+
resp = cloud_desc
|
634
|
+
if (resp.endpoint.nil? or resp.endpoint.empty?) and !resp.deleted
|
635
|
+
loglevel = (retries > 0 and retries % 3 == 0) ? MU::NOTICE : MU::DEBUG
|
636
|
+
MU.log "Waiting for Elasticsearch domain #{@mu_name} (#{@config['domain_name']}) to finish creating", loglevel
|
637
|
+
sleep interval
|
638
|
+
end
|
639
|
+
retries += 1
|
640
|
+
end while (resp.endpoint.nil? or resp.endpoint.empty?) and !resp.deleted
|
641
|
+
end
|
642
|
+
|
643
|
+
end
|
644
|
+
end
|
645
|
+
end
|
646
|
+
end
|