mirror of
https://github.com/frappe/bench.git
synced 2025-01-26 00:08:23 +00:00
Merge branch 'staging' into v5.x
This commit is contained in:
commit
0122ef17bf
@ -25,9 +25,10 @@ def install_prerequisites():
|
|||||||
@click.command(
|
@click.command(
|
||||||
"mariadb", help="Install and setup MariaDB of specified version and root password"
|
"mariadb", help="Install and setup MariaDB of specified version and root password"
|
||||||
)
|
)
|
||||||
@click.option("--mysql_root_password", "--mysql-root-password", default="")
|
@click.option("--mysql_root_password", "--mysql-root-password",
|
||||||
|
"--mariadb_root_password", "--mariadb-root-password", default="")
|
||||||
@click.option("--version", default="10.3")
|
@click.option("--version", default="10.3")
|
||||||
def install_maridb(mysql_root_password, version):
|
def install_mariadb(mysql_root_password, version):
|
||||||
if mysql_root_password:
|
if mysql_root_password:
|
||||||
extra_vars.update(
|
extra_vars.update(
|
||||||
{
|
{
|
||||||
@ -111,7 +112,7 @@ def install_failtoban(**kwargs):
|
|||||||
|
|
||||||
|
|
||||||
install.add_command(install_prerequisites)
|
install.add_command(install_prerequisites)
|
||||||
install.add_command(install_maridb)
|
install.add_command(install_mariadb)
|
||||||
install.add_command(install_wkhtmltopdf)
|
install.add_command(install_wkhtmltopdf)
|
||||||
install.add_command(install_nodejs)
|
install.add_command(install_nodejs)
|
||||||
install.add_command(install_psutil)
|
install.add_command(install_psutil)
|
||||||
|
@ -358,7 +358,7 @@ def sync_domains(domain=None, site=None):
|
|||||||
@click.command("role", help="Install dependencies via ansible roles")
|
@click.command("role", help="Install dependencies via ansible roles")
|
||||||
@click.argument("role")
|
@click.argument("role")
|
||||||
@click.option("--admin_emails", default="")
|
@click.option("--admin_emails", default="")
|
||||||
@click.option("--mysql_root_password")
|
@click.option("--mysql_root_password", "--mariadb_root_password")
|
||||||
@click.option("--container", is_flag=True, default=False)
|
@click.option("--container", is_flag=True, default=False)
|
||||||
def setup_roles(role, **kwargs):
|
def setup_roles(role, **kwargs):
|
||||||
extra_vars = {"production": True}
|
extra_vars = {"production": True}
|
||||||
|
@ -83,7 +83,7 @@ def update_config_for_frappe(config, bench_path):
|
|||||||
|
|
||||||
for key in ("redis_cache", "redis_queue", "redis_socketio"):
|
for key in ("redis_cache", "redis_queue", "redis_socketio"):
|
||||||
if key not in config:
|
if key not in config:
|
||||||
config[key] = f"redis://localhost:{ports[key]}"
|
config[key] = f"redis://127.0.0.1:{ports[key]}"
|
||||||
|
|
||||||
for key in ("webserver_port", "socketio_port", "file_watcher_port"):
|
for key in ("webserver_port", "socketio_port", "file_watcher_port"):
|
||||||
if key not in config:
|
if key not in config:
|
||||||
|
@ -39,7 +39,7 @@ server {
|
|||||||
}
|
}
|
||||||
|
|
||||||
location @webserver {
|
location @webserver {
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $remote_addr;
|
||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
proxy_set_header X-Frappe-Site-Name {{ bench_manager_site_name }};
|
proxy_set_header X-Frappe-Site-Name {{ bench_manager_site_name }};
|
||||||
proxy_set_header Host {{ bench_manager_site_name }};
|
proxy_set_header Host {{ bench_manager_site_name }};
|
||||||
|
@ -13,7 +13,7 @@ Debain 9
|
|||||||
|
|
||||||
## Post install
|
## Post install
|
||||||
|
|
||||||
Run `mysql_secure_installation`
|
Run `mariadb-secure-installation`
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
@ -39,7 +39,7 @@ Configuration filename:
|
|||||||
mysql_conf_file: settings.cnf
|
mysql_conf_file: settings.cnf
|
||||||
```
|
```
|
||||||
|
|
||||||
### Experimental unattended mysql_secure_installation
|
### Experimental unattended mariadb-secure-installation
|
||||||
|
|
||||||
```
|
```
|
||||||
ansible-playbook release.yml --extra-vars "mysql_secure_installation=true mysql_root_password=your_very_secret_password"
|
ansible-playbook release.yml --extra-vars "mysql_secure_installation=true mysql_root_password=your_very_secret_password"
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
---
|
---
|
||||||
- name: restart mysql
|
- name: restart mariadb
|
||||||
service: name=mysql state=restarted
|
service: name=mariadb state=restarted
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
group: root
|
group: root
|
||||||
mode: 0644
|
mode: 0644
|
||||||
when: mysql_conf_tpl != 'change_me' and ansible_distribution != 'Debian'
|
when: mysql_conf_tpl != 'change_me' and ansible_distribution != 'Debian'
|
||||||
notify: restart mysql
|
notify: restart mariadb
|
||||||
|
|
||||||
- include_tasks: debian.yml
|
- include_tasks: debian.yml
|
||||||
when: ansible_distribution == 'Debian'
|
when: ansible_distribution == 'Debian'
|
||||||
@ -29,7 +29,7 @@
|
|||||||
group: root
|
group: root
|
||||||
mode: 0644
|
mode: 0644
|
||||||
when: mysql_conf_tpl != 'change_me' and ansible_distribution == 'Debian'
|
when: mysql_conf_tpl != 'change_me' and ansible_distribution == 'Debian'
|
||||||
notify: restart mysql
|
notify: restart mariadb
|
||||||
|
|
||||||
- name: Add additional conf for MariaDB 10.2 in mariadb.conf.d
|
- name: Add additional conf for MariaDB 10.2 in mariadb.conf.d
|
||||||
blockinfile:
|
blockinfile:
|
||||||
@ -59,7 +59,7 @@
|
|||||||
|
|
||||||
- name: Start and enable service
|
- name: Start and enable service
|
||||||
service:
|
service:
|
||||||
name: mysql
|
name: mariadb
|
||||||
state: started
|
state: started
|
||||||
enabled: yes
|
enabled: yes
|
||||||
|
|
||||||
|
@ -19,28 +19,28 @@
|
|||||||
- ::1
|
- ::1
|
||||||
|
|
||||||
- name: Reload privilege tables
|
- name: Reload privilege tables
|
||||||
command: 'mysql -ne "{{ item }}"'
|
command: 'mariadb -ne "{{ item }}"'
|
||||||
with_items:
|
with_items:
|
||||||
- FLUSH PRIVILEGES
|
- FLUSH PRIVILEGES
|
||||||
changed_when: False
|
changed_when: False
|
||||||
when: run_travis is not defined
|
when: run_travis is not defined
|
||||||
|
|
||||||
- name: Remove anonymous users
|
- name: Remove anonymous users
|
||||||
command: 'mysql -ne "{{ item }}"'
|
command: 'mariadb -ne "{{ item }}"'
|
||||||
with_items:
|
with_items:
|
||||||
- DELETE FROM mysql.user WHERE User=''
|
- DELETE FROM mysql.user WHERE User=''
|
||||||
changed_when: False
|
changed_when: False
|
||||||
when: run_travis is not defined
|
when: run_travis is not defined
|
||||||
|
|
||||||
- name: Disallow root login remotely
|
- name: Disallow root login remotely
|
||||||
command: 'mysql -ne "{{ item }}"'
|
command: 'mariadb -ne "{{ item }}"'
|
||||||
with_items:
|
with_items:
|
||||||
- DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1')
|
- DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1')
|
||||||
changed_when: False
|
changed_when: False
|
||||||
when: run_travis is not defined
|
when: run_travis is not defined
|
||||||
|
|
||||||
- name: Remove test database and access to it
|
- name: Remove test database and access to it
|
||||||
command: 'mysql -ne "{{ item }}"'
|
command: 'mariadb -ne "{{ item }}"'
|
||||||
with_items:
|
with_items:
|
||||||
- DROP DATABASE IF EXISTS test
|
- DROP DATABASE IF EXISTS test
|
||||||
- DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'
|
- DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'
|
||||||
@ -48,7 +48,7 @@
|
|||||||
when: run_travis is not defined
|
when: run_travis is not defined
|
||||||
|
|
||||||
- name: Reload privilege tables
|
- name: Reload privilege tables
|
||||||
command: 'mysql -ne "{{ item }}"'
|
command: 'mariadb -ne "{{ item }}"'
|
||||||
with_items:
|
with_items:
|
||||||
- FLUSH PRIVILEGES
|
- FLUSH PRIVILEGES
|
||||||
changed_when: False
|
changed_when: False
|
||||||
|
@ -54,9 +54,9 @@ class TestBenchInit(TestBenchBase):
|
|||||||
"webserver_port": 8000,
|
"webserver_port": 8000,
|
||||||
"socketio_port": 9000,
|
"socketio_port": 9000,
|
||||||
"file_watcher_port": 6787,
|
"file_watcher_port": 6787,
|
||||||
"redis_queue": "redis://localhost:11000",
|
"redis_queue": "redis://127.0.0.1:11000",
|
||||||
"redis_socketio": "redis://localhost:13000",
|
"redis_socketio": "redis://127.0.0.1:13000",
|
||||||
"redis_cache": "redis://localhost:13000",
|
"redis_cache": "redis://127.0.0.1:13000",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -66,9 +66,9 @@ class TestBenchInit(TestBenchBase):
|
|||||||
"webserver_port": 8001,
|
"webserver_port": 8001,
|
||||||
"socketio_port": 9001,
|
"socketio_port": 9001,
|
||||||
"file_watcher_port": 6788,
|
"file_watcher_port": 6788,
|
||||||
"redis_queue": "redis://localhost:11001",
|
"redis_queue": "redis://127.0.0.1:11001",
|
||||||
"redis_socketio": "redis://localhost:13001",
|
"redis_socketio": "redis://127.0.0.1:13001",
|
||||||
"redis_cache": "redis://localhost:13001",
|
"redis_cache": "redis://127.0.0.1:13001",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
|
import fileinput
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import platform
|
import platform
|
||||||
@ -114,7 +115,10 @@ def check_repo_exists() -> bool:
|
|||||||
return os.path.exists(os.path.join(os.getcwd(), "frappe_docker"))
|
return os.path.exists(os.path.join(os.getcwd(), "frappe_docker"))
|
||||||
|
|
||||||
|
|
||||||
def setup_prod(project: str, sites, email: str, version: str = None) -> None:
|
def setup_prod(project: str, sites, email: str, version: str = None, image = None) -> None:
|
||||||
|
if len(sites) == 0:
|
||||||
|
sites = ["site1.localhost"]
|
||||||
|
|
||||||
if check_repo_exists():
|
if check_repo_exists():
|
||||||
compose_file_name = os.path.join(os.path.expanduser("~"), f"{project}-compose.yml")
|
compose_file_name = os.path.join(os.path.expanduser("~"), f"{project}-compose.yml")
|
||||||
docker_repo_path = os.path.join(os.getcwd(), "frappe_docker")
|
docker_repo_path = os.path.join(os.getcwd(), "frappe_docker")
|
||||||
@ -171,6 +175,14 @@ def setup_prod(project: str, sites, email: str, version: str = None) -> None:
|
|||||||
logging.error("Docker Compose generation failed", exc_info=True)
|
logging.error("Docker Compose generation failed", exc_info=True)
|
||||||
cprint("\nGenerating Compose File failed\n")
|
cprint("\nGenerating Compose File failed\n")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
# Use custom image
|
||||||
|
if image:
|
||||||
|
for line in fileinput.input(compose_file_name, inplace=True):
|
||||||
|
if "image: frappe/erpnext" in line:
|
||||||
|
line = line.replace("image: frappe/erpnext", f"image: {image}")
|
||||||
|
sys.stdout.write(line)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Starting with generated compose file
|
# Starting with generated compose file
|
||||||
subprocess.run(
|
subprocess.run(
|
||||||
@ -199,7 +211,7 @@ def setup_prod(project: str, sites, email: str, version: str = None) -> None:
|
|||||||
else:
|
else:
|
||||||
install_docker()
|
install_docker()
|
||||||
clone_frappe_docker_repo()
|
clone_frappe_docker_repo()
|
||||||
setup_prod(project, sites, email, version) # Recursive
|
setup_prod(project, sites, email, version, image) # Recursive
|
||||||
|
|
||||||
|
|
||||||
def setup_dev_instance(project: str):
|
def setup_dev_instance(project: str):
|
||||||
@ -316,11 +328,12 @@ if __name__ == "__main__":
|
|||||||
"-s",
|
"-s",
|
||||||
"--sitename",
|
"--sitename",
|
||||||
help="Site Name(s) for your production bench",
|
help="Site Name(s) for your production bench",
|
||||||
default=["site1.localhost"],
|
default=[],
|
||||||
action="append",
|
action="append",
|
||||||
dest="sites",
|
dest="sites",
|
||||||
)
|
)
|
||||||
parser.add_argument("-n", "--project", help="Project Name", default="frappe")
|
parser.add_argument("-n", "--project", help="Project Name", default="frappe")
|
||||||
|
parser.add_argument("-i", "--image", help="Full Image Name")
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--email", help="Add email for the SSL.", required="--prod" in sys.argv
|
"--email", help="Add email for the SSL.", required="--prod" in sys.argv
|
||||||
)
|
)
|
||||||
@ -338,6 +351,6 @@ if __name__ == "__main__":
|
|||||||
if "example.com" in args.email:
|
if "example.com" in args.email:
|
||||||
cprint("Emails with example.com not acceptable", level=1)
|
cprint("Emails with example.com not acceptable", level=1)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
setup_prod(args.project, args.sites, args.email, args.version)
|
setup_prod(args.project, args.sites, args.email, args.version, args.image)
|
||||||
else:
|
else:
|
||||||
parser.print_help()
|
parser.print_help()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user