cloud-mu 3.2.0 → 3.5.0

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.
Files changed (156) hide show
  1. checksums.yaml +4 -4
  2. data/Dockerfile +1 -1
  3. data/ansible/roles/mu-nat/tasks/main.yml +3 -0
  4. data/bin/mu-adopt +12 -1
  5. data/bin/mu-aws-setup +41 -7
  6. data/bin/mu-azure-setup +34 -0
  7. data/bin/mu-configure +214 -119
  8. data/bin/mu-gcp-setup +37 -2
  9. data/bin/mu-load-config.rb +2 -1
  10. data/bin/mu-node-manage +3 -0
  11. data/bin/mu-refresh-ssl +67 -0
  12. data/bin/mu-run-tests +28 -6
  13. data/bin/mu-self-update +30 -10
  14. data/bin/mu-upload-chef-artifacts +30 -26
  15. data/cloud-mu.gemspec +10 -8
  16. data/cookbooks/mu-master/attributes/default.rb +5 -1
  17. data/cookbooks/mu-master/metadata.rb +2 -2
  18. data/cookbooks/mu-master/recipes/default.rb +81 -26
  19. data/cookbooks/mu-master/recipes/init.rb +197 -62
  20. data/cookbooks/mu-master/recipes/update_nagios_only.rb +1 -1
  21. data/cookbooks/mu-master/recipes/vault.rb +78 -77
  22. data/cookbooks/mu-master/templates/default/mods/rewrite.conf.erb +1 -0
  23. data/cookbooks/mu-master/templates/default/nagios.conf.erb +103 -0
  24. data/cookbooks/mu-master/templates/default/web_app.conf.erb +14 -30
  25. data/cookbooks/mu-tools/attributes/default.rb +12 -0
  26. data/cookbooks/mu-tools/files/centos-6/CentOS-Base.repo +47 -0
  27. data/cookbooks/mu-tools/libraries/helper.rb +98 -4
  28. data/cookbooks/mu-tools/libraries/monkey.rb +1 -1
  29. data/cookbooks/mu-tools/recipes/apply_security.rb +31 -9
  30. data/cookbooks/mu-tools/recipes/aws_api.rb +8 -2
  31. data/cookbooks/mu-tools/recipes/base_repositories.rb +1 -1
  32. data/cookbooks/mu-tools/recipes/gcloud.rb +2 -9
  33. data/cookbooks/mu-tools/recipes/google_api.rb +7 -0
  34. data/cookbooks/mu-tools/recipes/rsyslog.rb +8 -1
  35. data/cookbooks/mu-tools/resources/disk.rb +113 -42
  36. data/cookbooks/mu-tools/resources/mommacat_request.rb +1 -2
  37. data/cookbooks/mu-tools/templates/centos-8/sshd_config.erb +215 -0
  38. data/extras/Gemfile.lock.bootstrap +394 -0
  39. data/extras/bucketstubs/error.html +0 -0
  40. data/extras/bucketstubs/index.html +0 -0
  41. data/extras/clean-stock-amis +11 -3
  42. data/extras/generate-stock-images +6 -3
  43. data/extras/git_rpm/build.sh +20 -0
  44. data/extras/git_rpm/mugit.spec +53 -0
  45. data/extras/image-generators/AWS/centos7.yaml +19 -16
  46. data/extras/image-generators/AWS/{rhel7.yaml → rhel71.yaml} +0 -0
  47. data/extras/image-generators/AWS/{win2k12.yaml → win2k12r2.yaml} +0 -0
  48. data/extras/image-generators/VMWare/centos8.yaml +15 -0
  49. data/extras/openssl_rpm/build.sh +19 -0
  50. data/extras/openssl_rpm/mussl.spec +46 -0
  51. data/extras/python_rpm/muthon.spec +14 -4
  52. data/extras/ruby_rpm/muby.spec +9 -5
  53. data/extras/sqlite_rpm/build.sh +19 -0
  54. data/extras/sqlite_rpm/muqlite.spec +47 -0
  55. data/install/installer +7 -5
  56. data/modules/mommacat.ru +2 -2
  57. data/modules/mu.rb +14 -7
  58. data/modules/mu/adoption.rb +5 -5
  59. data/modules/mu/cleanup.rb +47 -25
  60. data/modules/mu/cloud.rb +29 -1
  61. data/modules/mu/cloud/dnszone.rb +0 -2
  62. data/modules/mu/cloud/machine_images.rb +1 -1
  63. data/modules/mu/cloud/providers.rb +6 -1
  64. data/modules/mu/cloud/resource_base.rb +16 -7
  65. data/modules/mu/cloud/ssh_sessions.rb +5 -1
  66. data/modules/mu/cloud/wrappers.rb +20 -7
  67. data/modules/mu/config.rb +28 -12
  68. data/modules/mu/config/bucket.rb +31 -2
  69. data/modules/mu/config/cache_cluster.rb +1 -1
  70. data/modules/mu/config/cdn.rb +100 -0
  71. data/modules/mu/config/container_cluster.rb +1 -1
  72. data/modules/mu/config/database.rb +3 -3
  73. data/modules/mu/config/dnszone.rb +4 -3
  74. data/modules/mu/config/endpoint.rb +1 -0
  75. data/modules/mu/config/firewall_rule.rb +1 -1
  76. data/modules/mu/config/function.rb +16 -7
  77. data/modules/mu/config/job.rb +89 -0
  78. data/modules/mu/config/notifier.rb +7 -18
  79. data/modules/mu/config/ref.rb +55 -9
  80. data/modules/mu/config/schema_helpers.rb +12 -3
  81. data/modules/mu/config/server.rb +11 -5
  82. data/modules/mu/config/server_pool.rb +2 -2
  83. data/modules/mu/config/vpc.rb +11 -10
  84. data/modules/mu/defaults/AWS.yaml +106 -106
  85. data/modules/mu/deploy.rb +40 -14
  86. data/modules/mu/groomers/chef.rb +2 -2
  87. data/modules/mu/master.rb +70 -3
  88. data/modules/mu/mommacat.rb +28 -9
  89. data/modules/mu/mommacat/daemon.rb +13 -7
  90. data/modules/mu/mommacat/naming.rb +2 -2
  91. data/modules/mu/mommacat/search.rb +16 -5
  92. data/modules/mu/mommacat/storage.rb +67 -32
  93. data/modules/mu/providers/aws.rb +298 -85
  94. data/modules/mu/providers/aws/alarm.rb +5 -5
  95. data/modules/mu/providers/aws/bucket.rb +284 -50
  96. data/modules/mu/providers/aws/cache_cluster.rb +26 -26
  97. data/modules/mu/providers/aws/cdn.rb +782 -0
  98. data/modules/mu/providers/aws/collection.rb +16 -16
  99. data/modules/mu/providers/aws/container_cluster.rb +84 -64
  100. data/modules/mu/providers/aws/database.rb +59 -55
  101. data/modules/mu/providers/aws/dnszone.rb +29 -12
  102. data/modules/mu/providers/aws/endpoint.rb +535 -50
  103. data/modules/mu/providers/aws/firewall_rule.rb +32 -26
  104. data/modules/mu/providers/aws/folder.rb +1 -1
  105. data/modules/mu/providers/aws/function.rb +300 -134
  106. data/modules/mu/providers/aws/group.rb +16 -14
  107. data/modules/mu/providers/aws/habitat.rb +4 -4
  108. data/modules/mu/providers/aws/job.rb +469 -0
  109. data/modules/mu/providers/aws/loadbalancer.rb +67 -45
  110. data/modules/mu/providers/aws/log.rb +17 -17
  111. data/modules/mu/providers/aws/msg_queue.rb +22 -13
  112. data/modules/mu/providers/aws/nosqldb.rb +99 -8
  113. data/modules/mu/providers/aws/notifier.rb +137 -65
  114. data/modules/mu/providers/aws/role.rb +119 -83
  115. data/modules/mu/providers/aws/search_domain.rb +166 -30
  116. data/modules/mu/providers/aws/server.rb +209 -118
  117. data/modules/mu/providers/aws/server_pool.rb +95 -130
  118. data/modules/mu/providers/aws/storage_pool.rb +19 -11
  119. data/modules/mu/providers/aws/user.rb +5 -5
  120. data/modules/mu/providers/aws/userdata/linux.erb +5 -4
  121. data/modules/mu/providers/aws/vpc.rb +109 -54
  122. data/modules/mu/providers/aws/vpc_subnet.rb +43 -39
  123. data/modules/mu/providers/azure.rb +78 -12
  124. data/modules/mu/providers/azure/server.rb +20 -4
  125. data/modules/mu/providers/cloudformation/server.rb +1 -1
  126. data/modules/mu/providers/google.rb +21 -5
  127. data/modules/mu/providers/google/bucket.rb +1 -1
  128. data/modules/mu/providers/google/container_cluster.rb +1 -1
  129. data/modules/mu/providers/google/database.rb +1 -1
  130. data/modules/mu/providers/google/firewall_rule.rb +1 -1
  131. data/modules/mu/providers/google/folder.rb +7 -3
  132. data/modules/mu/providers/google/function.rb +66 -31
  133. data/modules/mu/providers/google/group.rb +1 -1
  134. data/modules/mu/providers/google/habitat.rb +1 -1
  135. data/modules/mu/providers/google/loadbalancer.rb +1 -1
  136. data/modules/mu/providers/google/role.rb +6 -3
  137. data/modules/mu/providers/google/server.rb +1 -1
  138. data/modules/mu/providers/google/server_pool.rb +1 -1
  139. data/modules/mu/providers/google/user.rb +1 -1
  140. data/modules/mu/providers/google/vpc.rb +28 -3
  141. data/modules/tests/aws-jobs-functions.yaml +46 -0
  142. data/modules/tests/aws-servers-with-handrolled-iam.yaml +37 -0
  143. data/modules/tests/centos6.yaml +4 -0
  144. data/modules/tests/centos7.yaml +4 -0
  145. data/modules/tests/ecs.yaml +2 -2
  146. data/modules/tests/eks.yaml +1 -1
  147. data/modules/tests/functions/node-function/lambda_function.js +10 -0
  148. data/modules/tests/functions/python-function/lambda_function.py +12 -0
  149. data/modules/tests/k8s.yaml +1 -1
  150. data/modules/tests/microservice_app.yaml +288 -0
  151. data/modules/tests/rds.yaml +5 -5
  152. data/modules/tests/regrooms/rds.yaml +5 -5
  153. data/modules/tests/server-with-scrub-muisms.yaml +1 -1
  154. data/modules/tests/super_complex_bok.yml +2 -2
  155. data/modules/tests/super_simple_bok.yml +2 -2
  156. metadata +42 -17
@@ -0,0 +1,20 @@
1
+ #!/bin/sh
2
+
3
+ rpm -q rpm-build || yum -y install rpm-build
4
+ rpm -q libcurl-devel || yum -y install libcurl-devel
5
+
6
+ base="/opt/mu/lib/extras/git_rpm"
7
+
8
+ for d in BUILD BUILDROOT RPMS SOURCES SPECS SRPMS;do
9
+ mkdir -p ~/rpmbuild/$d
10
+ done
11
+ cd ~/rpmbuild
12
+
13
+ echo "Temporarily deleting /usr/local/git-current so rpmbuild can create it"
14
+ link="`readlink /usr/local/git-current`"
15
+ rm -f /usr/local/git-current
16
+ env -i PATH="/bin:/usr/bin" /usr/bin/rpmbuild -ba $base/mugit.spec
17
+ find ~/rpmbuild/ -type f -name 'mugit*' -exec ls -la {} \;
18
+ if [ "$link" != "" ];then
19
+ ln -s "$link" /usr/local/git-current
20
+ fi
@@ -0,0 +1,53 @@
1
+ Summary: Git for Mu on RHEL7-compatible systems
2
+ BuildArch: x86_64
3
+ Name: mugit
4
+ Version: 2.30.0
5
+ Release: 1%{dist}
6
+ Group: Development/Languages
7
+ License: https://git-scm.com/about/free-and-open-source
8
+ URL: https://git-scm.com/
9
+ Prefix: /opt/git
10
+ Source: https://github.com/git/git.git
11
+
12
+ AutoReq: yes
13
+
14
+ %description
15
+ I was surprisingly chill when I wrote this spec file
16
+
17
+ %prep
18
+ rm -rf $RPM_BUILD_DIR/git-%{version}
19
+ rm -rf $RPM_SOURCE_DIR/git*
20
+ rm -rf %{prefix}
21
+ test -f $RPM_SOURCE_DIR/git-%{version}/GIT-VERSION-GEN || ( cd $RPM_SOURCE_DIR && git clone https://github.com/git/git.git )
22
+ cd $RPM_SOURCE_DIR && mv git $RPM_BUILD_DIR/git-%{version}
23
+ mkdir -p $RPM_BUILD_ROOT%{prefix}
24
+ rm -rf $RPM_BUILD_ROOT%{prefix}/git-%{version}
25
+ ln -s %{prefix}/git-%{version} $RPM_BUILD_ROOT%{prefix}/git-%{version}
26
+
27
+ %build
28
+ cd $RPM_BUILD_DIR/git-%{version}
29
+ mkdir -p %{prefix}/git-%{version}
30
+ env -i PATH="/bin:/usr/bin" git checkout v%{version}
31
+ env -i PATH="/bin:/usr/bin" rm -rf .git
32
+ env -i PATH="/bin:/usr/bin" make configure
33
+ env -i PATH="/bin:/usr/bin" ./configure --prefix=%{prefix}/git-%{version}
34
+ env -i PATH="/bin:/usr/bin" make all
35
+
36
+ %install
37
+ cd $RPM_BUILD_DIR/git-%{version}
38
+ env -i PATH="/bin:/usr/bin" make install
39
+ mkdir -p $RPM_BUILD_ROOT%{prefix}
40
+ mv %{prefix}/git-%{version} $RPM_BUILD_ROOT%{prefix}/
41
+ mkdir -p $RPM_BUILD_ROOT/usr/local/
42
+ ln -s %{prefix}/git-%{version} $RPM_BUILD_ROOT/usr/local/git-current
43
+ # some idiot utility expects this to be present because reasons
44
+ touch /rpmbuild/SOURCES/git.git
45
+
46
+ %clean
47
+ cd $RPM_BUILD_DIR/git-%{version}
48
+ make clean
49
+ rm -f /rpmbuild/SOURCES/git.git
50
+
51
+ %files
52
+ %{prefix}/git-%{version}/*
53
+ /usr/local/git-current
@@ -1,17 +1,20 @@
1
1
  ---
2
- appname: mu
3
- servers:
4
- -
5
- name: centos7
6
- platform: centos7
7
- size: m3.medium
8
- scrub_groomer: true
9
- run_list:
10
- - recipe[mu-tools::apply_security]
11
- - recipe[mu-tools::updates]
12
- - recipe[mu-tools::split_var_partitions]
13
- create_image:
14
- image_then_destroy: true
15
- public: true
16
- copy_to_regions:
17
- - "#ALL"
2
+ appname: mu
3
+ servers:
4
+ - name: centos7
5
+ platform: centos7
6
+ size: m4.large
7
+ vpc:
8
+ name: c7vpc
9
+ scrub_groomer: true
10
+ run_list:
11
+ - recipe[mu-tools::apply_security]
12
+ - recipe[mu-tools::updates]
13
+ - recipe[mu-tools::split_var_partitions]
14
+ create_image:
15
+ image_then_destroy: true
16
+ public: true
17
+ copy_to_regions:
18
+ - "#ALL"
19
+ vpcs:
20
+ - name: c7vpc
@@ -0,0 +1,15 @@
1
+ ---
2
+ appname: mu
3
+ servers:
4
+ -
5
+ name: centos7
6
+ platform: centos7
7
+ size: m3.medium
8
+ scrub_groomer: true
9
+ run_list:
10
+ - recipe[mu-tools::apply_security]
11
+ - recipe[mu-tools::updates]
12
+ - recipe[mu-tools::split_var_partitions]
13
+ create_image:
14
+ image_then_destroy: true
15
+ public: true
@@ -0,0 +1,19 @@
1
+ #!/bin/sh
2
+
3
+ rpm -q rpm-build || yum -y install rpm-build
4
+
5
+ base="/opt/mu/lib/extras/openssl_rpm"
6
+
7
+ for d in BUILD BUILDROOT RPMS SOURCES SPECS SRPMS;do
8
+ mkdir -p ~/rpmbuild/$d
9
+ done
10
+ cd ~/rpmbuild
11
+
12
+ echo "Temporarily deleting /usr/local/openssl-current so rpmbuild can create it"
13
+ link="`readlink /usr/local/openssl-current`"
14
+ rm -f /usr/local/openssl-current
15
+ env -i PATH="/bin:/usr/bin" /usr/bin/rpmbuild -ba $base/mussl.spec
16
+ find ~/rpmbuild/ -type f -name 'mussl*' -exec ls -la {} \;
17
+ if [ "$link" != "" ];then
18
+ ln -s "$link" /usr/local/openssl-current
19
+ fi
@@ -0,0 +1,46 @@
1
+ Summary: OpenSSL for Mu on RHEL6-compatible systems
2
+ BuildArch: x86_64
3
+ Name: mussl
4
+ Version: 1.1.1h
5
+ Release: 1%{dist}
6
+ Group: Development/Languages
7
+ License: https://www.openssl.org/source/license-openssl-ssleay.txt
8
+ URL: https://www.openssl.org/
9
+ Prefix: /opt/openssl
10
+ Source: https://www.openssl.org/source/openssl-%{version}.tar.gz
11
+
12
+ AutoReq: yes
13
+
14
+ %description
15
+ I was agitated when I wrote this spec file
16
+
17
+ %prep
18
+ rm -rf $RPM_BUILD_DIR/openssl-%{version}
19
+ rm -rf %{prefix}
20
+ test -f $RPM_SOURCE_DIR/openssl-%{version}.tar.gz || ( cd $RPM_SOURCE_DIR && curl -O https://www.openssl.org/source/openssl-%{version}.tar.gz )
21
+ tar -xzvf $RPM_SOURCE_DIR/openssl-%{version}.tar.gz
22
+ mkdir -p $RPM_BUILD_ROOT%{prefix}
23
+ rm -rf $RPM_BUILD_ROOT%{prefix}/openssl-%{version}
24
+ ln -s %{prefix}/openssl-%{version} $RPM_BUILD_ROOT%{prefix}/openssl-%{version}
25
+
26
+ %build
27
+ cd $RPM_BUILD_DIR/openssl-%{version}
28
+ mkdir -p %{prefix}/openssl-%{version}
29
+ env -i PATH="/bin:/usr/bin" ./config --prefix=%{prefix}/openssl-%{version}
30
+ env -i PATH="/bin:/usr/bin" make
31
+
32
+ %install
33
+ cd $RPM_BUILD_DIR/openssl-%{version}
34
+ env -i PATH="/bin:/usr/bin" make install
35
+ mkdir -p $RPM_BUILD_ROOT%{prefix}
36
+ mv %{prefix}/openssl-%{version} $RPM_BUILD_ROOT%{prefix}/
37
+ mkdir -p $RPM_BUILD_ROOT/usr/local/
38
+ ln -s %{prefix}/openssl-%{version} $RPM_BUILD_ROOT/usr/local/openssl-current
39
+
40
+ %clean
41
+ cd $RPM_BUILD_DIR/openssl-%{version}
42
+ make clean
43
+
44
+ %files
45
+ %{prefix}/openssl-%{version}/*
46
+ /usr/local/openssl-current
@@ -1,10 +1,10 @@
1
1
  Summary: Python for Mu
2
2
  BuildArch: x86_64
3
3
  Name: muthon
4
- Version: 2.7.16
4
+ Version: 3.8.3
5
5
  Release: 1%{dist}
6
6
  Group: Development/Languages
7
- License: Ruby License/GPL - see COPYING
7
+ License: https://docs.python.org/3/license.html
8
8
  URL: https://www.python.org/
9
9
  Prefix: /opt/pythons
10
10
  Source: https://www.python.org/ftp/python/%{version}/Python-%{version}.tgz
@@ -16,12 +16,16 @@ AutoReq: no
16
16
  #%global __requires_exclude ^/usr/local/bin/python$
17
17
  #%global __requires_exclude ^/opt/pythons/Python-%{version}/bin/python.*$
18
18
 
19
+ %{?el6:BuildRequires: mussl}
20
+ %{?el6:BuildRequires: muqlite}
19
21
  BuildRequires: zlib-devel
20
22
  BuildRequires: tcl-devel
21
23
  BuildRequires: gdbm-devel
22
24
  BuildRequires: openssl-devel
23
25
  BuildRequires: sqlite-devel
24
26
  BuildRequires: tk-devel
27
+ %{?el6:Requires: mussl}
28
+ %{?el6:Requires: muqlite}
25
29
  Requires: zlib
26
30
  Requires: gdbm
27
31
  Requires: tcl
@@ -47,13 +51,19 @@ ln -s %{prefix}/Python-%{version} $RPM_BUILD_ROOT%{prefix}/Python-%{version}
47
51
  %build
48
52
  cd $RPM_BUILD_DIR/Python-%{version}
49
53
  mkdir -p %{prefix}/Python-%{version}
50
- env -i PATH="/bin:/usr/bin" ./configure --prefix=%{prefix}/Python-%{version} --exec-prefix=%{prefix}/Python-%{version} --enable-shared LDFLAGS=-Wl,-rpath=%{prefix}/Python-%{version}/lib
54
+ %if 0%{?el6}
55
+ # The SQLite library location logic is dain-bramaged
56
+ sed -i "s/sqlite_inc_paths = \[ '\/usr\/include'/sqlite_inc_paths = \[ '\/usr\/local\/sqlite-current\/include'/" setup.py
57
+ env -i PATH="/bin:/usr/bin" LDFLAGS="-L/usr/local/openssl-current/lib" ./configure --prefix=%{prefix}/Python-%{version} --exec-prefix=%{prefix}/Python-%{version} --enable-shared LDFLAGS=-Wl,-rpath=%{prefix}/Python-%{version}/lib,-rpath=/usr/local/openssl-current/lib,-rpath=/usr/local/sqlite-current/lib --with-openssl=/usr/local/openssl-current --enable-loadable-sqlite-extensions
58
+ %else
59
+ env -i PATH="/bin:/usr/bin" ./configure --prefix=%{prefix}/Python-%{version} --exec-prefix=%{prefix}/Python-%{version} --enable-shared LDFLAGS=-Wl,-rpath=%{prefix}/Python-%{version}/lib --enable-loadable-sqlite-extensions
60
+ %endif
51
61
  env -i PATH="/bin:/usr/bin" make
52
62
 
53
63
  %install
54
64
  cd $RPM_BUILD_DIR/Python-%{version}
55
65
  env -i PATH="/bin:/usr/bin" make install
56
- %{prefix}/Python-%{version}/bin/python $RPM_SOURCE_DIR/get-pip.py --prefix %{prefix}/Python-%{version}/
66
+ %{prefix}/Python-%{version}/bin/python3 $RPM_SOURCE_DIR/get-pip.py --prefix %{prefix}/Python-%{version}/ || ( ldd %{prefix}/Python-%{version}/bin/python3 ; exit 1 )
57
67
  mkdir -p $RPM_BUILD_ROOT%{prefix}
58
68
  mv %{prefix}/Python-%{version} $RPM_BUILD_ROOT%{prefix}/
59
69
  mkdir -p $RPM_BUILD_ROOT/usr/local/
@@ -1,13 +1,13 @@
1
1
  Summary: Ruby for Mu(by)
2
2
  BuildArch: x86_64
3
3
  Name: muby
4
- Version: 2.5.5
4
+ Version: 2.7.2
5
5
  Release: 1%{dist}
6
6
  Group: Development/Languages
7
7
  License: Ruby License/GPL - see COPYING
8
8
  URL: http://www.ruby-lang.org/
9
9
  Prefix: /opt/rubies
10
- Source: https://cache.ruby-lang.org/pub/ruby/2.5/ruby-%{version}.tar.gz
10
+ Source: https://cache.ruby-lang.org/pub/ruby/2.7/ruby-%{version}.tar.gz
11
11
 
12
12
  BuildRequires: zlib
13
13
  BuildRequires: zlib-devel
@@ -19,7 +19,7 @@ I was drunk when I wrote this spec file
19
19
  %prep
20
20
  rm -rf $RPM_BUILD_DIR/ruby-%{version}
21
21
  rm -rf %{prefix}
22
- test -f $RPM_SOURCE_DIR/ruby-%{version}.tar.gz || ( cd $RPM_SOURCE_DIR && curl -O https://cache.ruby-lang.org/pub/ruby/2.5/ruby-%{version}.tar.gz )
22
+ test -f $RPM_SOURCE_DIR/ruby-%{version}.tar.gz || ( cd $RPM_SOURCE_DIR && curl -O https://cache.ruby-lang.org/pub/ruby/2.7/ruby-%{version}.tar.gz )
23
23
  tar -xzvf $RPM_SOURCE_DIR/ruby-%{version}.tar.gz
24
24
  mkdir -p $RPM_BUILD_ROOT%{prefix}
25
25
  ln -s %{prefix}/ruby-%{version} $RPM_BUILD_ROOT%{prefix}/ruby-%{version}
@@ -33,11 +33,14 @@ make
33
33
  cd $RPM_BUILD_DIR/ruby-%{version}
34
34
  make install
35
35
  mkdir -p %{prefix}
36
- %{prefix}/ruby-%{version}/bin/gem install bundler
36
+ yes | %{prefix}/ruby-%{version}/bin/gem install bundler --version '~> 2.1.4' --force
37
37
  mkdir -p $RPM_BUILD_ROOT%{prefix}
38
38
  mv %{prefix}/ruby-%{version} $RPM_BUILD_ROOT%{prefix}/
39
- mkdir -p $RPM_BUILD_ROOT/usr/local/
39
+ mkdir -p $RPM_BUILD_ROOT/usr/local/bin
40
40
  ln -s %{prefix}/ruby-%{version} $RPM_BUILD_ROOT/usr/local/ruby-current
41
+ mkdir -p /usr/local/bin
42
+ rm -f $RPM_BUILD_ROOT/usr/local/bin/ruby
43
+ ln -s /usr/local/ruby-current/bin/ruby $RPM_BUILD_ROOT/usr/local/bin/ruby
41
44
 
42
45
  %clean
43
46
  cd $RPM_BUILD_DIR/ruby-%{version}
@@ -46,3 +49,4 @@ make clean
46
49
  %files
47
50
  %{prefix}/ruby-%{version}/*
48
51
  /usr/local/ruby-current
52
+ /usr/local/bin/ruby
@@ -0,0 +1,19 @@
1
+ #!/bin/sh
2
+
3
+ rpm -q rpm-build || yum -y install rpm-build
4
+
5
+ base="/opt/mu/lib/extras/sqlite_rpm"
6
+
7
+ for d in BUILD BUILDROOT RPMS SOURCES SPECS SRPMS;do
8
+ mkdir -p ~/rpmbuild/$d
9
+ done
10
+ cd ~/rpmbuild
11
+
12
+ echo "Temporarily deleting /usr/local/sqlite-current so rpmbuild can create it"
13
+ link="`readlink /usr/local/sqlite-current`"
14
+ rm -f /usr/local/sqlite-current
15
+ env -i PATH="/bin:/usr/bin" /usr/bin/rpmbuild -ba $base/muqlite.spec
16
+ find ~/rpmbuild/ -type f -name 'muqlite*' -exec ls -la {} \;
17
+ if [ "$link" != "" ];then
18
+ ln -s "$link" /usr/local/sqlite-current
19
+ fi
@@ -0,0 +1,47 @@
1
+ Summary: SQLite for Mu on RHEL6-compatible systems
2
+ BuildArch: x86_64
3
+ Name: muqlite
4
+ Version: 3.33
5
+ Release: 1%{dist}
6
+ Group: Development/Languages
7
+ License: https://www.sqlite.org/copyright.html
8
+ URL: https://sqlite.org/
9
+ Prefix: /opt/sqlite
10
+ Source: https://www.sqlite.org/src/tarball/sqlite.tar.gz?r=branch-%{version}
11
+
12
+ AutoReq: yes
13
+
14
+ %description
15
+ I was surprisingly chill when I wrote this spec file
16
+
17
+ %prep
18
+ rm -rf $RPM_BUILD_DIR/sqlite-%{version}
19
+ rm -rf %{prefix}
20
+ test -f $RPM_SOURCE_DIR/sqlite.tar.gz?r=branch-%{version} || ( cd $RPM_SOURCE_DIR && curl -O https://www.sqlite.org/src/tarball/sqlite.tar.gz?r=branch-%{version} )
21
+ tar -xzvf $RPM_SOURCE_DIR/sqlite.tar.gz?r=branch-%{version}
22
+ mv sqlite sqlite-%{version}
23
+ mkdir -p $RPM_BUILD_ROOT%{prefix}
24
+ rm -rf $RPM_BUILD_ROOT%{prefix}/sqlite-%{version}
25
+ ln -s %{prefix}/sqlite-%{version} $RPM_BUILD_ROOT%{prefix}/sqlite-%{version}
26
+
27
+ %build
28
+ cd $RPM_BUILD_DIR/sqlite-%{version}
29
+ mkdir -p %{prefix}/sqlite-%{version}
30
+ env -i PATH="/bin:/usr/bin" ./configure --prefix=%{prefix}/sqlite-%{version}
31
+ env -i PATH="/bin:/usr/bin" make
32
+
33
+ %install
34
+ cd $RPM_BUILD_DIR/sqlite-%{version}
35
+ env -i PATH="/bin:/usr/bin" make install
36
+ mkdir -p $RPM_BUILD_ROOT%{prefix}
37
+ mv %{prefix}/sqlite-%{version} $RPM_BUILD_ROOT%{prefix}/
38
+ mkdir -p $RPM_BUILD_ROOT/usr/local/
39
+ ln -s %{prefix}/sqlite-%{version} $RPM_BUILD_ROOT/usr/local/sqlite-current
40
+
41
+ %clean
42
+ cd $RPM_BUILD_DIR/sqlite-%{version}
43
+ make clean
44
+
45
+ %files
46
+ %{prefix}/sqlite-%{version}/*
47
+ /usr/local/sqlite-current
data/install/installer CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  BOLD=`tput bold`
4
4
  NORM=`tput sgr0`
5
- CHEF_CLIENT_VERSION="14.13.11"
5
+ CHEF_CLIENT_VERSION="16.9.29"
6
6
  if [ "$MU_BRANCH" == "" ];then
7
7
  MU_BRANCH="master"
8
8
  mydir="`dirname $0`"
@@ -23,12 +23,8 @@ elif [ "$DIST_VERSION" == "server" ];then # funny package name in RHEL6
23
23
  fi
24
24
 
25
25
  if [ "$DIST_VERSION" == 7 ];then
26
- OPSCODE_CHEF_PKG="chef-server-core-$CHEF_SERVER_VERSION.el7.x86_64"
27
- OPSCODE_CHEF_DL="https://packages.chef.io/stable/el/7/${OPSCODE_CHEF_PKG}.rpm"
28
26
  CHEF_CLIENT_PKG="chef-$CHEF_CLIENT_VERSION.el7.x86_64"
29
27
  else
30
- OPSCODE_CHEF_PKG="chef-server-core-$CHEF_SERVER_VERSION.el6.x86_64"
31
- OPSCODE_CHEF_DL="https://packages.chef.io/stable/el/6/${OPSCODE_CHEF_PKG}.rpm"
32
28
  CHEF_CLIENT_PKG="chef-$CHEF_CLIENT_VERSION.el6.x86_64"
33
29
  fi
34
30
 
@@ -43,7 +39,9 @@ if [ ! -f /opt/chef/bin/chef-apply ];then
43
39
  fi
44
40
  set -x
45
41
  set -e
42
+
46
43
  if ! /bin/rpm -q $CHEF_CLIENT_PKG > /dev/null ;then
44
+
47
45
  # Drop any old Chef packages laying around, first
48
46
  /usr/bin/yum -y erase chef || /bin/rpm -e chef
49
47
  /bin/rm -rf /opt/chef ~/.berkshelf ~/.chef /etc/chef
@@ -51,6 +49,10 @@ if ! /bin/rpm -q $CHEF_CLIENT_PKG > /dev/null ;then
51
49
  /bin/sh /root/chef-install.sh -v $CHEF_CLIENT_VERSION
52
50
  fi
53
51
 
52
+ mkdir -p /etc/chef
53
+ grep ^chef_license /etc/chef/client.rb || echo "chef_license 'accept'" >> /etc/chef/client.rb
54
+ export CHEF_LICENSE="accept"
55
+
54
56
 
55
57
  if [ -d /opt/mu/lib/cookbooks/mu-master/recipes ];then
56
58
  /opt/chef/bin/chef-apply /opt/mu/lib/cookbooks/mu-master/recipes/init.rb
data/modules/mommacat.ru CHANGED
@@ -387,7 +387,7 @@ app = proc do |env|
387
387
 
388
388
  # XXX We can't assume AWS anymore. What does this look like otherwise?
389
389
  # If this is an already-groomed instance, try to get a real object for it
390
- instance = MU::MommaCat.findStray("AWS", "server", cloud_id: req["mu_instance_id"], region: server_cfg["region"], deploy_id: req["mu_id"], name: req["mu_resource_name"], dummy_ok: false, calling_deploy: kittenpile).first
390
+ instance = MU::MommaCat.findStray("AWS", "server", cloud_id: req["mu_instance_id"], region: server_cfg["region"], deploy_id: req["mu_id"], name: req["mu_resource_name"], dummy_ok: true, calling_deploy: kittenpile).first
391
391
  mu_name = nil
392
392
  if instance.nil?
393
393
  # Now we're just checking for existence in the cloud provider, really
@@ -416,7 +416,7 @@ app = proc do |env|
416
416
  if instance.respond_to?(:addVolume)
417
417
  # XXX make sure we handle mangled input safely
418
418
  params = JSON.parse(Base64.decode64(req["add_volume"]))
419
- MU.log "ADDVOLUME REQUEST", MU::WARN, details: params
419
+ MU.log "add_volume request", MU::NOTICE, details: params
420
420
  instance.addVolume(params["dev"], params["size"], delete_on_termination: params["delete_on_termination"])
421
421
  else
422
422
  returnval = throw500 "I don't know how to add a volume for #{instance}"
data/modules/mu.rb CHANGED
@@ -16,8 +16,6 @@ require 'bundler/setup'
16
16
  require 'yaml'
17
17
  require 'socket'
18
18
  require 'net/http'
19
- gem 'aws-sdk-core'
20
- autoload :Aws, "aws-sdk-core"
21
19
  gem 'nokogiri'
22
20
  autoload :Nokogiri, "nokogiri"
23
21
  gem 'simple-password-gen'
@@ -299,8 +297,8 @@ module MU
299
297
  # Wrapper class for temporary Exceptions. Gives our internals something to
300
298
  # inherit that will log a notice message appropriately before bubbling up.
301
299
  class MuNonFatal < StandardError
302
- def initialize(message = nil, silent: false)
303
- MU.log message, MU::NOTICE if !message.nil? and !silent
300
+ def initialize(message = nil, silent: false, details: nil)
301
+ MU.log message, MU::NOTICE, details: details if !message.nil? and !silent
304
302
  if MU.verbosity == MU::Logger::SILENT
305
303
  super ""
306
304
  else
@@ -320,14 +318,14 @@ module MU
320
318
  # @param always [Proc]: Optional block of code to invoke before returning or failing, a bit like +ensure+
321
319
  # @param loop_if [Proc]: Optional block of code to invoke which will cause our block to be rerun until true
322
320
  # @param loop_msg [String]: Message to display every third attempt
323
- def self.retrier(catchme = nil, wait: 30, max: 0, ignoreme: [], on_retry: nil, always: nil, loop_if: nil, loop_msg: nil)
321
+ def self.retrier(catchme = nil, wait: 30, max: 0, ignoreme: [], on_retry: nil, always: nil, loop_if: nil, loop_msg: nil, logmsg_interval: 3)
324
322
 
325
323
  loop_if ||= Proc.new { false }
326
324
 
327
325
  retries = 0
328
326
  begin
329
327
  retries += 1
330
- loglevel = ((retries % 3) == 0) ? MU::NOTICE : MU::DEBUG
328
+ loglevel = (logmsg_interval > 0 and (retries % logmsg_interval) == 0) ? MU::NOTICE : MU::DEBUG
331
329
  log_attempts = retries.to_s
332
330
  log_attempts += (max > 0 ? "/"+max.to_s : "")
333
331
  yield(retries, wait) if block_given?
@@ -702,7 +700,8 @@ module MU
702
700
  if !$MU_CFG.nil? and !$MU_CFG['public_address'].nil? and
703
701
  !$MU_CFG['public_address'].empty? and @@my_public_ip != $MU_CFG['public_address']
704
702
  @@mu_public_addr = $MU_CFG['public_address']
705
- if !@@mu_public_addr.match(/^\d+\.\d+\.\d+\.\d+$/)
703
+ if !@@mu_public_addr.match(/^\d+\.\d+\.\d+\.\d+$/) and
704
+ File.exists?("/etc/hostname") and File.exists?("/etc/hosts")
706
705
  hostname = IO.readlines("/etc/hostname")[0].gsub(/\n/, '')
707
706
 
708
707
  hostlines = File.open('/etc/hosts').grep(/.*#{hostname}.*/)
@@ -887,22 +886,30 @@ module MU
887
886
  # @param stringify_keys [Boolean]
888
887
  # @return [Hash]
889
888
  def self.structToHash(struct, stringify_keys: false)
889
+ return nil if struct.nil?
890
+
890
891
  google_struct = false
891
892
  begin
892
893
  google_struct = struct.class.ancestors.include?(::Google::Apis::Core::Hashable)
893
894
  rescue NameError
895
+ rescue TypeError
896
+ return struct
894
897
  end
895
898
 
896
899
  aws_struct = false
897
900
  begin
898
901
  aws_struct = struct.class.ancestors.include?(::Seahorse::Client::Response)
899
902
  rescue NameError
903
+ rescue TypeError
904
+ return struct
900
905
  end
901
906
 
902
907
  azure_struct = false
903
908
  begin
904
909
  azure_struct = struct.class.ancestors.include?(::MsRestAzure) or struct.class.name.match(/Azure::.*?::Mgmt::.*?::Models::/)
905
910
  rescue NameError
911
+ rescue TypeError
912
+ return struct
906
913
  end
907
914
 
908
915
  if struct.is_a?(Struct) or struct.class.ancestors.include?(Struct) or