Browse Source
* conditional logic for nginx www redirect
* conditional logic for nginx www redirect
+ use lxc_host & ssh proxying for resolve connection to inner lxc host in proxmox + bash helper for launch playbooks + nginx html default template * create databases moved into own custom variables + new using debops roles: yadm (dotfiles), sudo, root_account, system_users #861m7vaer Шаблон операционной системы на Debian 10master
dimti
2 years ago
27 changed files with 816 additions and 39 deletions
-
3apache-site.yml
-
1debops/apache.yml
-
0debops/files/etc/nginx/includes.d/octobercms.conf
-
0debops/files/etc/nginx/includes.d/staticfiles.conf
-
0debops/files/etc/nginx/includes.d/www.conf
-
19debops/keyring.yml
-
11debops/mariadb-custom-db.yml
-
73debops/nginx.yml
-
20debops/root_account.yml
-
30debops/sudo.yml
-
27debops/system_users.yml
-
76debops/templates/var/www/lxc_host/index.html.j2
-
427debops/templates/var/www/lxc_host/normalize.css
-
39debops/yadm.yml
-
3hosts
-
12nginx-only.yml
-
14nginx-site.yml
-
9ping.yml
-
8roles/locales/tasks/main.yml
-
4roles/release-changed/tasks/main.yml
-
48run-playbook.sh
-
2vars/.gitignore
-
7vars/databases-example.yml
-
1vars/nginx-example.yml
-
4vars/sudo-example.yml
-
9vars/system_users-example.yml
-
8yadm.yml
@ -1,9 +1,12 @@ |
|||||
--- |
--- |
||||
|
- import_playbook: debops/tzdata.yml |
||||
- import_playbook: debops/pki.yml |
- import_playbook: debops/pki.yml |
||||
- import_playbook: debops/mariadb_server.yml |
- import_playbook: debops/mariadb_server.yml |
||||
- import_playbook: debops/mariadb-custom-db.yml |
- import_playbook: debops/mariadb-custom-db.yml |
||||
- import_playbook: debops/php-wp.yml |
- import_playbook: debops/php-wp.yml |
||||
- import_playbook: debops/apache.yml |
- import_playbook: debops/apache.yml |
||||
|
- import_playbook: debops/users.yml |
||||
|
- import_playbook: debops/sudo.yml |
||||
|
|
||||
# Import all other group playbooks in this file... |
# Import all other group playbooks in this file... |
||||
|
|
||||
|
@ -0,0 +1,19 @@ |
|||||
|
--- |
||||
|
|
||||
|
- name: Manage APT and GPG keyrings |
||||
|
collections: [ 'debops.debops', 'debops.roles01', |
||||
|
'debops.roles02', 'debops.roles03' ] |
||||
|
hosts: [ 'debian10' ] |
||||
|
become: True |
||||
|
|
||||
|
environment: '{{ inventory__environment | d({}) |
||||
|
| combine(inventory__group_environment | d({})) |
||||
|
| combine(inventory__host_environment | d({})) }}' |
||||
|
|
||||
|
vars: |
||||
|
keyring__enabled: True |
||||
|
|
||||
|
roles: |
||||
|
|
||||
|
- role: keyring |
||||
|
tags: [ 'role::keyring', 'skip::keyring' ] |
@ -0,0 +1,20 @@ |
|||||
|
--- |
||||
|
|
||||
|
- name: Manage root system account |
||||
|
collections: [ 'debops.debops', 'debops.roles01', |
||||
|
'debops.roles02', 'debops.roles03' ] |
||||
|
hosts: [ 'debian10' ] |
||||
|
become: True |
||||
|
|
||||
|
environment: '{{ inventory__environment | d({}) |
||||
|
| combine(inventory__group_environment | d({})) |
||||
|
| combine(inventory__host_environment | d({})) }}' |
||||
|
|
||||
|
vars: |
||||
|
root_account__enabled: True |
||||
|
# root_account__dotfiles_enabled: True |
||||
|
# root_account__dotfiles_repo: 'https://vcs.wpstudio.ru/gitea/dotfiles.git' |
||||
|
|
||||
|
roles: |
||||
|
- role: root_account |
||||
|
tags: [ 'role::root_account', 'skip::root_account' ] |
@ -0,0 +1,30 @@ |
|||||
|
--- |
||||
|
|
||||
|
- name: Configure sudo service |
||||
|
collections: [ 'debops.debops', 'debops.roles01', |
||||
|
'debops.roles02', 'debops.roles03' ] |
||||
|
hosts: [ 'debian10' ] |
||||
|
become: True |
||||
|
|
||||
|
environment: '{{ inventory__environment | d({}) |
||||
|
| combine(inventory__group_environment | d({})) |
||||
|
| combine(inventory__host_environment | d({})) }}' |
||||
|
|
||||
|
vars_files: |
||||
|
- ./../vars/sudo.yml |
||||
|
|
||||
|
roles: |
||||
|
# - role: python |
||||
|
# tags: [ 'role::python', 'skip::python', 'role::ldap' ] |
||||
|
# python__dependent_packages3: |
||||
|
# - '{{ ldap__python__dependent_packages3 }}' |
||||
|
# python__dependent_packages2: |
||||
|
# - '{{ ldap__python__dependent_packages2 }}' |
||||
|
# |
||||
|
# - role: ldap |
||||
|
# tags: [ 'role::ldap', 'skip::ldap' ] |
||||
|
# ldap__dependent_tasks: |
||||
|
# - '{{ sudo__ldap__dependent_tasks }}' |
||||
|
|
||||
|
- role: sudo |
||||
|
tags: [ 'role::sudo', 'skip::sudo' ] |
@ -0,0 +1,27 @@ |
|||||
|
--- |
||||
|
|
||||
|
- name: Manage local users and groups |
||||
|
collections: [ 'debops.debops', 'debops.roles01', |
||||
|
'debops.roles02', 'debops.roles03' ] |
||||
|
hosts: [ 'debian10' ] |
||||
|
become: True |
||||
|
|
||||
|
environment: '{{ inventory__environment | d({}) |
||||
|
| combine(inventory__group_environment | d({})) |
||||
|
| combine(inventory__host_environment | d({})) }}' |
||||
|
|
||||
|
vars: |
||||
|
system_users__self: False |
||||
|
system_users__dotfiles_enabled: True |
||||
|
system_users__dotfiles_repo: 'https://vcs.wpstudio.ru/gitea/dotfiles.git' |
||||
|
|
||||
|
vars_files: |
||||
|
- ./../vars/system_users.yml |
||||
|
|
||||
|
roles: |
||||
|
|
||||
|
- role: libuser |
||||
|
tags: [ 'role::libuser', 'skip::libuser' ] |
||||
|
|
||||
|
- role: system_users |
||||
|
tags: [ 'role::system_users', 'skip::system_users' ] |
@ -0,0 +1,76 @@ |
|||||
|
{# Copyright (C) 2014-2017 Maciej Delmanowski <drybjed@drybjed.net> |
||||
|
# Copyright (C) 2015-2017 Robin Schneider <ypid@riseup.net> |
||||
|
# Copyright (C) 2014-2017 DebOps <https://debops.org/> |
||||
|
# SPDX-License-Identifier: GPL-3.0-only |
||||
|
#} |
||||
|
<!DOCTYPE html> |
||||
|
<html lang="en"> |
||||
|
{% set nginx_tpl_domain = item.welcome_domain | d(item.name if (item.name is string) else item.name[0] | d(ansible_domain)) %} |
||||
|
{% if nginx_tpl_domain %} |
||||
|
{% set nginx_tpl_welcome_title = '<a href="' + item.welcome_url_scheme | d("https") + '://' + nginx_tpl_domain + '/">' + nginx_tpl_domain + '</a>' %} |
||||
|
{% else %} |
||||
|
{% set nginx_tpl_welcome_title = '<a href="http://companyname.website/">CompanyName.website</a>' %} |
||||
|
{% endif %} |
||||
|
|
||||
|
<head> |
||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
||||
|
<meta name="referrer" content="no-referrer"> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||
|
<title>{{ nginx_tpl_domain | d("CompanyName.website") }}</title> |
||||
|
{% if item.welcome_css | d(True) | bool %} |
||||
|
<link rel="stylesheet" type="text/css" media="screen" href="normalize.css"> |
||||
|
<style type="text/css" media="screen"> |
||||
|
html { |
||||
|
font-size: 17px; |
||||
|
font-family: "Droid Sans Condensed", sans-serif; |
||||
|
} |
||||
|
|
||||
|
@media (max-width: 900px) { |
||||
|
html { font-size: 15px; } |
||||
|
} |
||||
|
|
||||
|
@media (max-width: 400px) { |
||||
|
html { font-size: 13px; } |
||||
|
} |
||||
|
|
||||
|
#content { |
||||
|
margin: 0 auto; |
||||
|
width: 600px; |
||||
|
padding: 2rem; |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
@media (max-width: 900px) { |
||||
|
#content { |
||||
|
width: 70%; |
||||
|
padding: 1.5rem; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
h1 { |
||||
|
padding-bottom: 0.05em; |
||||
|
border-bottom: 2px solid #0092DF; |
||||
|
} |
||||
|
|
||||
|
a { |
||||
|
text-decoration: none; |
||||
|
color: #0092DF; |
||||
|
} |
||||
|
</style> |
||||
|
{% endif %} |
||||
|
</head> |
||||
|
|
||||
|
<body> |
||||
|
<div id="content"> |
||||
|
|
||||
|
<h2>{{ nginx_tpl_welcome_title }}</h2> |
||||
|
|
||||
|
{% if nginx_tpl_domain %} |
||||
|
<p id="http-status"><strong>{{ item.welcome_status_choices | d([ '200 OK', "418 I'm a teapot" ]) | random }}</strong></p> |
||||
|
{% elif not nginx_tpl_domain %} |
||||
|
<p>If you're reading this, the web server was installed correctly.</p> |
||||
|
{% endif %} |
||||
|
|
||||
|
</div> |
||||
|
</body> |
||||
|
</html> |
@ -0,0 +1,427 @@ |
|||||
|
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ |
||||
|
/* Copyright (C) 2015 Nicolas Gallagher <nicolasgallagher@gmail.com> */ |
||||
|
/* Copyright (C) 2015 Jonathan Neal <jonathantneal@hotmail.com> */ |
||||
|
/* SPDX-License-Identifier: MIT */ |
||||
|
|
||||
|
/** |
||||
|
* 1. Set default font family to sans-serif. |
||||
|
* 2. Prevent iOS and IE text size adjust after device orientation change, |
||||
|
* without disabling user zoom. |
||||
|
*/ |
||||
|
|
||||
|
html { |
||||
|
font-family: sans-serif; /* 1 */ |
||||
|
-ms-text-size-adjust: 100%; /* 2 */ |
||||
|
-webkit-text-size-adjust: 100%; /* 2 */ |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Remove default margin. |
||||
|
*/ |
||||
|
|
||||
|
body { |
||||
|
margin: 0; |
||||
|
} |
||||
|
|
||||
|
/* HTML5 display definitions |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/** |
||||
|
* Correct `block` display not defined for any HTML5 element in IE 8/9. |
||||
|
* Correct `block` display not defined for `details` or `summary` in IE 10/11 |
||||
|
* and Firefox. |
||||
|
* Correct `block` display not defined for `main` in IE 11. |
||||
|
*/ |
||||
|
|
||||
|
article, |
||||
|
aside, |
||||
|
details, |
||||
|
figcaption, |
||||
|
figure, |
||||
|
footer, |
||||
|
header, |
||||
|
hgroup, |
||||
|
main, |
||||
|
menu, |
||||
|
nav, |
||||
|
section, |
||||
|
summary { |
||||
|
display: block; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 1. Correct `inline-block` display not defined in IE 8/9. |
||||
|
* 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. |
||||
|
*/ |
||||
|
|
||||
|
audio, |
||||
|
canvas, |
||||
|
progress, |
||||
|
video { |
||||
|
display: inline-block; /* 1 */ |
||||
|
vertical-align: baseline; /* 2 */ |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Prevent modern browsers from displaying `audio` without controls. |
||||
|
* Remove excess height in iOS 5 devices. |
||||
|
*/ |
||||
|
|
||||
|
audio:not([controls]) { |
||||
|
display: none; |
||||
|
height: 0; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Address `[hidden]` styling not present in IE 8/9/10. |
||||
|
* Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22. |
||||
|
*/ |
||||
|
|
||||
|
[hidden], |
||||
|
template { |
||||
|
display: none; |
||||
|
} |
||||
|
|
||||
|
/* Links |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/** |
||||
|
* Remove the gray background color from active links in IE 10. |
||||
|
*/ |
||||
|
|
||||
|
a { |
||||
|
background-color: transparent; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Improve readability of focused elements when they are also in an |
||||
|
* active/hover state. |
||||
|
*/ |
||||
|
|
||||
|
a:active, |
||||
|
a:hover { |
||||
|
outline: 0; |
||||
|
} |
||||
|
|
||||
|
/* Text-level semantics |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/** |
||||
|
* Address styling not present in IE 8/9/10/11, Safari, and Chrome. |
||||
|
*/ |
||||
|
|
||||
|
abbr[title] { |
||||
|
border-bottom: 1px dotted; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Address style set to `bolder` in Firefox 4+, Safari, and Chrome. |
||||
|
*/ |
||||
|
|
||||
|
b, |
||||
|
strong { |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Address styling not present in Safari and Chrome. |
||||
|
*/ |
||||
|
|
||||
|
dfn { |
||||
|
font-style: italic; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Address variable `h1` font-size and margin within `section` and `article` |
||||
|
* contexts in Firefox 4+, Safari, and Chrome. |
||||
|
*/ |
||||
|
|
||||
|
h1 { |
||||
|
font-size: 2em; |
||||
|
margin: 0.67em 0; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Address styling not present in IE 8/9. |
||||
|
*/ |
||||
|
|
||||
|
mark { |
||||
|
background: #ff0; |
||||
|
color: #000; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Address inconsistent and variable font size in all browsers. |
||||
|
*/ |
||||
|
|
||||
|
small { |
||||
|
font-size: 80%; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Prevent `sub` and `sup` affecting `line-height` in all browsers. |
||||
|
*/ |
||||
|
|
||||
|
sub, |
||||
|
sup { |
||||
|
font-size: 75%; |
||||
|
line-height: 0; |
||||
|
position: relative; |
||||
|
vertical-align: baseline; |
||||
|
} |
||||
|
|
||||
|
sup { |
||||
|
top: -0.5em; |
||||
|
} |
||||
|
|
||||
|
sub { |
||||
|
bottom: -0.25em; |
||||
|
} |
||||
|
|
||||
|
/* Embedded content |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/** |
||||
|
* Remove border when inside `a` element in IE 8/9/10. |
||||
|
*/ |
||||
|
|
||||
|
img { |
||||
|
border: 0; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Correct overflow not hidden in IE 9/10/11. |
||||
|
*/ |
||||
|
|
||||
|
svg:not(:root) { |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
|
||||
|
/* Grouping content |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/** |
||||
|
* Address margin not present in IE 8/9 and Safari. |
||||
|
*/ |
||||
|
|
||||
|
figure { |
||||
|
margin: 1em 40px; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Address differences between Firefox and other browsers. |
||||
|
*/ |
||||
|
|
||||
|
hr { |
||||
|
box-sizing: content-box; |
||||
|
height: 0; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Contain overflow in all browsers. |
||||
|
*/ |
||||
|
|
||||
|
pre { |
||||
|
overflow: auto; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Address odd `em`-unit font size rendering in all browsers. |
||||
|
*/ |
||||
|
|
||||
|
code, |
||||
|
kbd, |
||||
|
pre, |
||||
|
samp { |
||||
|
font-family: monospace, monospace; |
||||
|
font-size: 1em; |
||||
|
} |
||||
|
|
||||
|
/* Forms |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/** |
||||
|
* Known limitation: by default, Chrome and Safari on OS X allow very limited |
||||
|
* styling of `select`, unless a `border` property is set. |
||||
|
*/ |
||||
|
|
||||
|
/** |
||||
|
* 1. Correct color not being inherited. |
||||
|
* Known issue: affects color of disabled elements. |
||||
|
* 2. Correct font properties not being inherited. |
||||
|
* 3. Address margins set differently in Firefox 4+, Safari, and Chrome. |
||||
|
*/ |
||||
|
|
||||
|
button, |
||||
|
input, |
||||
|
optgroup, |
||||
|
select, |
||||
|
textarea { |
||||
|
color: inherit; /* 1 */ |
||||
|
font: inherit; /* 2 */ |
||||
|
margin: 0; /* 3 */ |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Address `overflow` set to `hidden` in IE 8/9/10/11. |
||||
|
*/ |
||||
|
|
||||
|
button { |
||||
|
overflow: visible; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Address inconsistent `text-transform` inheritance for `button` and `select`. |
||||
|
* All other form control elements do not inherit `text-transform` values. |
||||
|
* Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. |
||||
|
* Correct `select` style inheritance in Firefox. |
||||
|
*/ |
||||
|
|
||||
|
button, |
||||
|
select { |
||||
|
text-transform: none; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` |
||||
|
* and `video` controls. |
||||
|
* 2. Correct inability to style clickable `input` types in iOS. |
||||
|
* 3. Improve usability and consistency of cursor style between image-type |
||||
|
* `input` and others. |
||||
|
*/ |
||||
|
|
||||
|
button, |
||||
|
html input[type="button"], /* 1 */ |
||||
|
input[type="reset"], |
||||
|
input[type="submit"] { |
||||
|
-webkit-appearance: button; /* 2 */ |
||||
|
cursor: pointer; /* 3 */ |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Re-set default cursor for disabled elements. |
||||
|
*/ |
||||
|
|
||||
|
button[disabled], |
||||
|
html input[disabled] { |
||||
|
cursor: default; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Remove inner padding and border in Firefox 4+. |
||||
|
*/ |
||||
|
|
||||
|
button::-moz-focus-inner, |
||||
|
input::-moz-focus-inner { |
||||
|
border: 0; |
||||
|
padding: 0; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Address Firefox 4+ setting `line-height` on `input` using `!important` in |
||||
|
* the UA stylesheet. |
||||
|
*/ |
||||
|
|
||||
|
input { |
||||
|
line-height: normal; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* It's recommended that you don't attempt to style these elements. |
||||
|
* Firefox's implementation doesn't respect box-sizing, padding, or width. |
||||
|
* |
||||
|
* 1. Address box sizing set to `content-box` in IE 8/9/10. |
||||
|
* 2. Remove excess padding in IE 8/9/10. |
||||
|
*/ |
||||
|
|
||||
|
input[type="checkbox"], |
||||
|
input[type="radio"] { |
||||
|
box-sizing: border-box; /* 1 */ |
||||
|
padding: 0; /* 2 */ |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Fix the cursor style for Chrome's increment/decrement buttons. For certain |
||||
|
* `font-size` values of the `input`, it causes the cursor style of the |
||||
|
* decrement button to change from `default` to `text`. |
||||
|
*/ |
||||
|
|
||||
|
input[type="number"]::-webkit-inner-spin-button, |
||||
|
input[type="number"]::-webkit-outer-spin-button { |
||||
|
height: auto; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 1. Address `appearance` set to `searchfield` in Safari and Chrome. |
||||
|
* 2. Address `box-sizing` set to `border-box` in Safari and Chrome. |
||||
|
*/ |
||||
|
|
||||
|
input[type="search"] { |
||||
|
-webkit-appearance: textfield; /* 1 */ |
||||
|
box-sizing: content-box; /* 2 */ |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Remove inner padding and search cancel button in Safari and Chrome on OS X. |
||||
|
* Safari (but not Chrome) clips the cancel button when the search input has |
||||
|
* padding (and `textfield` appearance). |
||||
|
*/ |
||||
|
|
||||
|
input[type="search"]::-webkit-search-cancel-button, |
||||
|
input[type="search"]::-webkit-search-decoration { |
||||
|
-webkit-appearance: none; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Define consistent border, margin, and padding. |
||||
|
*/ |
||||
|
|
||||
|
fieldset { |
||||
|
border: 1px solid #c0c0c0; |
||||
|
margin: 0 2px; |
||||
|
padding: 0.35em 0.625em 0.75em; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 1. Correct `color` not being inherited in IE 8/9/10/11. |
||||
|
* 2. Remove padding so people aren't caught out if they zero out fieldsets. |
||||
|
*/ |
||||
|
|
||||
|
legend { |
||||
|
border: 0; /* 1 */ |
||||
|
padding: 0; /* 2 */ |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Remove default vertical scrollbar in IE 8/9/10/11. |
||||
|
*/ |
||||
|
|
||||
|
textarea { |
||||
|
overflow: auto; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Don't inherit the `font-weight` (applied by a rule above). |
||||
|
* NOTE: the default cannot safely be changed in Chrome and Safari on OS X. |
||||
|
*/ |
||||
|
|
||||
|
optgroup { |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
|
||||
|
/* Tables |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/** |
||||
|
* Remove most spacing between table cells. |
||||
|
*/ |
||||
|
|
||||
|
table { |
||||
|
border-collapse: collapse; |
||||
|
border-spacing: 0; |
||||
|
} |
||||
|
|
||||
|
td, |
||||
|
th { |
||||
|
padding: 0; |
||||
|
} |
@ -0,0 +1,39 @@ |
|||||
|
--- |
||||
|
|
||||
|
- name: Configure yadm, Yet Another Dotfiles Manager |
||||
|
collections: [ 'debops.debops', 'debops.roles01', |
||||
|
'debops.roles02', 'debops.roles03' ] |
||||
|
hosts: [ 'debian10' ] |
||||
|
become: True |
||||
|
|
||||
|
environment: '{{ inventory__environment | d({}) |
||||
|
| combine(inventory__group_environment | d({})) |
||||
|
| combine(inventory__host_environment | d({})) }}' |
||||
|
|
||||
|
vars: |
||||
|
yadm__enabled: True |
||||
|
yadm__dotfiles_enabled: True |
||||
|
|
||||
|
yadm__upstream_enabled: True |
||||
|
yadm__upstream_version: '2.5.0' |
||||
|
|
||||
|
# That be used in yadm.fact.j2 - python script for resolving ansible.local.yadm.dotfile git repo |
||||
|
yadm__dotfiles_host: vcs.wpstudio.ru |
||||
|
yadm__dotfiles_owner: gitea |
||||
|
yadm__default_dotfiles: |
||||
|
- name: 'gitea' |
||||
|
git: 'https://vcs.wpstudio.ru/gitea/dotfiles.git' |
||||
|
|
||||
|
roles: |
||||
|
- role: keyring |
||||
|
tags: [ 'role::keyring', 'skip::keyring', 'role::yadm' ] |
||||
|
keyring__dependent_gpg_keys: |
||||
|
- '{{ yadm__keyring__dependent_gpg_keys }}' |
||||
|
|
||||
|
- role: apt_preferences |
||||
|
tags: [ 'role::apt_preferences', 'skip::apt_preferences' ] |
||||
|
apt_preferences__dependent_list: |
||||
|
- '{{ yadm__apt_preferences__dependent_list }}' |
||||
|
|
||||
|
- role: yadm |
||||
|
tags: [ 'role::yadm', 'skip::yadm' ] |
@ -0,0 +1,12 @@ |
|||||
|
--- |
||||
|
- hosts: debian10 |
||||
|
roles: |
||||
|
- release-changed |
||||
|
- locales |
||||
|
#- import_playbook: debops/tzdata.yml |
||||
|
#- import_playbook: debops/pki.yml |
||||
|
- import_playbook: debops/yadm.yml |
||||
|
- import_playbook: debops/root_account.yml |
||||
|
#- import_playbook: debops/sudo.yml |
||||
|
#- import_playbook: debops/system_users.yml |
||||
|
#- import_playbook: debops/nginx.yml |
@ -1,11 +1,13 @@ |
|||||
--- |
--- |
||||
- import_playbook: debops/tzdata.yml |
- import_playbook: debops/tzdata.yml |
||||
#- import_playbook: debops/pki.yml |
|
||||
#- import_playbook: debops/mariadb.yml |
|
||||
#- import_playbook: debops/php-prod.yml |
|
||||
#- import_playbook: debops/nginx.yml |
|
||||
#- import_playbook: debops/nodejs.yml |
|
||||
#- import_playbook: debops/redis.yml |
|
||||
|
- import_playbook: debops/pki.yml |
||||
|
- import_playbook: debops/mariadb.yml |
||||
|
- import_playbook: debops/php-prod.yml |
||||
|
- import_playbook: debops/nginx.yml |
||||
|
- import_playbook: debops/nodejs.yml |
||||
|
- import_playbook: debops/redis.yml |
||||
|
- import_playbook: debops/users.yml |
||||
|
- import_playbook: debops/sudo.yml |
||||
|
|
||||
# Import all other group playbooks in this file... |
# Import all other group playbooks in this file... |
||||
|
|
||||
|
@ -0,0 +1,9 @@ |
|||||
|
--- |
||||
|
- hosts: debian10 |
||||
|
tasks: |
||||
|
- name: whoami test |
||||
|
shell: whoami |
||||
|
|
||||
|
# Associate further roles to servers in specific group in this file... |
||||
|
|
||||
|
... |
@ -0,0 +1,8 @@ |
|||||
|
--- |
||||
|
|
||||
|
- name: Setup EN & RU UTF-8 locales |
||||
|
shell: | |
||||
|
apt install -y locales && \ |
||||
|
sed -i 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \ |
||||
|
sed -i 's/# ru_RU.UTF-8 UTF-8/ru_RU.UTF-8 UTF-8/' /etc/locale.gen && \ |
||||
|
locale-gen |
@ -0,0 +1,4 @@ |
|||||
|
--- |
||||
|
|
||||
|
- name: Allow release info changed |
||||
|
shell: apt --allow-releaseinfo-change update |
@ -0,0 +1,48 @@ |
|||||
|
#!/bin/bash |
||||
|
SERVER=$1 |
||||
|
LXC_HOST=$2 |
||||
|
PLAYBOOK=$3 |
||||
|
|
||||
|
usage() { |
||||
|
echo "Usage: run-playbook.sh server lxc_host playbook" |
||||
|
echo "server - main proxmox server IP address and lxc_host that the name of lxc container" |
||||
|
echo "lxc_host - name of lxc container" |
||||
|
echo "playbook - playbook file" |
||||
|
} |
||||
|
|
||||
|
if [[ -z "$SERVER" ]]; then |
||||
|
echo "You must defined SERVER as first argument" |
||||
|
usage |
||||
|
exit 1 |
||||
|
fi |
||||
|
|
||||
|
if [[ -z "$LXC_HOST" ]]; then |
||||
|
echo "You must defined LXC_HOST as second argument" |
||||
|
usage |
||||
|
exit 1 |
||||
|
fi |
||||
|
|
||||
|
if [[ -z "$PLAYBOOK" ]]; then |
||||
|
echo "You must defined PLAYBOOK as third argument" |
||||
|
usage |
||||
|
exit 1 |
||||
|
fi |
||||
|
|
||||
|
if [[ ! -f "$PLAYBOOK" ]]; then |
||||
|
echo "Playbook file is not exists: $PLAYBOOK" |
||||
|
usage |
||||
|
exit 1 |
||||
|
fi |
||||
|
|
||||
|
COMMAND=$(cat <<EOF |
||||
|
ansible-playbook -e "lxc_host=$LXC_HOST" --ssh-common-args="-o ProxyCommand='ssh -W %h:%p root@$SERVER'" $PLAYBOOK |
||||
|
EOF |
||||
|
) |
||||
|
|
||||
|
printf 'Launch ansible playbook:\n%s\n' "$COMMAND" |
||||
|
read -p "Are you sure? " -n 1 -r |
||||
|
echo # (optional) move to a new line |
||||
|
if [[ $REPLY =~ ^[Yy]$ ]] |
||||
|
then |
||||
|
/bin/bash -c "$COMMAND" |
||||
|
fi |
@ -0,0 +1,2 @@ |
|||||
|
* |
||||
|
!*-example.yml |
@ -0,0 +1,7 @@ |
|||||
|
mariadb__databases: |
||||
|
- name: '{{ lxc_host }}' |
||||
|
|
||||
|
mariadb__users: |
||||
|
- name: '{{ lxc_host }}' |
||||
|
host: '%' |
||||
|
database: '{{ lxc_host }}%' |
@ -0,0 +1 @@ |
|||||
|
nginx_www_redirect: False |
@ -0,0 +1,4 @@ |
|||||
|
sudo__sudoers: |
||||
|
- name: '{{ lxc_host }}-nopasswd' |
||||
|
raw: | |
||||
|
{{ lxc_host }} ALL=(ALL) NOPASSWD: ALL |
@ -0,0 +1,9 @@ |
|||||
|
system_users__groups: |
||||
|
- name: '{{ lxc_host }}' |
||||
|
user: False |
||||
|
|
||||
|
system_users__accounts: |
||||
|
- name: '{{ lxc_host }}' |
||||
|
group: '{{ lxc_host }}' |
||||
|
admin: True |
||||
|
shell: '/bin/bash' |
@ -0,0 +1,8 @@ |
|||||
|
--- |
||||
|
- import_playbook: debops/yadm.yml |
||||
|
- import_playbook: debops/users.yml |
||||
|
- import_playbook: debops/sudo.yml |
||||
|
|
||||
|
# Import all other group playbooks in this file... |
||||
|
|
||||
|
... |
Write
Preview
Loading…
Cancel
Save
Reference in new issue