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
data/bin/mu-deploy
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
#!/usr/local/ruby-current/bin/ruby
|
|
2
|
+
# Copyright:: Copyright (c) 2014 eGlobalTech, Inc., all rights reserved
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the BSD-3 license (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License in the root of the project or at
|
|
7
|
+
#
|
|
8
|
+
# http://egt-labs.com/mu/LICENSE.html
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
require File.realpath(File.expand_path(File.dirname(__FILE__)+"/mu-load-config.rb"))
|
|
18
|
+
# now we have our global config available as the read-only hash $MU_CFG
|
|
19
|
+
|
|
20
|
+
require 'rubygems'
|
|
21
|
+
require 'bundler/setup'
|
|
22
|
+
require 'json'
|
|
23
|
+
require 'erb'
|
|
24
|
+
require 'optimist'
|
|
25
|
+
require 'json-schema'
|
|
26
|
+
require 'mu'
|
|
27
|
+
|
|
28
|
+
$opts = Optimist::options do
|
|
29
|
+
banner <<-EOS
|
|
30
|
+
Usage:
|
|
31
|
+
#{$0} [-e <environment>] [-r region] [-v] [-d] [-w] [-c] [-n] [-s] [-j] [-p parameter=value] /path/to/stack/config.[json|yaml] [-u deploy_id [-l]] [-r deploy_id]
|
|
32
|
+
EOS
|
|
33
|
+
opt :environment, "Environment to set on creation.", :require => false, :default => "dev"
|
|
34
|
+
opt :region, "Default region for newly-created cloud resources.", :require => false, :default => MU.myRegion, :type => :string
|
|
35
|
+
opt :nocleanup, "Skip cleaning up resources on failed deployments. Used for debugging.", :require => false, :default => false
|
|
36
|
+
opt :web, "Generate web-friendly (HTML) output.", :require => false, :default => false, :type => :boolean
|
|
37
|
+
opt :dryrun, "Do not build a stack, only run configuration validation.", :require => false, :default => false, :type => :boolean
|
|
38
|
+
opt :skipinitialupdates, "Node bootstrapping normally runs an internal recipe that does a full system update. This disables that behavior.", :require => false, :default => false, :type => :boolean
|
|
39
|
+
opt :parameter, "Pass a parameter to the configuration parser (Name=Value). This will be presented to your config file as the ERB variable $Name.", :require => false, :type => :string, :multi => true
|
|
40
|
+
opt :update, "Update the stored configuration of an existing deployment, instead of creating a new deploy.", :require => false, :type => :string
|
|
41
|
+
opt :cloudformation, "Emit Amazon Web Services targets into a CloudFormation template instead of building real services.", :require => false, :default => false, :type => :boolean
|
|
42
|
+
opt :cloudformation_output, "When emitting a CloudFormation template, put the final product in this location instead of in /tmp. Takes a local file path or an s3:// URI. S3 uploads will be given AUTHENTICATED-READ permissions.", :require => false, :type => :string
|
|
43
|
+
opt :verbose, "Display debugging output.", :require => false, :default => false, :type => :boolean
|
|
44
|
+
opt :quiet, "Display minimal output.", :require => false, :default => false, :type => :boolean
|
|
45
|
+
end
|
|
46
|
+
verbosity = MU::Logger::NORMAL
|
|
47
|
+
verbosity = MU::Logger::LOUD if $opts[:verbose]
|
|
48
|
+
verbosity = MU::Logger::QUIET if $opts[:quiet]
|
|
49
|
+
|
|
50
|
+
if $opts[:verbose] and $opts[:quiet]
|
|
51
|
+
MU.log "Cannot set both --verbose and --quiet", MU::ERR
|
|
52
|
+
exit 1
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
if $opts[:liveupdate] and !$opts[:update]
|
|
56
|
+
MU.log "--liveupdate only valid when combined with --update", MU::ERR
|
|
57
|
+
exit 1
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
MU.setVar("curRegion", $opts[:region]) if $opts[:region]
|
|
61
|
+
MU.setLogging(verbosity, $opts[:web])
|
|
62
|
+
|
|
63
|
+
# Parse any paramater options into something useable.
|
|
64
|
+
params = Hash.new
|
|
65
|
+
$opts[:parameter].each { |param|
|
|
66
|
+
name, value = param.split(/\s*=\s*/, 2)
|
|
67
|
+
params[name] = value
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
# We want our config files (which can be ERB templates) to have this variable
|
|
71
|
+
# available to them.
|
|
72
|
+
$environment = $opts[:environment]
|
|
73
|
+
|
|
74
|
+
if !ARGV[0] or ARGV[0].empty?
|
|
75
|
+
MU.log("You must specify a stack configuration file!", MU::ERR, html: $opts[:web])
|
|
76
|
+
exit 1
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
begin
|
|
80
|
+
config = File.realdirpath(ARGV[0])
|
|
81
|
+
File.read(config)
|
|
82
|
+
rescue Errno::ENOENT => e
|
|
83
|
+
MU.log "#{e.message}", MU::ERR, html: $opts[:web]
|
|
84
|
+
exit 1
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
MU.log "Loading #{config}", html: $opts[:web], details: $opts
|
|
89
|
+
|
|
90
|
+
conf_engine = MU::Config.new(config, $opts[:skipinitialupdates], params: params, updating: $opts[:update])
|
|
91
|
+
stack_conf = conf_engine.config
|
|
92
|
+
|
|
93
|
+
if $opts[:dryrun] or $opts[:verbose]
|
|
94
|
+
puts stack_conf.to_yaml
|
|
95
|
+
conf_engine.visualizeDependencies
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
if $opts[:dryrun]
|
|
99
|
+
MU.log("#{$config} loaded successfully.", html: $opts[:web])
|
|
100
|
+
if MU::Cloud::AWS.hosted # XXX actually, check whether we're targeting AWS resources
|
|
101
|
+
# I do not understand why this is necessary, but here we are.
|
|
102
|
+
Thread.handle_interrupt(MU::Cloud::MuCloudResourceNotImplemented => :never) {
|
|
103
|
+
begin
|
|
104
|
+
Thread.handle_interrupt(MU::Cloud::MuCloudResourceNotImplemented => :immediate) {
|
|
105
|
+
MU.log "Cost calculator not available for this stack, as it uses a resource not implemented in Mu's CloudFormation layer.", MU::WARN, verbosity: MU::Logger::NORMAL
|
|
106
|
+
Thread.current.exit
|
|
107
|
+
}
|
|
108
|
+
ensure
|
|
109
|
+
end
|
|
110
|
+
}
|
|
111
|
+
begin
|
|
112
|
+
cost_dummy_deploy = MU::Deploy.new(
|
|
113
|
+
$opts[:environment],
|
|
114
|
+
verbosity: MU::Logger::SILENT,
|
|
115
|
+
force_cloudformation: true,
|
|
116
|
+
cloudformation_path: "/dev/null",
|
|
117
|
+
nocleanup: false,
|
|
118
|
+
no_artifacts: true,
|
|
119
|
+
stack_conf: stack_conf
|
|
120
|
+
)
|
|
121
|
+
cost_dummy_deploy.run
|
|
122
|
+
rescue MU::Cloud::MuCloudResourceNotImplemented, MU::Cloud::MuCloudFlagNotImplemented
|
|
123
|
+
MU.log "Cost calculator not available for this stack, as it uses a resource not implemented in Mu's CloudFormation layer.", MU::WARN, verbosity: MU::Logger::NORMAL
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
exit
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
if $opts[:update]
|
|
130
|
+
deploy = MU::MommaCat.new($opts[:update])
|
|
131
|
+
# TODO consider whether this is useful/valid
|
|
132
|
+
# old_conf = JSON.parse(File.read(deploy.deploy_dir+"/basket_of_kittens.json"))
|
|
133
|
+
# stack_conf = old_conf.merge(stack_conf)
|
|
134
|
+
deploy.updateBasketofKittens(stack_conf)
|
|
135
|
+
deployer = MU::Deploy.new(
|
|
136
|
+
deploy.environment,
|
|
137
|
+
verbosity: verbosity,
|
|
138
|
+
webify_logs: $opts[:web],
|
|
139
|
+
nocleanup: true, # don't accidentally blow up an existing deploy
|
|
140
|
+
stack_conf: stack_conf,
|
|
141
|
+
deploy_id: $opts[:update],
|
|
142
|
+
deploy_obj: deploy
|
|
143
|
+
)
|
|
144
|
+
deployer.run
|
|
145
|
+
exit 0
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
$application_cookbook = stack_conf["application_cookbook"]
|
|
149
|
+
Dir.chdir(MU.installDir)
|
|
150
|
+
|
|
151
|
+
cfm_path = "/tmp/cloudformation-#{stack_conf['appname']}.json"
|
|
152
|
+
if !$opts[:cloudformation_output].nil?
|
|
153
|
+
cfm_path = $opts[:cloudformation_output]
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
deployer = MU::Deploy.new(
|
|
157
|
+
$opts[:environment],
|
|
158
|
+
verbosity: verbosity,
|
|
159
|
+
webify_logs: $opts[:web],
|
|
160
|
+
nocleanup: $opts[:nocleanup],
|
|
161
|
+
cloudformation_path: cfm_path,
|
|
162
|
+
force_cloudformation: $opts[:cloudformation],
|
|
163
|
+
stack_conf: stack_conf
|
|
164
|
+
)
|
|
165
|
+
|
|
166
|
+
deployer.run
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#!/usr/local/ruby-current/bin/ruby
|
|
2
|
+
# Copyright:: Copyright (c) 2014 eGlobalTech, Inc., all rights reserved
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the BSD-3 license (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License in the root of the project or at
|
|
7
|
+
#
|
|
8
|
+
# http://egt-labs.com/mu/LICENSE.html
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
#
|
|
16
|
+
# Manages network access to our syslog port (10514) for clients, by harvesting
|
|
17
|
+
# a list of IPs from Chef (and assuming that we're in EC2).
|
|
18
|
+
|
|
19
|
+
if ARGV.size > 0
|
|
20
|
+
puts "#{$0}: Freshen the Mu Master's security groups to allow client nodes to connect back."
|
|
21
|
+
exit 1
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
require 'rubygems'
|
|
25
|
+
require 'bundler/setup'
|
|
26
|
+
require 'mu'
|
|
27
|
+
|
|
28
|
+
# XXX this should be rolled into mu-aws-setup
|
|
29
|
+
|
|
30
|
+
MU::Cloud::AWS.openFirewallForClients
|
data/bin/mu-gcp-setup
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
#!/usr/local/ruby-current/bin/ruby
|
|
2
|
+
#
|
|
3
|
+
# Copyright:: Copyright (c) 2017 eGlobalTech, Inc., all rights reserved
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the BSD-3 license (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License in the root of the project or at
|
|
8
|
+
#
|
|
9
|
+
# http://egt-labs.com/mu/LICENSE.html
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
|
|
17
|
+
# Perform initial Mu setup tasks:
|
|
18
|
+
# 1. Set up an appropriate Security Group
|
|
19
|
+
# 2. Associate a specific Elastic IP address to this MU server, if required.
|
|
20
|
+
# 3. Create an S3 bucket for Mu logs.
|
|
21
|
+
|
|
22
|
+
require 'etc'
|
|
23
|
+
require 'securerandom'
|
|
24
|
+
|
|
25
|
+
require File.expand_path(File.dirname(__FILE__))+"/mu-load-config.rb"
|
|
26
|
+
|
|
27
|
+
require 'rubygems'
|
|
28
|
+
require 'bundler/setup'
|
|
29
|
+
require 'json'
|
|
30
|
+
require 'erb'
|
|
31
|
+
require 'optimist'
|
|
32
|
+
require 'json-schema'
|
|
33
|
+
require 'mu'
|
|
34
|
+
Dir.chdir(MU.installDir)
|
|
35
|
+
|
|
36
|
+
$opts = Optimist::options do
|
|
37
|
+
banner <<-EOS
|
|
38
|
+
Usage:
|
|
39
|
+
#{$0} [-i] [-s] [-l] [-u] [-d]
|
|
40
|
+
EOS
|
|
41
|
+
# opt :ip, "Attempt to configure the IP requested in the CHEF_PUBLIC_IP environment variable, or if none is set, to associate an arbitrary Elastic IP.", :require => false, :default => false, :type => :boolean
|
|
42
|
+
opt :sg, "Attempt to configure a Security Group with appropriate permissions.", :require => false, :default => false, :type => :boolean
|
|
43
|
+
opt :logs, "Ensure the presence of an Cloud Storage bucket prefixed with 'Mu_Logs' for use with CloudTrails, syslog, etc.", :require => false, :default => false, :type => :boolean
|
|
44
|
+
# opt :dns, "Ensure the presence of a private DNS Zone called for internal amongst Mu resources.", :require => false, :default => false, :type => :boolean
|
|
45
|
+
opt :uploadlogs, "Push today's log files to the Cloud Storage bucket created by the -l option.", :require => false, :default => false, :type => :boolean
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
if MU::Cloud::Google.hosted
|
|
49
|
+
instance = MU.myCloudDescriptor
|
|
50
|
+
admin_sg_name = "mu-master-"+MU.myInstanceId+"-ingress-allow"
|
|
51
|
+
if !instance.tags.items or !instance.tags.items.include?(admin_sg_name)
|
|
52
|
+
newitems = instance.tags.items ? instance.tags.items.dup : []
|
|
53
|
+
newitems << admin_sg_name
|
|
54
|
+
MU.log "Setting my instance tags", MU::NOTICE, details: newitems
|
|
55
|
+
newtags = MU::Cloud::Google.compute(:Tags).new(
|
|
56
|
+
fingerprint: instance.tags.fingerprint,
|
|
57
|
+
items: newitems
|
|
58
|
+
)
|
|
59
|
+
MU::Cloud::Google.compute.set_instance_tags(
|
|
60
|
+
MU::Cloud::Google.myProject,
|
|
61
|
+
MU.myAZ,
|
|
62
|
+
MU.myInstanceId,
|
|
63
|
+
newtags
|
|
64
|
+
)
|
|
65
|
+
instance = MU.myCloudDescriptor
|
|
66
|
+
end
|
|
67
|
+
preferred_ip = MU.mu_public_ip
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Create a security group, or manipulate an existing one, so that we have all
|
|
71
|
+
# of the appropriate network holes.
|
|
72
|
+
if $opts[:sg]
|
|
73
|
+
open_ports = [80, 443, 2260, 7443, 8443, 9443, 8200]
|
|
74
|
+
|
|
75
|
+
found = MU::MommaCat.findStray("Google", "firewall_rule", dummy_ok: true, cloud_id: admin_sg_name)
|
|
76
|
+
admin_sg = found.first if !found.nil? and found.size > 0
|
|
77
|
+
|
|
78
|
+
rules = []
|
|
79
|
+
open_ports.each { |port|
|
|
80
|
+
rules << {
|
|
81
|
+
"proto" => "tcp",
|
|
82
|
+
"port" => port.to_s,
|
|
83
|
+
"hosts" => ["0.0.0.0/0"]
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
# TODO this is getting subsumed in all the 0.0.0.0/0 above; what we really want is a separate rule for this
|
|
87
|
+
rules << {
|
|
88
|
+
"proto" => "tcp",
|
|
89
|
+
"port" => 22,
|
|
90
|
+
"hosts" => ["#{preferred_ip}/32"]
|
|
91
|
+
}
|
|
92
|
+
cfg = {
|
|
93
|
+
"name" => admin_sg_name,
|
|
94
|
+
"cloud" => "Google",
|
|
95
|
+
"rules" => rules,
|
|
96
|
+
"project" => MU::Cloud::Google.myProject,
|
|
97
|
+
"target_tags" => [admin_sg_name],
|
|
98
|
+
"vpc" => {
|
|
99
|
+
"vpc_id" => instance.network_interfaces.first.network
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
if !admin_sg
|
|
104
|
+
admin_sg = MU::Cloud::FirewallRule.new(kitten_cfg: cfg, mu_name: "mu-master-"+MU.myInstanceId)
|
|
105
|
+
admin_sg.create
|
|
106
|
+
admin_sg.groom
|
|
107
|
+
else
|
|
108
|
+
# TODO Make sure the rules and tags are up to date
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
$bucketname = $MU_CFG['google']['log_bucket_name']
|
|
114
|
+
|
|
115
|
+
if $opts[:logs]
|
|
116
|
+
exists = false
|
|
117
|
+
|
|
118
|
+
MU.log "Configuring log and secret Google Cloud Storage bucket '#{$bucketname}'"
|
|
119
|
+
|
|
120
|
+
bucket = nil
|
|
121
|
+
begin
|
|
122
|
+
bucket = MU::Cloud::Google.storage.get_bucket($bucketname)
|
|
123
|
+
rescue ::Google::Apis::ClientError => e
|
|
124
|
+
if e.message.match(/notFound:/)
|
|
125
|
+
MU.log "Creating #{$bucketname} bucket"
|
|
126
|
+
bucketobj = MU::Cloud::Google.storage(:Bucket).new(
|
|
127
|
+
name: $bucketname,
|
|
128
|
+
location: "US", # XXX why is this needed?
|
|
129
|
+
versioning: MU::Cloud::Google.storage(:Bucket)::Versioning.new(
|
|
130
|
+
enabled: true
|
|
131
|
+
),
|
|
132
|
+
lifecycle: MU::Cloud::Google.storage(:Bucket)::Lifecycle.new(
|
|
133
|
+
rule: [ MU::Cloud::Google.storage(:Bucket)::Lifecycle::Rule.new(
|
|
134
|
+
action: MU::Cloud::Google.storage(:Bucket)::Lifecycle::Rule::Action.new(
|
|
135
|
+
type: "SetStorageClass",
|
|
136
|
+
storage_class: "DURABLE_REDUCED_AVAILABILITY"
|
|
137
|
+
),
|
|
138
|
+
condition: MU::Cloud::Google.storage(:Bucket)::Lifecycle::Rule::Condition.new(
|
|
139
|
+
age: 180
|
|
140
|
+
)
|
|
141
|
+
)]
|
|
142
|
+
)
|
|
143
|
+
)
|
|
144
|
+
bucket = MU::Cloud::Google.storage.insert_bucket(
|
|
145
|
+
MU::Cloud::Google.defaultProject,
|
|
146
|
+
bucketobj
|
|
147
|
+
)
|
|
148
|
+
else
|
|
149
|
+
raise MuError, e.inspect
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
ebs_key = nil
|
|
154
|
+
|
|
155
|
+
begin
|
|
156
|
+
ebs_key = MU::Cloud::Google.storage.get_object($bucketname, "log_vol_ebs_key")
|
|
157
|
+
rescue ::Google::Apis::ClientError => e
|
|
158
|
+
if e.message.match(/notFound:/)
|
|
159
|
+
# XXX this may not be useful outside of AWS
|
|
160
|
+
MU.log "Creating new key for encrypted log volume"
|
|
161
|
+
key = SecureRandom.random_bytes(32)
|
|
162
|
+
f = Tempfile.new("logvolkey") # XXX this is insecure and stupid
|
|
163
|
+
f.write key
|
|
164
|
+
f.close
|
|
165
|
+
objectobj = MU::Cloud::Google.storage(:Object).new(
|
|
166
|
+
bucket: $bucketname,
|
|
167
|
+
name: "log_vol_ebs_key"
|
|
168
|
+
)
|
|
169
|
+
ebs_key = MU::Cloud::Google.storage.insert_object(
|
|
170
|
+
$bucketname,
|
|
171
|
+
objectobj,
|
|
172
|
+
upload_source: f.path
|
|
173
|
+
)
|
|
174
|
+
f.unlink
|
|
175
|
+
else
|
|
176
|
+
raise MuError, e.inspect
|
|
177
|
+
end
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
MU::Master.disk("/dev/xvdl", "/Mu_Logs", 50, "log_vol_ebs_key", "ram7")
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
if $opts[:dns]
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
if $opts[:uploadlogs]
|
|
187
|
+
today = Time.new.strftime("%Y%m%d").to_s
|
|
188
|
+
["master.log", "nodes.log"].each { |log|
|
|
189
|
+
if File.exists?("/Mu_Logs/#{log}-#{today}")
|
|
190
|
+
MU.log "Uploading /Mu_Logs/#{log}-#{today} to bucket #{$bucketname}"
|
|
191
|
+
MU::Cloud::AWS.s3.put_object(
|
|
192
|
+
bucket: $bucketname,
|
|
193
|
+
key: "#{log}/#{today}",
|
|
194
|
+
body: File.read("/Mu_Logs/#{log}-#{today}")
|
|
195
|
+
)
|
|
196
|
+
else
|
|
197
|
+
MU.log "No log /Mu_Logs/#{log}-#{today} was found", MU::WARN
|
|
198
|
+
end
|
|
199
|
+
}
|
|
200
|
+
end
|
data/bin/mu-gen-docs
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#!/usr/local/ruby-current/bin/ruby
|
|
2
|
+
# Copyright:: Copyright (c) 2014 eGlobalTech, Inc., all rights reserved
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the BSD-3 license (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License in the root of the project or at
|
|
7
|
+
#
|
|
8
|
+
# http://egt-labs.com/mu/LICENSE.html
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
|
|
16
|
+
if ARGV.size > 0
|
|
17
|
+
puts "#{$0}: Freshen the Mu Master's API and configuration documentation"
|
|
18
|
+
exit 1
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
require 'rubygems'
|
|
22
|
+
require 'bundler/setup'
|
|
23
|
+
require 'json'
|
|
24
|
+
require 'erb'
|
|
25
|
+
require 'optimist'
|
|
26
|
+
require 'json-schema'
|
|
27
|
+
require File.realpath(File.expand_path(File.dirname(__FILE__)+"/mu-load-config.rb"))
|
|
28
|
+
require 'mu'
|
|
29
|
+
require 'yard'
|
|
30
|
+
|
|
31
|
+
MU::Config.emitSchemaAsRuby
|
|
32
|
+
MU.log "Generating YARD documentation in /var/www/html/docs (see http://#{$MU_CFG['public_address']}/docs/frames.html)"
|
|
33
|
+
File.umask(0022)
|
|
34
|
+
exec "cd #{MU.myRoot} && umask 0022 && env -i PATH=#{ENV['PATH']} HOME=#{ENV['HOME']} /usr/local/ruby-current/bin/yard doc modules -m markdown -o /var/www/html/docs && chcon -R -h -t httpd_sys_script_exec_t /var/www/html/ ; /usr/local/ruby-current/bin/yard stats --list-undoc modules"
|
data/bin/mu-gen-env
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#!/usr/local/ruby-current/bin/ruby
|
|
2
|
+
# Copyright:: Copyright (c) 2017 eGlobalTech, Inc., all rights reserved
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the BSD-3 license (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License in the root of the project or at
|
|
7
|
+
#
|
|
8
|
+
# http://egt-labs.com/mu/LICENSE.html
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
|
|
16
|
+
# This is a dopey bridge script to support mu-upload-chef-artifacts, the last
|
|
17
|
+
# of our Bourne shell cruft. It expects things to exist in certain env
|
|
18
|
+
# variables, which now live exclusively in mu.yaml. Give it what it wants. This
|
|
19
|
+
# can be removed once mu-upload-chef-artifacts gets its long-overdue rewrite in
|
|
20
|
+
# an adult language.
|
|
21
|
+
require File.realpath(File.expand_path(File.dirname(__FILE__)+"/mu-load-config.rb"))
|
|
22
|
+
|
|
23
|
+
keymap = {
|
|
24
|
+
"installdir" => "MU_INSTALLDIR",
|
|
25
|
+
"libdir" => "MU_LIBDIR",
|
|
26
|
+
"repos" => "ADDTL_CHEF_REPOS",
|
|
27
|
+
"public_address" => "CHEF_PUBLIC_IP"
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
require 'mu'
|
|
31
|
+
$MU_CFG.each_pair { |key, val|
|
|
32
|
+
next if key == "datadir"
|
|
33
|
+
varname = keymap.has_key?(key) ? keymap[key] : key.upcase
|
|
34
|
+
if val.is_a?(Array)
|
|
35
|
+
puts varname+"="+val.join(",")
|
|
36
|
+
elsif val.is_a?(Hash)
|
|
37
|
+
# too much work
|
|
38
|
+
else
|
|
39
|
+
puts "export "+varname+'="'+val.to_s+'"'
|
|
40
|
+
end
|
|
41
|
+
}
|
|
42
|
+
puts "export PATH=#{$MU_CFG['installdir']}/bin:/usr/local/ruby-current/bin:${PATH}:/opt/opscode/embedded/bin"
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
#!/usr/bin/env PATH="/usr/local/ruby-current/bin/ruby:${PATH}" ruby
|
|
2
|
+
# Copyright:: Copyright (c) 2014 eGlobalTech, Inc., all rights reserved
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the BSD-3 license (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License in the root of the project or at
|
|
7
|
+
#
|
|
8
|
+
# http://egt-labs.com/mu/LICENSE.html
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
require 'yaml'
|
|
16
|
+
require 'etc'
|
|
17
|
+
require 'json'
|
|
18
|
+
require 'erubis'
|
|
19
|
+
require 'socket'
|
|
20
|
+
|
|
21
|
+
# Locate and load the Mu Master's configuration, typically stored in
|
|
22
|
+
# /opt/mu/etc/mu.yaml. If ~/.mu.yaml exists, load that too and allow it to
|
|
23
|
+
# override values from the global config. Also puts Mu's /modules directory
|
|
24
|
+
# into the Ruby $LOAD_PATH.
|
|
25
|
+
# @return [Hash]
|
|
26
|
+
def loadMuConfig(default_cfg_overrides = nil)
|
|
27
|
+
# Start with sane defaults
|
|
28
|
+
default_cfg = {
|
|
29
|
+
"installdir" => "/opt/mu",
|
|
30
|
+
"libdir" => "/opt/mu/lib",
|
|
31
|
+
"hostname" => "mu-master",
|
|
32
|
+
"ssl" => {
|
|
33
|
+
"cert" => "/opt/mu/var/ssl/mommacat.crt",
|
|
34
|
+
"key" => "/opt/mu/var/ssl/mommacat.key",
|
|
35
|
+
"chain" => "/opt/mu/var/ssl/Mu_CA.pem"
|
|
36
|
+
},
|
|
37
|
+
"mu_admin_email" => "root@localhost",
|
|
38
|
+
"jenkins_admin_email" => "root@localhost",
|
|
39
|
+
"allow_invade_foreign_vpcs" => false,
|
|
40
|
+
"mu_repo" => "cloudamatic/mu.git",
|
|
41
|
+
"public_address" => Socket.gethostname || "localhost",
|
|
42
|
+
"banner" => "Mu Master",
|
|
43
|
+
"scratchpad" => {
|
|
44
|
+
"template_path" => "/opt/mu/lib/modules/scratchpad.erb",
|
|
45
|
+
"max_age" => 3600
|
|
46
|
+
},
|
|
47
|
+
"ldap" => {
|
|
48
|
+
"type" => "389 Directory Services",
|
|
49
|
+
"base_dn" => "OU=Mu,DC=platform-mu",
|
|
50
|
+
"user_ou" => "OU=Users,OU=Mu,DC=platform-mu",
|
|
51
|
+
"group_ou" => "OU=Groups,OU=Mu,DC=platform-mu",
|
|
52
|
+
"bind_creds" => {
|
|
53
|
+
"vault" => "mu_ldap",
|
|
54
|
+
"item" => "mu_bind_acct",
|
|
55
|
+
"username_field" => "username",
|
|
56
|
+
"password_field" => "password"
|
|
57
|
+
},
|
|
58
|
+
"join_creds" => {
|
|
59
|
+
"vault" => "mu_ldap",
|
|
60
|
+
"item" => "mu_join_acct",
|
|
61
|
+
"username_field" => "username",
|
|
62
|
+
"password_field" => "password"
|
|
63
|
+
},
|
|
64
|
+
"domain_name" => "platform-mu",
|
|
65
|
+
"domain_netbios_name" => "mu",
|
|
66
|
+
"user_group_dn" => "CN=mu-users,OU=Groups,OU=Mu,DC=platform-mu",
|
|
67
|
+
"user_group_name" => "mu-users",
|
|
68
|
+
"admin_group_dn" => "CN=mu-admins,OU=Groups,OU=Mu,DC=platform-mu",
|
|
69
|
+
"admin_group_name" => "mu-admins",
|
|
70
|
+
"dcs" => ["127.0.0.1"]
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
default_cfg.merge!(default_cfg_overrides) if default_cfg_overrides
|
|
74
|
+
|
|
75
|
+
if !File.exists?(cfgPath) and Process.uid == 0
|
|
76
|
+
puts "**** Master config #{cfgPath} does not exist, initializing *****"
|
|
77
|
+
File.open(cfgPath, File::CREAT|File::TRUNC|File::RDWR, 0644){ |f|
|
|
78
|
+
f.puts default_cfg.to_yaml
|
|
79
|
+
}
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
global_cfg = { "config_files" => [] }
|
|
83
|
+
if File.exists?(cfgPath)
|
|
84
|
+
global_cfg = YAML.load(File.read(cfgPath))
|
|
85
|
+
global_cfg["config_files"] = [cfgPath]
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
home = Etc.getpwuid(Process.uid).dir
|
|
89
|
+
username = Etc.getpwuid(Process.uid).name
|
|
90
|
+
if File.readable?("#{home}/.mu.yaml") and cfgPath != "#{home}/.mu.yaml"
|
|
91
|
+
global_cfg.merge!(YAML.load(File.read("#{home}/.mu.yaml")))
|
|
92
|
+
global_cfg["config_files"] << "#{home}/.mu.yaml"
|
|
93
|
+
end
|
|
94
|
+
if !global_cfg.has_key?("installdir")
|
|
95
|
+
if ENV['MU_INSTALLDIR']
|
|
96
|
+
global_cfg["installdir"] = ENV['MU_INSTALLDIR']
|
|
97
|
+
elsif Gem.paths and Gem.paths.home
|
|
98
|
+
global_cfg["installdir"] = File.realpath(File.expand_path(File.dirname(Gem.paths.home))+"/../../../")
|
|
99
|
+
else
|
|
100
|
+
global_cfg["installdir"] = "/opt/mu"
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
if !global_cfg.has_key?("libdir")
|
|
104
|
+
if ENV['MU_INSTALLDIR']
|
|
105
|
+
global_cfg["libdir"] = ENV['MU_INSTALLDIR']+"/lib"
|
|
106
|
+
else
|
|
107
|
+
global_cfg["libdir"] = File.realpath(File.expand_path(File.dirname(__FILE__))+"/..")
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
if !global_cfg.has_key?("datadir")
|
|
111
|
+
if username != "root"
|
|
112
|
+
global_cfg["datadir"] = home+"/.mu"
|
|
113
|
+
elsif global_cfg.has_key?("installdir")
|
|
114
|
+
global_cfg["datadir"] = global_cfg["installdir"]+"/var"
|
|
115
|
+
else
|
|
116
|
+
global_cfg["datadir"] = "/opt/mu/var"
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
$LOAD_PATH << "#{global_cfg["libdir"]}/modules"
|
|
121
|
+
return default_cfg.merge(global_cfg).freeze
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def cfgPath
|
|
125
|
+
home = Etc.getpwuid(Process.uid).dir
|
|
126
|
+
username = Etc.getpwuid(Process.uid).name
|
|
127
|
+
if Process.uid == 0
|
|
128
|
+
if ENV.include?('MU_INSTALLDIR')
|
|
129
|
+
ENV['MU_INSTALLDIR']+"/etc/mu.yaml"
|
|
130
|
+
elsif Dir.exists?("/opt/mu")
|
|
131
|
+
File.realpath(File.expand_path(File.dirname(__FILE__)+"/../../etc"))
|
|
132
|
+
else
|
|
133
|
+
"#{home}/.mu.yaml"
|
|
134
|
+
end
|
|
135
|
+
else
|
|
136
|
+
"#{home}/.mu.yaml"
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def cfgExists?
|
|
141
|
+
File.exists?(cfgPath)
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
# Output an in-memory configuration hash to the standard config file location,
|
|
145
|
+
# in YAML.
|
|
146
|
+
# @param cfg [Hash]: The configuration to dump
|
|
147
|
+
# @param comment [Hash]: A configuration blob that will be appended as a commented block
|
|
148
|
+
def saveMuConfig(cfg, comment = nil)
|
|
149
|
+
puts "**** Saving master config to #{cfgPath} *****"
|
|
150
|
+
File.open(cfgPath, File::CREAT|File::TRUNC|File::RDWR, 0644){ |f|
|
|
151
|
+
f.puts cfg.to_yaml
|
|
152
|
+
if comment and comment.size > 0
|
|
153
|
+
f.puts comment.to_yaml.sub(/^---$/, "EXAMPLE CLOUD LAYERS").gsub(/^/, "# ")
|
|
154
|
+
end
|
|
155
|
+
}
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
$MU_CFG = loadMuConfig($MU_SET_DEFAULTS)
|