From 030e4f940c1aa61795e04b4c1cf697758058a72f Mon Sep 17 00:00:00 2001 From: WizaXxX Date: Sat, 11 Apr 2020 16:23:52 +0300 Subject: [PATCH] edit readme --- .gitignore | 1 + README.md | 8 +- conf/web/httpd.conf | 353 ++++++++++++++++++++++++++++++++ docker-compose.yml | 1 + install.py | 10 +- modules/helper.py | 6 +- other_files/cfe/api_1cfresh.cfe | Bin 17982 -> 18188 bytes other_files/params.json | 40 ++-- start.py | 138 ++++++++----- 9 files changed, 482 insertions(+), 75 deletions(-) create mode 100644 conf/web/httpd.conf diff --git a/.gitignore b/.gitignore index d8013b6..e6ae787 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ workdir workdir/ test.py .vscode/launch.json +.hostname \ No newline at end of file diff --git a/README.md b/README.md index 44ec53e..6f12292 100644 --- a/README.md +++ b/README.md @@ -51,8 +51,12 @@ cd docker_fresh ``` ##### Размещение дистрибутитов -Все ранее скачанные дистрибутивы необходимо разместить в каталоге `/docker_fresh/distr/`. После добавление всех дистрибутивов в каталог, он должен выглядить следубщим образом +Все ранее скачанные дистрибутивы необходимо разместить в каталоге `/docker_fresh/distr/`. +После добавления всех дистрибутивов в каталог, он должен выглядить примерно следующим образом ![](https://i.ibb.co/S50sF96/2020-04-10-16-03-22.png) ##### Настройка списка создваемых информационных баз -В файле `/docker_fresh/other_files/params.json` расположен список информационных баз которые требуется создать в формате **JSON** +В файле `/docker_fresh/other_files/params.json` расположен список информационных баз в формате **JSON** которые требуется создать +- Информационная база **SM** всегда должна быть первой в списке +- Для каждой базы необходимо прописать имя **CF** файла расположенного в каталоге`/docker_fresh/distr/` +- В данный список можно добавить свои информационные базы \ No newline at end of file diff --git a/conf/web/httpd.conf b/conf/web/httpd.conf new file mode 100644 index 0000000..e07723e --- /dev/null +++ b/conf/web/httpd.conf @@ -0,0 +1,353 @@ +# +# This is the main Apache HTTP server configuration file. It contains the +# configuration directives that give the server its instructions. +# See for detailed information. +# In particular, see +# +# for a discussion of each configuration directive. +# +# Do NOT simply read the instructions in here without understanding +# what they do. They're here only as hints or reminders. If you are unsure +# consult the online docs. You have been warned. +# +# Configuration and logfile names: If the filenames you specify for many +# of the server's control files begin with "/" (or "drive:/" for Win32), the +# server will use that explicit path. If the filenames do *not* begin +# with "/", the value of ServerRoot is prepended -- so 'log/access_log' +# with ServerRoot set to '/www' will be interpreted by the +# server as '/www/log/access_log', where as '/log/access_log' will be +# interpreted as '/log/access_log'. + +# +# ServerRoot: The top of the directory tree under which the server's +# configuration, error, and log files are kept. +# +# Do not add a slash at the end of the directory path. If you point +# ServerRoot at a non-local disk, be sure to specify a local disk on the +# Mutex directive, if file-based mutexes are used. If you wish to share the +# same ServerRoot for multiple httpd daemons, you will need to change at +# least PidFile. +# +ServerRoot "/etc/httpd" + +# +# Listen: Allows you to bind Apache to specific IP addresses and/or +# ports, instead of the default. See also the +# directive. +# +# Change this to Listen on specific IP addresses as shown below to +# prevent Apache from glomming onto all bound IP addresses. +# +#Listen 12.34.56.78:80 +Listen 80 + +# +# Dynamic Shared Object (DSO) Support +# +# To be able to use the functionality of a module which was built as a DSO you +# have to place corresponding `LoadModule' lines at this location so the +# directives contained in it are actually available _before_ they are used. +# Statically compiled modules (those listed by `httpd -l') do not need +# to be loaded here. +# +# Example: +# LoadModule foo_module modules/mod_foo.so +# +Include conf.modules.d/*.conf + +# +# If you wish httpd to run as a different user or group, you must run +# httpd as root initially and it will switch. +# +# User/Group: The name (or #number) of the user/group to run httpd as. +# It is usually good practice to create a dedicated user and group for +# running httpd, as with most system services. +# +User usr1cv8 +Group grp1cv8 + +# 'Main' server configuration +# +# The directives in this section set up the values used by the 'main' +# server, which responds to any requests that aren't handled by a +# definition. These values also provide defaults for +# any containers you may define later in the file. +# +# All of these directives may appear inside containers, +# in which case these default settings will be overridden for the +# virtual host being defined. +# + +# +# ServerAdmin: Your address, where problems with the server should be +# e-mailed. This address appears on some server-generated pages, such +# as error documents. e.g. admin@your-domain.com +# +ServerAdmin root@localhost + +# +# ServerName gives the name and port that the server uses to identify itself. +# This can often be determined automatically, but we recommend you specify +# it explicitly to prevent problems during startup. +# +# If your host doesn't have a registered DNS name, enter its IP address here. +# +ServerName localhost + +# +# Deny access to the entirety of your server's filesystem. You must +# explicitly permit access to web content directories in other +# blocks below. +# + + AllowOverride none + Require all denied + + +# +# Note that from this point forward you must specifically allow +# particular features to be enabled - so if something's not working as +# you might expect, make sure that you have specifically enabled it +# below. +# + +# +# DocumentRoot: The directory out of which you will serve your +# documents. By default, all requests are taken from this directory, but +# symbolic links and aliases may be used to point to other locations. +# +DocumentRoot "/var/www/html" + +# +# Relax access to content within /var/www. +# + + AllowOverride None + # Allow open access: + Require all granted + + +# Further relax access to the default document root: + + # + # Possible values for the Options directive are "None", "All", + # or any combination of: + # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews + # + # Note that "MultiViews" must be named *explicitly* --- "Options All" + # doesn't give it to you. + # + # The Options directive is both complicated and important. Please see + # http://httpd.apache.org/docs/2.4/mod/core.html#options + # for more information. + # + Options Indexes FollowSymLinks + + # + # AllowOverride controls what directives may be placed in .htaccess files. + # It can be "All", "None", or any combination of the keywords: + # Options FileInfo AuthConfig Limit + # + AllowOverride None + + # + # Controls who can get stuff from this server. + # + Require all granted + + +# +# DirectoryIndex: sets the file that Apache will serve if a directory +# is requested. +# + + DirectoryIndex index.html + + +# +# The following lines prevent .htaccess and .htpasswd files from being +# viewed by Web clients. +# + + Require all denied + + +# +# ErrorLog: The location of the error log file. +# If you do not specify an ErrorLog directive within a +# container, error messages relating to that virtual host will be +# logged here. If you *do* define an error logfile for a +# container, that host's errors will be logged there and not here. +# +ErrorLog "logs/error_log" + +# +# LogLevel: Control the number of messages logged to the error_log. +# Possible values include: debug, info, notice, warn, error, crit, +# alert, emerg. +# +LogLevel warn + + + # + # The following directives define some format nicknames for use with + # a CustomLog directive (see below). + # + LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined + LogFormat "%h %l %u %t \"%r\" %>s %b" common + + + # You need to enable mod_logio.c to use %I and %O + LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio + + + # + # The location and format of the access logfile (Common Logfile Format). + # If you do not define any access logfiles within a + # container, they will be logged here. Contrariwise, if you *do* + # define per- access logfiles, transactions will be + # logged therein and *not* in this file. + # + #CustomLog "logs/access_log" common + + # + # If you prefer a logfile with access, agent, and referer information + # (Combined Logfile Format) you can use the following directive. + # + CustomLog "logs/access_log" combined + + + + # + # Redirect: Allows you to tell clients about documents that used to + # exist in your server's namespace, but do not anymore. The client + # will make a new request for the document at its new location. + # Example: + # Redirect permanent /foo http://www.example.com/bar + + # + # Alias: Maps web paths into filesystem paths and is used to + # access content that does not live under the DocumentRoot. + # Example: + # Alias /webpath /full/filesystem/path + # + # If you include a trailing / on /webpath then the server will + # require it to be present in the URL. You will also likely + # need to provide a section to allow access to + # the filesystem path. + + # + # ScriptAlias: This controls which directories contain server scripts. + # ScriptAliases are essentially the same as Aliases, except that + # documents in the target directory are treated as applications and + # run by the server when requested rather than as documents sent to the + # client. The same rules about trailing "/" apply to ScriptAlias + # directives as to Alias. + # + ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" + + + +# +# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased +# CGI directory exists, if you have that configured. +# + + AllowOverride None + Options None + Require all granted + + + + # + # TypesConfig points to the file containing the list of mappings from + # filename extension to MIME-type. + # + TypesConfig /etc/mime.types + + # + # AddType allows you to add to or override the MIME configuration + # file specified in TypesConfig for specific file types. + # + #AddType application/x-gzip .tgz + # + # AddEncoding allows you to have certain browsers uncompress + # information on the fly. Note: Not all browsers support this. + # + #AddEncoding x-compress .Z + #AddEncoding x-gzip .gz .tgz + # + # If the AddEncoding directives above are commented-out, then you + # probably should define those extensions to indicate media types: + # + AddType application/x-compress .Z + AddType application/x-gzip .gz .tgz + + # + # AddHandler allows you to map certain file extensions to "handlers": + # actions unrelated to filetype. These can be either built into the server + # or added with the Action directive (see below) + # + # To use CGI scripts outside of ScriptAliased directories: + # (You will also need to add "ExecCGI" to the "Options" directive.) + # + #AddHandler cgi-script .cgi + + # For type maps (negotiated resources): + #AddHandler type-map var + + # + # Filters allow you to process content before it is sent to the client. + # + # To parse .shtml files for server-side includes (SSI): + # (You will also need to add "Includes" to the "Options" directive.) + # + AddType text/html .shtml + AddOutputFilter INCLUDES .shtml + + +# +# Specify a default charset for all content served; this enables +# interpretation of all content as UTF-8 by default. To use the +# default browser choice (ISO-8859-1), or to allow the META tags +# in HTML content to override this choice, comment out this +# directive: +# +AddDefaultCharset UTF-8 + + + # + # The mod_mime_magic module allows the server to use various hints from the + # contents of the file itself to determine its type. The MIMEMagicFile + # directive tells the module where the hint definitions are located. + # + MIMEMagicFile conf/magic + + +# +# Customizable error responses come in three flavors: +# 1) plain text 2) local redirects 3) external redirects +# +# Some examples: +#ErrorDocument 500 "The server made a boo boo." +#ErrorDocument 404 /missing.html +#ErrorDocument 404 "/cgi-bin/missing_handler.pl" +#ErrorDocument 402 http://www.example.com/subscription_info.html +# + +# +# EnableMMAP and EnableSendfile: On systems that support it, +# memory-mapping or the sendfile syscall may be used to deliver +# files. This usually improves server performance, but must +# be turned off when serving from networked-mounted +# filesystems or if support for these functions is otherwise +# broken on your system. +# Defaults if commented: EnableMMAP On, EnableSendfile Off +# +#EnableMMAP off +EnableSendfile on + +# Supplemental configuration +# +# Load config files in the "/etc/httpd/conf.d" directory, if any. +IncludeOptional conf.d/*.conf \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 03345b0..de33607 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -92,6 +92,7 @@ services: - ./artifacts/web/log:/var/log/1c - ./artifacts/web/www/a/:/var/www/a/ - ./artifacts/web/www/int/:/var/www/int/ + - ./artifacts/web/conf/httpd.conf:/etc/httpd/conf/httpd.conf - ./mnt:/mnt depends_on: - srv diff --git a/install.py b/install.py index ecc11d7..702e6a8 100644 --- a/install.py +++ b/install.py @@ -14,12 +14,12 @@ class colors: WHITE = '\033[97m' images = [] -# images.append(centos.New()) -# images.append(db.New()) +images.append(centos.New()) +images.append(db.New()) images.append(site.New()) -# images.append(forum.New()) -# images.append(core.New()) -# images.append(gate.New()) +images.append(forum.New()) +images.append(core.New()) +images.append(gate.New()) debug = '-debug' in sys.argv start_time = datetime.now() diff --git a/modules/helper.py b/modules/helper.py index 779f078..0c838bc 100644 --- a/modules/helper.py +++ b/modules/helper.py @@ -53,7 +53,7 @@ def web_publish_command(host_name, conf_name, internal, descriptor, base_name='' command.append('\'/mnt/other-files/vrd/{}.vrd\''.format(descriptor)) return command -def create_ib_command(host_name, ib_name, conf_ver='', job_dn='N'): +def create_ib_command(host_name, ib_name, file_name, job_block): command = [] command.append('docker') command.append('exec') @@ -62,9 +62,9 @@ def create_ib_command(host_name, ib_name, conf_ver='', job_dn='N'): command.append('/opt/1C/v8.3/x86_64/1cv8') command.append('CREATEINFOBASE') command.append('\'Srvr="srv";Ref="{0}";DBMS=PostgreSQL;DBSrvr="db";DB="{0}";DBUID="postgres";LicDstr="Y";Locale="ru_RU";CrSQLDB="Y";SchJobDn="{1}";\''.format( - ib_name, job_dn)) + ib_name, job_block)) command.append('/UseTemplate') - command.append('/mnt/' + ib_name + '_' + conf_ver.replace('.', '_') + '.cf') + command.append('/mnt/{}'.format(file_name)) command.append('/Out "/mnt/create_ib_' + ib_name + '.out"') command.append('/DumpResult "/mnt/create_ib_' + ib_name + '.result"') return command diff --git a/other_files/cfe/api_1cfresh.cfe b/other_files/cfe/api_1cfresh.cfe index cde63e6f55d33db016c0efd3986fdc8409fe9d8f..bb8905932895639072998761f310594ee98dc335 100755 GIT binary patch delta 5294 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 G%KrfIo)XXi delta 5087 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 L_u=*u@zuWoP2r_8 diff --git a/other_files/params.json b/other_files/params.json index 0d75e23..cef42bd 100755 --- a/other_files/params.json +++ b/other_files/params.json @@ -1,6 +1,21 @@ { "ИмяХоста": "HOSTNAMEREPLACE", "ИнформационныеБазы": [ + { + "Сервер": "web/int/sm", + "ИмяВКластере": "sm", + "КодКонфигурации": "sm", + "ТипКонфигурации": "Управляющая", + "Администратор": "Администратор", + "ПользовательУправления": "RemoteAccess", + "ИмяВнешнейПубликации": "adm", + "ИмяВнутреннейПубликации": "sm", + "ИмяФайлаШаблонаВнешненийПубликации": "zoneless", + "ИмяФайлаШаблонаВнутреннейПубликации": "zoneless", + "СоздаватьВМенеджере": true, + "ИмяФайлаКонфигурации":"sm.cf", + "БлокироватьРаботуРегЗаданийПриСоздании": true + }, { "Сервер": "web/int/smtl", "ИмяВКластере": "smtl", @@ -9,10 +24,12 @@ "Администратор": "Admin", "ПользовательУправления": "RemoteAccess", "ИмяВнешнейПубликации": "smtl", + "ИмяВнутреннейПубликации": "smtl", "ИмяФайлаШаблонаВнешненийПубликации": "withzone", "ИмяФайлаШаблонаВнутреннейПубликации": "zoneless", "СоздаватьВМенеджере": true, - "ИмяФайлаКонфигурации":"smtl.cf" + "ИмяФайлаКонфигурации":"smtl.cf", + "БлокироватьРаботуРегЗаданийПриСоздании": false }, { "Сервер": "web/int/sa", @@ -22,10 +39,12 @@ "Администратор": "", "ПользовательУправления": "", "ИмяВнешнейПубликации": "sa", + "ИмяВнутреннейПубликации": "sa", "ИмяФайлаШаблонаВнешненийПубликации": "zoneless", "ИмяФайлаШаблонаВнутреннейПубликации": "zoneless", "СоздаватьВМенеджере": true, - "ИмяФайлаКонфигурации":"sa.cf" + "ИмяФайлаКонфигурации":"sa.cf", + "БлокироватьРаботуРегЗаданийПриСоздании": false }, { "Сервер": "", @@ -35,23 +54,12 @@ "Администратор": "Администратор", "ПользовательУправления": "", "ИмяВнешнейПубликации": "", + "ИмяВнутреннейПубликации": "am", "ИмяФайлаШаблонаВнешненийПубликации": "", "ИмяФайлаШаблонаВнутреннейПубликации": "zoneless", "СоздаватьВМенеджере": false, - "ИмяФайлаКонфигурации":"am.cf" - }, - { - "Сервер": "web/int/sm", - "ИмяВКластере": "sm", - "КодКонфигурации": "sm", - "ТипКонфигурации": "Управляющая", - "Администратор": "Администратор", - "ПользовательУправления": "RemoteAccess", - "ИмяВнешнейПубликации": "adm", - "ИмяФайлаШаблонаВнешненийПубликации": "zoneless", - "ИмяФайлаШаблонаВнутреннейПубликации": "zoneless", - "СоздаватьВМенеджере": true, - "ИмяФайлаКонфигурации":"sm.cf" + "ИмяФайлаКонфигурации":"am.cf", + "БлокироватьРаботуРегЗаданийПриСоздании": false } ] } \ No newline at end of file diff --git a/start.py b/start.py index 567337f..0eac6af 100644 --- a/start.py +++ b/start.py @@ -25,6 +25,16 @@ class colors: GREEN = '\033[92m' WHITE = '\033[97m' +class ib_prop: + a_name = 'ИмяВнешнейПубликации' + a_desc = 'ИмяФайлаШаблонаВнешненийПубликации' + int_name = 'ИмяВнутреннейПубликации' + int_desc = 'ИмяФайлаШаблонаВнутреннейПубликации' + conf_file = 'ИмяФайлаКонфигурации' + name = 'ИмяВКластере' + job = 'БлокироватьРаботуРегЗаданийПриСоздании' + adm = 'Администратор' + def print_description(function_to_decorate): @@ -49,7 +59,7 @@ def call(command, remote=True, debug=False, action='', measure_duration=False, s commands.append(docker_run_str) commands.append(command) - if action != '': + if action != '' and (debug or global_debug): print(action, end='\r') if debug or global_debug: print(' '.join(commands)) @@ -66,7 +76,7 @@ def call(command, remote=True, debug=False, action='', measure_duration=False, s stdout=stdout, stderr=stderr) end_time = datetime.now() - start_time - if action != '': + if action != '' and (debug or global_debug): print(action, 'is fihish.', 'Duration:{}'.format( end_time) if measure_duration else '') @@ -84,44 +94,71 @@ def get_configurations_data(): info_base_list.append(ib_data) -def prepare_new_ib(key, post_data='', job_dn=False): +def prepare_new_ib(ib_name, int_name, conf_file_name, job_block): - job_dn_str = 'Y' if job_dn else 'N' + job_dn_str = 'Y' if job_block else 'N' - call(' '.join(helper.create_ib_command(host_name, key, configurations[key], job_dn_str)), + call(' '.join(helper.create_ib_command(host_name, ib_name, conf_file_name, job_dn_str)), remote=False, - action='Creating ' + key, + action='Creating ' + ib_name, measure_duration=True) - call(' '.join(helper.install_control_ext_command(host_name, key)), + call(' '.join(helper.install_control_ext_command(host_name, ib_name)), remote=False, action='Installing control extension', measure_duration=True) - ext_name = helper.replace_sep(local_work_dir + 'mnt/' + key + '.cfe') + ext_name = helper.replace_sep(local_work_dir + 'mnt/' + ib_name + '.cfe') if os.path.isfile(ext_name): - call(' '.join(helper.install_ext_command(host_name, key)), + call(' '.join(helper.install_ext_command(host_name, ib_name)), remote=False, action='Installing extension', measure_duration=True) - if key == 'sm': - call(' '.join(helper.install_sm_ext_command(host_name, key)), - remote=False, - action='Installing gate control extension', - measure_duration=True) + if ib_name == 'sm': + post_data = '/mnt/other-files/params.json' + call(' '.join(helper.install_sm_ext_command(host_name, ib_name)), + remote=False, + action='Installing gate control extension', + measure_duration=True) + else: + post_data = '' - call(' '.join(helper.disable_safe_mode(host_name, key)), + call(' '.join(helper.disable_safe_mode(host_name, ib_name)), remote=False, action='Disabling safe mode for extensions', measure_duration=True) str_post = '-d @{}'.format(post_data) if post_data != '' else '' - call('docker exec web.{} curl {} -X POST http://localhost/int/{}/hs/api.1cfresh/init'.format(host_name, str_post, key), + call('docker exec web.{} curl {} -X POST http://localhost/int/{}/hs/api.1cfresh/init'.format(host_name, str_post, int_name), remote=False, action='Initialization', measure_duration=True) +@print_description +def prepare_bases(): + """Prepare all bases""" + + sm_ib = None + + for ib_data in info_base_list: + if ib_data[ib_prop.name] == 'sm': + sm_ib = ib_data + continue + prepare_new_ib( + ib_name=ib_data[ib_prop.name], + int_name=ib_data[ib_prop.int_name], + conf_file_name=ib_data[ib_prop.conf_file], + job_block=ib_data[ib_prop.job] + ) + + # prepare sm base + prepare_new_ib( + ib_name=sm_ib[ib_prop.name], + int_name=sm_ib[ib_prop.int_name], + conf_file_name=sm_ib[ib_prop.conf_file], + job_block=sm_ib[ib_prop.job] + ) @print_description def renew_nginx_files(): @@ -147,6 +184,8 @@ def renew_workdir(): call('rm -rf /out_files/workdir') call('mkdir -p {}mnt'.format(work_dir)) call('mkdir -p {}artifacts'.format(work_dir)) + call('mkdir -p {}artifacts/web/conf'.format(work_dir)) + call('sh -c "cp /out_files/conf/web/httpd.conf {}artifacts/web/conf/httpd.conf"'.format(work_dir)) call('sh -c "cp /out_files/distr/*.cf {}mnt/"'.format(work_dir)) @@ -172,23 +211,21 @@ def renew_other_files(): def publish_sevises(): """Publish services""" - # publish a services - call(' '.join(helper.web_publish_command( - host_name, 'adm', False, 'zoneless', 'sm')), remote=False) - call(' '.join(helper.web_publish_command( - host_name, 'smtl', False, 'withzone')), remote=False) - call(' '.join(helper.web_publish_command( - host_name, 'sa', False, 'zoneless')), remote=False) + for ib_data in info_base_list: + if ib_data[ib_prop.a_name] != '': + call(' '.join(helper.web_publish_command( + host_name=host_name, + conf_name=ib_data[ib_prop.a_name], + internal=False, + descriptor=ib_data[ib_prop.a_desc], + base_name=ib_data[ib_prop.name])), remote=False) - # publish int services - call(' '.join(helper.web_publish_command( - host_name, 'sm', True, 'zoneless')), remote=False) - call(' '.join(helper.web_publish_command( - host_name, 'smtl', True, 'zoneless')), remote=False) - call(' '.join(helper.web_publish_command( - host_name, 'sa', True, 'zoneless')), remote=False) - call(' '.join(helper.web_publish_command( - host_name, 'am', True, 'zoneless')), remote=False) + call(' '.join(helper.web_publish_command( + host_name=host_name, + conf_name=ib_data[ib_prop.int_name], + internal=True, + descriptor=ib_data[ib_prop.int_desc], + base_name=ib_data[ib_prop.name])), remote=False) # publish special services call(' '.join(helper.web_publish_command( @@ -199,9 +236,8 @@ def publish_sevises(): 'extreg', 'sm;Usr=ExtReg;Pwd=' + sup_password)), remote=False) # restart Apache - call('docker exec web.' + host_name + - ' chown -R usr1cv8:grp1cv8 /var/www', remote=False) - call('docker exec web.' + host_name + ' httpd -k graceful', remote=False) + call('docker exec web.{} chown -R usr1cv8:grp1cv8 /var/www'.format(host_name), remote=False) + call('docker exec web.{} httpd -k graceful'.format(host_name), remote=False) @print_description @@ -211,11 +247,11 @@ def set_full_host_name(is_new): global host_name if is_new: part_host_name = helper.get_host_name(sys.argv) - f = open(local_work_dir + 'hostname', 'x+') + f = open('.hostname', 'w+') f.write(part_host_name) f.close() else: - f = open(local_work_dir + 'hostname') + f = open('.hostname') part_host_name = f.read() + host_name f.close() @@ -245,6 +281,13 @@ def delete_control_extension(ib_name, user, desc): call(' '.join(helper.delete_control_extension(ib_name, host_name, user)), remote=False) +def delete_all_control_ext(): + for ib_data in info_base_list: + delete_control_extension( + ib_name=ib_data[ib_prop.name], + user= None if ib_data[ib_prop.adm] == '' else ib_data[ib_prop.adm], + desc=ib_data[ib_prop.name] + ) @print_description def configurate_site(): @@ -271,18 +314,22 @@ def init_gate(): call('docker exec -t web.{0} curl --user Администратор: https://{0}/a/adm/hs/docker_control/update_appgate'.format(host_name), remote=False) + + @print_description def wait_postgres(): """Waiting for postgres""" call('docker exec -t db.{} /wait_postgres.sh'.format(host_name), remote=False) + @print_description def wait_site(): """Waiting for site""" call('docker exec -t site.{} /wait_site.sh'.format(host_name), remote=False) + @print_description def enable_job_in_sm(): """Enable scheduled jobs sm""" @@ -290,6 +337,7 @@ def enable_job_in_sm(): call('docker exec -t ras.{} deployka scheduledjobs unlock -db sm -db-user \'Администратор\''.format(host_name), remote=False) + global_start_time = datetime.now() print('{}Fresh is starting{}'.format(colors.GREEN, colors.WHITE)) @@ -299,13 +347,11 @@ call(docker_compose_str + 'down', remote=False, silent=False) new_server = '-new' in sys.argv global_debug = '-debug' in sys.argv -if new_server: - renew_workdir() - get_configurations_data() - set_full_host_name(new_server) if new_server: + renew_workdir() + get_configurations_data() renew_nginx_files() renew_docker_compose() renew_other_files() @@ -316,10 +362,7 @@ wait_postgres() if new_server: publish_sevises() - prepare_new_ib('smtl') - prepare_new_ib('sa') - prepare_new_ib('am') - prepare_new_ib('sm', post_data='/mnt/other-files/params.json') + prepare_bases() enable_job_in_sm() create_db_site() create_db_forum() @@ -329,10 +372,7 @@ call(docker_compose_str + 'up -d nginx site', remote=False, silent=False) wait_site() if new_server: - delete_control_extension('smtl', 'Admin', 'smtl') - delete_control_extension('am', 'Администратор', 'am') - delete_control_extension('sm', 'Администратор', 'sm') - delete_control_extension('sa', None, 'sa') + delete_all_control_ext() configurate_site() init_gate()