standard-procedure-anvil 0.1.4 → 0.1.6
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 +4 -4
- data/assets/cloudinit/dokku.mysql.ubuntu-22.yml +61 -0
- data/assets/cloudinit/dokku.ubuntu-22.yml +1 -12
- data/assets/install/dokku.txt +13 -0
- data/checksums/standard-procedure-anvil-0.1.5.gem.sha512 +1 -0
- data/checksums/standard-procedure-anvil-0.1.6.gem.sha512 +1 -0
- data/lib/anvil/app/host_installer.rb +10 -3
- data/lib/anvil/app.rb +1 -0
- data/lib/anvil/version.rb +1 -1
- metadata +6 -3
- data/assets/cloudinit/dokku.mysql.opensearch.ubuntu-22.yml +0 -126
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7ce4bfd700a5d2b870087b7d983902c43bc377ebcba1abbb911caea507aba0e8
|
4
|
+
data.tar.gz: 4e902474667b96efaf5a86435b381f6e54f28d58a1ae6a216441d9de6eb35925
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6a6c16d63f3b0c2bbbafcce079bdb7ba7ea8b44f2c5e0f4ac0f5a9beb3e1f2999852be11aeaed5c107bb88eaef1b7a09b0bf3fef4eaeabb9f5760c625f73c845
|
7
|
+
data.tar.gz: ca793262284e8938121d155fe18f0b6c527a50b9bf0bf437f9a3973d02d708060c317ece52f85713913ec0995937a88eb93d58af85293d01abcf50f5005d5493
|
@@ -0,0 +1,61 @@
|
|
1
|
+
#cloud-config
|
2
|
+
users:
|
3
|
+
- name: %{USER}
|
4
|
+
groups: users, admin, docker
|
5
|
+
sudo: ALL=(ALL) NOPASSWD:ALL
|
6
|
+
shell: /bin/bash
|
7
|
+
ssh_authorized_keys:
|
8
|
+
- %{PUBLIC_KEY}
|
9
|
+
packages:
|
10
|
+
- fail2ban
|
11
|
+
- ufw
|
12
|
+
- wget
|
13
|
+
- apt-transport-https
|
14
|
+
- mysql-client
|
15
|
+
- libmysqlclient-dev
|
16
|
+
package_update: true
|
17
|
+
package_upgrade: true
|
18
|
+
runcmd:
|
19
|
+
# General server setup
|
20
|
+
- timedatectl set-timezone UTC
|
21
|
+
# Install MySQL
|
22
|
+
- echo "mysql-server mysql-server/root_password password root" | sudo debconf-set-selections
|
23
|
+
- echo "mysql-server mysql-server/root_password_again password root" | sudo debconf-set-selections
|
24
|
+
- sudo apt-get -y install mysql-server
|
25
|
+
- |
|
26
|
+
cat >> /etc/mysql/mysql.conf.d/utf8.cnf << CONF
|
27
|
+
[client]
|
28
|
+
default-character-set=utf8mb4
|
29
|
+
|
30
|
+
[mysql]
|
31
|
+
default-character-set=utf8mb4
|
32
|
+
|
33
|
+
[mysqld]
|
34
|
+
init_connect='SET collation_connection = utf8mb4_unicode_ci'
|
35
|
+
init_connect='SET NAMES utf8mb4'
|
36
|
+
character-set-server=utf8mb4
|
37
|
+
collation-server=utf8mb4_unicode_ci
|
38
|
+
skip-character-set-client-handshake
|
39
|
+
CONF
|
40
|
+
- sed -i -e '/^\(#\|\)bind-address/s/^.*$/bind-address = 0.0.0.0/' /etc/mysql/mysql.conf.d/mysqld.cnf
|
41
|
+
# Start MySQL
|
42
|
+
- systemctl start mysql.service
|
43
|
+
# Fail2Ban setup
|
44
|
+
- printf "[sshd]\nenabled = true\nbanaction = iptables-multiport" > /etc/fail2ban/jail.local
|
45
|
+
- systemctl enable fail2ban
|
46
|
+
# UFW and SSH setup
|
47
|
+
- ufw allow 22/tcp
|
48
|
+
- ufw allow 80/tcp
|
49
|
+
- ufw allow 443/tcp
|
50
|
+
- ufw enable
|
51
|
+
# Harden SSH
|
52
|
+
- sed -i -e '/^\(#\|\)PermitRootLogin/s/^.*$/PermitRootLogin no/' /etc/ssh/sshd_config
|
53
|
+
- sed -i -e '/^\(#\|\)PasswordAuthentication/s/^.*$/PasswordAuthentication no/' /etc/ssh/sshd_config
|
54
|
+
- sed -i -e '/^\(#\|\)X11Forwarding/s/^.*$/X11Forwarding no/' /etc/ssh/sshd_config
|
55
|
+
- sed -i -e '/^\(#\|\)MaxAuthTries/s/^.*$/MaxAuthTries 2/' /etc/ssh/sshd_config
|
56
|
+
- sed -i -e '/^\(#\|\)AllowTcpForwarding/s/^.*$/AllowTcpForwarding no/' /etc/ssh/sshd_config
|
57
|
+
- sed -i -e '/^\(#\|\)AllowAgentForwarding/s/^.*$/AllowAgentForwarding no/' /etc/ssh/sshd_config
|
58
|
+
- sed -i -e '/^\(#\|\)AuthorizedKeysFile/s/^.*$/AuthorizedKeysFile .ssh\/authorized_keys/' /etc/ssh/sshd_config
|
59
|
+
- sed -i '$a AllowUsers %{USER} dokku' /etc/ssh/sshd_config
|
60
|
+
# And we're done
|
61
|
+
- reboot
|
@@ -33,16 +33,5 @@ runcmd:
|
|
33
33
|
- sed -i -e '/^\(#\|\)AllowAgentForwarding/s/^.*$/AllowAgentForwarding no/' /etc/ssh/sshd_config
|
34
34
|
- sed -i -e '/^\(#\|\)AuthorizedKeysFile/s/^.*$/AuthorizedKeysFile .ssh\/authorized_keys/' /etc/ssh/sshd_config
|
35
35
|
- sed -i '$a AllowUsers %{USER} dokku' /etc/ssh/sshd_config
|
36
|
-
#
|
37
|
-
- echo "dokku dokku/vhost_enable boolean true" | sudo debconf-set-selections
|
38
|
-
- wget https://dokku.com/install/v0.30.7/bootstrap.sh && sudo DOKKU_TAG=v0.30.7 bash bootstrap.sh
|
39
|
-
- cat /home/%{USER}/.ssh/authorized_keys | dokku ssh-keys:add admin
|
40
|
-
- dokku plugin:install https://github.com/dokku/dokku-cron-restart.git cron-restart
|
41
|
-
- dokku plugin:install https://github.com/dokku/dokku-maintenance.git maintenance
|
42
|
-
- dokku plugin:install https://github.com/dokku/dokku-redis.git redis
|
43
|
-
- dokku plugin:install https://github.com/dokku/dokku-mariadb.git mariadb
|
44
|
-
- dokku plugin:install https://github.com/dokku/dokku-memcached.git memcached
|
45
|
-
- dokku plugin:install https://github.com/dokku/dokku-letsencrypt.git letsencrypt
|
46
|
-
- dokku config:set --global DOKKU_LETSENCRYPT_EMAIL=sysadmin@echodek.co
|
47
|
-
- dokku git:set --global deploy-branch main
|
36
|
+
# And we're done
|
48
37
|
- reboot
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# SSH into your server and paste the script
|
2
|
+
sudo bash
|
3
|
+
echo "dokku dokku/vhost_enable boolean true" | sudo debconf-set-selections
|
4
|
+
wget https://dokku.com/install/v0.30.7/bootstrap.sh && sudo DOKKU_TAG=v0.30.7 bash bootstrap.sh
|
5
|
+
cat /home/app/.ssh/authorized_keys | dokku ssh-keys:add admin
|
6
|
+
dokku plugin:install https://github.com/dokku/dokku-cron-restart.git cron-restart
|
7
|
+
dokku plugin:install https://github.com/dokku/dokku-maintenance.git maintenance
|
8
|
+
dokku plugin:install https://github.com/dokku/dokku-redis.git redis
|
9
|
+
dokku plugin:install https://github.com/dokku/dokku-memcached.git memcached
|
10
|
+
dokku plugin:install https://github.com/dokku/dokku-letsencrypt.git letsencrypt
|
11
|
+
dokku config:set --global DOKKU_LETSENCRYPT_EMAIL=sysadmin@echodek.co
|
12
|
+
dokku git:set --global deploy-branch main
|
13
|
+
exit
|
@@ -0,0 +1 @@
|
|
1
|
+
185f01d498e635d91fcbc77ae60a47529b68f927302c67dc7b052a4b190d6aa1197c9c7d46d9626f927ea80b5d40162ed3e86177d63d5dbcd93b957dbf4238b7
|
@@ -0,0 +1 @@
|
|
1
|
+
11a59b33098151fd6205adbd24c410acd58168066dc2942b93feb601557f527fecce250002d6157bacf0007a546a4a23abdc219f269bc73820236cae738b63a0
|
@@ -5,11 +5,13 @@ module Anvil
|
|
5
5
|
require_relative "../logger"
|
6
6
|
require_relative "../ssh_executor"
|
7
7
|
require_relative "env"
|
8
|
+
require_relative "../configuration_reader"
|
8
9
|
class App
|
9
10
|
class HostInstaller < Struct.new(:configuration, :host, :secrets)
|
10
11
|
include StandardProcedure::Async::Actor
|
12
|
+
include Anvil::ConfigurationReader
|
11
13
|
|
12
|
-
|
14
|
+
def call
|
13
15
|
Anvil::SshExecutor.new(host, user_for(host), logger).call do |ssh|
|
14
16
|
create_app ssh
|
15
17
|
set_environment ssh
|
@@ -32,8 +34,13 @@ module Anvil
|
|
32
34
|
ssh.exec! "dokku docker-options:add app run \"--add-host=host.docker.internal:host-gateway\"", "set_dokku_options"
|
33
35
|
ssh.exec! "dokku domains:set app #{configuration_for_app["domain"]}", "set_dokku_options"
|
34
36
|
ssh.exec! "dokku proxy:ports-add app http:80:#{configuration_for_app["port"]}", "set_dokku_options"
|
35
|
-
ssh.exec! "dokku nginx:set app client-max-body-size
|
36
|
-
ssh.exec! "dokku nginx:set app proxy-read-timeout
|
37
|
+
ssh.exec! "dokku nginx:set app client-max-body-size #{configuration_for_app["nginx"]["client_max_body_size"]}", "set_dokku_options"
|
38
|
+
ssh.exec! "dokku nginx:set app proxy-read-timeout #{configuration_for_app["nginx"]["proxy_read_timeout"]}", "set_dokku_options"
|
39
|
+
if configuration_for_app["nginx"]["forward_proxy_headers"]
|
40
|
+
ssh.exec! "dokku nginx:set $APP x-forwarded-for-value \"$http_x_forwarded_for\"", "set_dokku_options"
|
41
|
+
ssh.exec! "dokku nginx:set $APP x-forwarded-port-value \"$http_x_forwarded_port\"", "set_dokku_options"
|
42
|
+
ssh.exec! "dokku nginx:set $APP x-forwarded-proto-value \"$http_x_forwarded_proto\"", "set_dokku_options"
|
43
|
+
end
|
37
44
|
ssh.exec! "dokku proxy:build-config app", "set_dokku_options"
|
38
45
|
end
|
39
46
|
|
data/lib/anvil/app.rb
CHANGED
data/lib/anvil/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: standard-procedure-anvil
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rahoul Baruah
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-07-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -110,13 +110,16 @@ files:
|
|
110
110
|
- LICENSE.txt
|
111
111
|
- README.md
|
112
112
|
- Rakefile
|
113
|
-
- assets/cloudinit/dokku.mysql.
|
113
|
+
- assets/cloudinit/dokku.mysql.ubuntu-22.yml
|
114
114
|
- assets/cloudinit/dokku.ubuntu-22.yml
|
115
115
|
- assets/cloudinit/memcached.ubuntu-22.yml
|
116
116
|
- assets/cloudinit/mysql.ubuntu-22.yml
|
117
117
|
- assets/cloudinit/opensearch.ubuntu-22.yml
|
118
118
|
- assets/cloudinit/redis.ubuntu-22.yml
|
119
|
+
- assets/install/dokku.txt
|
119
120
|
- checksums/standard-procedure-anvil-0.1.4.gem.sha512
|
121
|
+
- checksums/standard-procedure-anvil-0.1.5.gem.sha512
|
122
|
+
- checksums/standard-procedure-anvil-0.1.6.gem.sha512
|
120
123
|
- exe/anvil
|
121
124
|
- lib/anvil.rb
|
122
125
|
- lib/anvil/app.rb
|
@@ -1,126 +0,0 @@
|
|
1
|
-
#cloud-config
|
2
|
-
users:
|
3
|
-
- name: %{USER}
|
4
|
-
groups: users, admin, docker
|
5
|
-
sudo: ALL=(ALL) NOPASSWD:ALL
|
6
|
-
shell: /bin/bash
|
7
|
-
ssh_authorized_keys:
|
8
|
-
- %{PUBLIC_KEY}
|
9
|
-
packages:
|
10
|
-
- fail2ban
|
11
|
-
- ufw
|
12
|
-
- wget
|
13
|
-
- apt-transport-https
|
14
|
-
- docker.io
|
15
|
-
- docker-compose
|
16
|
-
- mysql-client
|
17
|
-
- libmysqlclient-dev
|
18
|
-
package_update: true
|
19
|
-
package_upgrade: true
|
20
|
-
runcmd:
|
21
|
-
# General server setup
|
22
|
-
- timedatectl set-timezone UTC
|
23
|
-
# Prepare for OpenSearch
|
24
|
-
- swapoff -a
|
25
|
-
- echo "vm.max_map_count=262144" > /etc/sysctl.d/98-opensearch.conf
|
26
|
-
- sysctl -p /etc/sysctl.d/98-opensearch.conf
|
27
|
-
# Install MySQL
|
28
|
-
- echo "mysql-server mysql-server/root_password password root" | sudo debconf-set-selections
|
29
|
-
- echo "mysql-server mysql-server/root_password_again password root" | sudo debconf-set-selections
|
30
|
-
- sudo apt-get -y install mysql-server
|
31
|
-
- |
|
32
|
-
cat >> /etc/mysql/mysql.conf.d/utf8.cnf << CONF
|
33
|
-
[client]
|
34
|
-
default-character-set=utf8mb4
|
35
|
-
|
36
|
-
[mysql]
|
37
|
-
default-character-set=utf8mb4
|
38
|
-
|
39
|
-
[mysqld]
|
40
|
-
init_connect='SET collation_connection = utf8mb4_unicode_ci'
|
41
|
-
init_connect='SET NAMES utf8mb4'
|
42
|
-
character-set-server=utf8mb4
|
43
|
-
collation-server=utf8mb4_unicode_ci
|
44
|
-
skip-character-set-client-handshake
|
45
|
-
CONF
|
46
|
-
- sed -i -e '/^\(#\|\)bind-address/s/^.*$/bind-address = 0.0.0.0/' /etc/mysql/mysql.conf.d/mysqld.cnf
|
47
|
-
# Start MySQL
|
48
|
-
- systemctl start mysql.service
|
49
|
-
# Fail2Ban setup
|
50
|
-
- printf "[sshd]\nenabled = true\nbanaction = iptables-multiport" > /etc/fail2ban/jail.local
|
51
|
-
- systemctl enable fail2ban
|
52
|
-
# UFW and SSH setup
|
53
|
-
- ufw allow 22/tcp
|
54
|
-
- ufw allow 80/tcp
|
55
|
-
- ufw allow 443/tcp
|
56
|
-
- ufw enable
|
57
|
-
# Harden SSH
|
58
|
-
- sed -i -e '/^\(#\|\)PermitRootLogin/s/^.*$/PermitRootLogin no/' /etc/ssh/sshd_config
|
59
|
-
- sed -i -e '/^\(#\|\)PasswordAuthentication/s/^.*$/PasswordAuthentication no/' /etc/ssh/sshd_config
|
60
|
-
- sed -i -e '/^\(#\|\)X11Forwarding/s/^.*$/X11Forwarding no/' /etc/ssh/sshd_config
|
61
|
-
- sed -i -e '/^\(#\|\)MaxAuthTries/s/^.*$/MaxAuthTries 2/' /etc/ssh/sshd_config
|
62
|
-
- sed -i -e '/^\(#\|\)AllowTcpForwarding/s/^.*$/AllowTcpForwarding no/' /etc/ssh/sshd_config
|
63
|
-
- sed -i -e '/^\(#\|\)AllowAgentForwarding/s/^.*$/AllowAgentForwarding no/' /etc/ssh/sshd_config
|
64
|
-
- sed -i -e '/^\(#\|\)AuthorizedKeysFile/s/^.*$/AuthorizedKeysFile .ssh\/authorized_keys/' /etc/ssh/sshd_config
|
65
|
-
- sed -i '$a AllowUsers %{USER} dokku' /etc/ssh/sshd_config
|
66
|
-
# Dokku setup
|
67
|
-
- echo "dokku dokku/vhost_enable boolean true" | sudo debconf-set-selections
|
68
|
-
- wget https://dokku.com/install/v0.30.7/bootstrap.sh && sudo DOKKU_TAG=v0.30.7 bash bootstrap.sh
|
69
|
-
- cat /home/%{USER}/.ssh/authorized_keys | dokku ssh-keys:add admin
|
70
|
-
- dokku plugin:install https://github.com/dokku/dokku-cron-restart.git cron-restart
|
71
|
-
- dokku plugin:install https://github.com/dokku/dokku-maintenance.git maintenance
|
72
|
-
- dokku plugin:install https://github.com/dokku/dokku-redis.git redis
|
73
|
-
- dokku plugin:install https://github.com/dokku/dokku-mariadb.git mariadb
|
74
|
-
- dokku plugin:install https://github.com/dokku/dokku-memcached.git memcached
|
75
|
-
- dokku plugin:install https://github.com/dokku/dokku-letsencrypt.git letsencrypt
|
76
|
-
- dokku config:set --global DOKKU_LETSENCRYPT_EMAIL=sysadmin@echodek.co
|
77
|
-
- dokku git:set --global deploy-branch main
|
78
|
-
# OpenSearch setup
|
79
|
-
- mkdir -p /etc/opensearch
|
80
|
-
- docker pull opensearchproject/opensearch:latest
|
81
|
-
- docker pull opensearchproject/opensearch-dashboards:latest
|
82
|
-
- |
|
83
|
-
cat >> /etc/opensearch/docker-compose.yml << EOF
|
84
|
-
version: '3'
|
85
|
-
services:
|
86
|
-
search_db:
|
87
|
-
image: opensearchproject/opensearch:latest
|
88
|
-
container_name: search_db
|
89
|
-
environment:
|
90
|
-
- discovery.type=single-node
|
91
|
-
- node.name=search_db
|
92
|
-
- bootstrap.memory_lock=true
|
93
|
-
- plugins.security.disabled=true
|
94
|
-
- "OPENSEARCH_JAVA_OPTS=-Xms2048m -Xmx2048m"
|
95
|
-
ulimits:
|
96
|
-
memlock:
|
97
|
-
soft: -1
|
98
|
-
hard: -1
|
99
|
-
nofile:
|
100
|
-
soft: 65536
|
101
|
-
hard: 65536
|
102
|
-
volumes:
|
103
|
-
- opensearch_data:/usr/share/opensearch/data
|
104
|
-
ports:
|
105
|
-
- 9200:9200
|
106
|
-
- 9600:9600
|
107
|
-
volumes:
|
108
|
-
opensearch_data:
|
109
|
-
EOF
|
110
|
-
- |
|
111
|
-
cat >> /etc/systemd/system/opensearch.service << EOF
|
112
|
-
Description=OpenSearch container
|
113
|
-
Requires=docker.service
|
114
|
-
After=docker.service
|
115
|
-
[Service]
|
116
|
-
WorkingDirectory=/etc/opensearch
|
117
|
-
Restart=always
|
118
|
-
ExecStart=/usr/bin/docker-compose up
|
119
|
-
ExecStop=/usr/bin/docker-compose down
|
120
|
-
[Install]
|
121
|
-
WantedBy=multi-user.target
|
122
|
-
EOF
|
123
|
-
- systemctl daemon-reload
|
124
|
-
- systemctl enable opensearch.service
|
125
|
-
- service opensearch start
|
126
|
-
- reboot
|