cloud-mu 3.3.0 → 3.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (114) hide show
  1. checksums.yaml +4 -4
  2. data/ansible/roles/mu-nat/tasks/main.yml +3 -0
  3. data/bin/mu-aws-setup +41 -7
  4. data/bin/mu-azure-setup +36 -2
  5. data/bin/mu-configure +214 -119
  6. data/bin/mu-gcp-setup +37 -2
  7. data/bin/mu-node-manage +3 -0
  8. data/bin/mu-refresh-ssl +67 -0
  9. data/bin/mu-run-tests +14 -4
  10. data/bin/mu-self-update +30 -10
  11. data/bin/mu-upload-chef-artifacts +30 -26
  12. data/cloud-mu.gemspec +9 -7
  13. data/cookbooks/mu-master/attributes/default.rb +5 -1
  14. data/cookbooks/mu-master/metadata.rb +2 -2
  15. data/cookbooks/mu-master/recipes/default.rb +81 -26
  16. data/cookbooks/mu-master/recipes/init.rb +197 -62
  17. data/cookbooks/mu-master/recipes/update_nagios_only.rb +1 -1
  18. data/cookbooks/mu-master/recipes/vault.rb +78 -77
  19. data/cookbooks/mu-master/templates/default/mods/rewrite.conf.erb +1 -0
  20. data/cookbooks/mu-master/templates/default/nagios.conf.erb +103 -0
  21. data/cookbooks/mu-master/templates/default/web_app.conf.erb +14 -30
  22. data/cookbooks/mu-tools/attributes/default.rb +12 -0
  23. data/cookbooks/mu-tools/files/centos-6/CentOS-Base.repo +47 -0
  24. data/cookbooks/mu-tools/libraries/helper.rb +98 -4
  25. data/cookbooks/mu-tools/libraries/monkey.rb +1 -1
  26. data/cookbooks/mu-tools/recipes/apply_security.rb +31 -9
  27. data/cookbooks/mu-tools/recipes/aws_api.rb +8 -2
  28. data/cookbooks/mu-tools/recipes/base_repositories.rb +1 -1
  29. data/cookbooks/mu-tools/recipes/gcloud.rb +2 -9
  30. data/cookbooks/mu-tools/recipes/google_api.rb +7 -0
  31. data/cookbooks/mu-tools/recipes/rsyslog.rb +8 -1
  32. data/cookbooks/mu-tools/resources/disk.rb +113 -42
  33. data/cookbooks/mu-tools/resources/mommacat_request.rb +1 -2
  34. data/cookbooks/mu-tools/templates/centos-8/sshd_config.erb +215 -0
  35. data/extras/Gemfile.lock.bootstrap +394 -0
  36. data/extras/bucketstubs/error.html +0 -0
  37. data/extras/bucketstubs/index.html +0 -0
  38. data/extras/clean-stock-amis +11 -3
  39. data/extras/generate-stock-images +6 -3
  40. data/extras/git_rpm/build.sh +20 -0
  41. data/extras/git_rpm/mugit.spec +53 -0
  42. data/extras/image-generators/AWS/centos7.yaml +19 -16
  43. data/extras/image-generators/AWS/{rhel7.yaml → rhel71.yaml} +0 -0
  44. data/extras/image-generators/AWS/{win2k12.yaml → win2k12r2.yaml} +0 -0
  45. data/extras/image-generators/VMWare/centos8.yaml +15 -0
  46. data/extras/openssl_rpm/build.sh +19 -0
  47. data/extras/openssl_rpm/mussl.spec +46 -0
  48. data/extras/python_rpm/muthon.spec +14 -4
  49. data/extras/ruby_rpm/muby.spec +9 -5
  50. data/extras/sqlite_rpm/build.sh +19 -0
  51. data/extras/sqlite_rpm/muqlite.spec +47 -0
  52. data/install/installer +7 -5
  53. data/modules/mommacat.ru +2 -2
  54. data/modules/mu.rb +12 -5
  55. data/modules/mu/cloud/machine_images.rb +1 -1
  56. data/modules/mu/cloud/providers.rb +6 -1
  57. data/modules/mu/cloud/resource_base.rb +7 -4
  58. data/modules/mu/cloud/ssh_sessions.rb +5 -1
  59. data/modules/mu/cloud/wrappers.rb +16 -7
  60. data/modules/mu/config.rb +28 -12
  61. data/modules/mu/config/database.rb +2 -2
  62. data/modules/mu/config/firewall_rule.rb +1 -1
  63. data/modules/mu/config/ref.rb +3 -3
  64. data/modules/mu/config/schema_helpers.rb +12 -3
  65. data/modules/mu/config/server.rb +10 -4
  66. data/modules/mu/config/server_pool.rb +2 -2
  67. data/modules/mu/config/vpc.rb +10 -10
  68. data/modules/mu/defaults/AWS.yaml +96 -96
  69. data/modules/mu/deploy.rb +27 -14
  70. data/modules/mu/groomers/chef.rb +2 -2
  71. data/modules/mu/master.rb +49 -3
  72. data/modules/mu/mommacat.rb +27 -9
  73. data/modules/mu/mommacat/naming.rb +2 -2
  74. data/modules/mu/mommacat/search.rb +16 -5
  75. data/modules/mu/mommacat/storage.rb +67 -32
  76. data/modules/mu/providers/aws.rb +185 -71
  77. data/modules/mu/providers/aws/alarm.rb +3 -3
  78. data/modules/mu/providers/aws/bucket.rb +19 -19
  79. data/modules/mu/providers/aws/cache_cluster.rb +22 -22
  80. data/modules/mu/providers/aws/cdn.rb +2 -2
  81. data/modules/mu/providers/aws/collection.rb +14 -14
  82. data/modules/mu/providers/aws/container_cluster.rb +27 -27
  83. data/modules/mu/providers/aws/database.rb +49 -45
  84. data/modules/mu/providers/aws/dnszone.rb +5 -5
  85. data/modules/mu/providers/aws/endpoint.rb +35 -35
  86. data/modules/mu/providers/aws/firewall_rule.rb +26 -23
  87. data/modules/mu/providers/aws/function.rb +35 -32
  88. data/modules/mu/providers/aws/group.rb +7 -7
  89. data/modules/mu/providers/aws/habitat.rb +2 -2
  90. data/modules/mu/providers/aws/job.rb +35 -32
  91. data/modules/mu/providers/aws/loadbalancer.rb +58 -37
  92. data/modules/mu/providers/aws/log.rb +14 -14
  93. data/modules/mu/providers/aws/msg_queue.rb +10 -10
  94. data/modules/mu/providers/aws/nosqldb.rb +8 -8
  95. data/modules/mu/providers/aws/notifier.rb +7 -7
  96. data/modules/mu/providers/aws/role.rb +69 -47
  97. data/modules/mu/providers/aws/search_domain.rb +10 -10
  98. data/modules/mu/providers/aws/server.rb +198 -110
  99. data/modules/mu/providers/aws/server_pool.rb +71 -119
  100. data/modules/mu/providers/aws/storage_pool.rb +17 -9
  101. data/modules/mu/providers/aws/user.rb +1 -1
  102. data/modules/mu/providers/aws/vpc.rb +106 -51
  103. data/modules/mu/providers/aws/vpc_subnet.rb +43 -39
  104. data/modules/mu/providers/azure.rb +82 -16
  105. data/modules/mu/providers/azure/server.rb +18 -3
  106. data/modules/mu/providers/cloudformation/server.rb +1 -1
  107. data/modules/mu/providers/google.rb +20 -5
  108. data/modules/mu/providers/google/folder.rb +6 -2
  109. data/modules/mu/providers/google/function.rb +65 -30
  110. data/modules/mu/providers/google/role.rb +2 -1
  111. data/modules/mu/providers/google/vpc.rb +27 -2
  112. data/modules/tests/aws-servers-with-handrolled-iam.yaml +37 -0
  113. data/modules/tests/k8s.yaml +1 -1
  114. metadata +32 -15
@@ -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'
@@ -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