Initial
This commit is contained in:
79
ansible.cfg
Normal file
79
ansible.cfg
Normal file
@@ -0,0 +1,79 @@
|
||||
# ansible-project/ansible.cfg
|
||||
[defaults]
|
||||
# Основная директория с инвентарем
|
||||
inventory = ./inventory/hosts
|
||||
|
||||
# Пути для поиска ролей (можно несколько через двоеточие)
|
||||
roles_path = ./roles
|
||||
|
||||
# Файлы плейбуков по умолчанию
|
||||
hostfile = ./inventory/hosts
|
||||
library = ./library
|
||||
module_utils = ./module_utils
|
||||
filter_plugins = ./filter_plugins
|
||||
|
||||
# Путь для поиска плейбуков
|
||||
playbook_dir = ./playbooks
|
||||
|
||||
# Настройки для групповых и хостовых переменных
|
||||
retry_files_enabled = False
|
||||
hash_behaviour = merge
|
||||
deprecation_warnings = True
|
||||
system_warnings = True
|
||||
interpreter_python = auto_silent
|
||||
|
||||
# Параметры соединения
|
||||
transport = smart
|
||||
gather_facts = true
|
||||
gather_subset = all
|
||||
fact_caching = memory
|
||||
fact_caching_timeout = 3600
|
||||
|
||||
# Параметры по умолчанию для подключения
|
||||
ansible_connection = ssh
|
||||
ansible_user = ansible
|
||||
ansible_port = 22
|
||||
ansible_become = true
|
||||
ansible_become_method = sudo
|
||||
ansible_become_user = root
|
||||
ansible_python_interpreter = /usr/bin/python3
|
||||
|
||||
# Контрольные суммы и проверки
|
||||
host_key_checking = False
|
||||
|
||||
[inventory]
|
||||
# Включить динамический инвентарь
|
||||
enable_plugins = host_list, script, auto, yaml, ini, toml
|
||||
|
||||
[privilege_escalation]
|
||||
become = true
|
||||
become_method = sudo
|
||||
become_user = root
|
||||
become_ask_pass = false
|
||||
|
||||
[ssh_connection]
|
||||
# Настройки SSH
|
||||
#ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o ControlPath=~/.ssh/ansible-%r@%h:%p
|
||||
#pipelining = true
|
||||
#scp_if_ssh = smart
|
||||
#control_path = %(directory)s/ansible-ssh-%%h-%%p-%%r
|
||||
#timeout = 30
|
||||
#retries = 3
|
||||
|
||||
[persistent_connection]
|
||||
connect_timeout = 30
|
||||
command_timeout = 30
|
||||
|
||||
[galaxy]
|
||||
# Настройки Ansible Galaxy
|
||||
server = https://galaxy.ansible.com
|
||||
|
||||
|
||||
# Дополнительные настройки для разработки
|
||||
[defaults:development]
|
||||
# Для разработки - более строгие проверки
|
||||
force_color = 1
|
||||
callback_whitelist = profile_tasks, timer, mail
|
||||
retry_files_save_path = ./retry-files
|
||||
local_tmp = ~/.ansible/tmp
|
||||
remote_tmp = ~/.ansible/tmp
|
||||
0
inventory/group_vars/all.yml
Normal file
0
inventory/group_vars/all.yml
Normal file
0
inventory/group_vars/vpnservers.yml
Normal file
0
inventory/group_vars/vpnservers.yml
Normal file
0
inventory/host_vars/host1.yml
Normal file
0
inventory/host_vars/host1.yml
Normal file
17
inventory/hosts
Normal file
17
inventory/hosts
Normal file
@@ -0,0 +1,17 @@
|
||||
# ansible/inventory/hosts
|
||||
|
||||
# Все хосты
|
||||
[all:vars]
|
||||
ansible_python_interpreter=/usr/bin/python3
|
||||
ansible_user=root
|
||||
ansible_port=22
|
||||
ansible_ssh_private_key_file=~/.ssh/id_rsa
|
||||
|
||||
# VPN серверы
|
||||
[vpnservers]
|
||||
access.stanito.me ansible_user=root
|
||||
|
||||
# Группы по ОС
|
||||
[ubuntu_servers:children]
|
||||
vpnservers
|
||||
|
||||
0
playbook_main.yml
Normal file
0
playbook_main.yml
Normal file
6
playbook_vpn.yml
Normal file
6
playbook_vpn.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
[vpn]
|
||||
access.stanito.me
|
||||
|
||||
[all:vars]
|
||||
ansible_user=admin
|
||||
ansible_ssh_private_key_file=~/.ssh/id_rsa
|
||||
7
playbooks/base.yml
Normal file
7
playbooks/base.yml
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
- name: Bootstrap Ubuntu servers
|
||||
hosts: all
|
||||
become: true
|
||||
|
||||
roles:
|
||||
- base
|
||||
0
readme_deploy.md
Normal file
0
readme_deploy.md
Normal file
53
readme_structure.md
Normal file
53
readme_structure.md
Normal file
@@ -0,0 +1,53 @@
|
||||
# Structure
|
||||
```
|
||||
production # inventory file for production servers
|
||||
staging # inventory file for staging environment
|
||||
|
||||
group_vars/
|
||||
group1.yml # here we assign variables to particular groups
|
||||
group2.yml
|
||||
host_vars/
|
||||
hostname1.yml # here we assign variables to particular systems
|
||||
hostname2.yml
|
||||
|
||||
library/ # if any custom modules, put them here (optional)
|
||||
module_utils/ # if any custom module_utils to support modules, put them here (optional)
|
||||
filter_plugins/ # if any custom filter plugins, put them here (optional)
|
||||
|
||||
site.yml # main playbook
|
||||
webservers.yml # playbook for webserver tier
|
||||
dbservers.yml # playbook for dbserver tier
|
||||
tasks/ # task files included from playbooks
|
||||
webservers-extra.yml # <-- avoids confusing playbook with task files
|
||||
```
|
||||
|
||||
|
||||
# Roles
|
||||
```
|
||||
roles/
|
||||
common/ # this hierarchy represents a "role"
|
||||
tasks/ #
|
||||
main.yml # <-- tasks file can include smaller files if warranted
|
||||
handlers/ #
|
||||
main.yml # <-- handlers file
|
||||
templates/ # <-- files for use with the template resource
|
||||
ntp.conf.j2 # <------- templates end in .j2
|
||||
files/ #
|
||||
bar.txt # <-- files for use with the copy resource
|
||||
foo.sh # <-- script files for use with the script resource
|
||||
vars/ #
|
||||
main.yml # <-- variables associated with this role
|
||||
defaults/ #
|
||||
main.yml # <-- default lower priority variables for this role
|
||||
meta/ #
|
||||
main.yml # <-- role dependencies and optional Galaxy info
|
||||
library/ # roles can also include custom modules
|
||||
module_utils/ # roles can also include custom module_utils
|
||||
lookup_plugins/ # or other types of plugins, like lookup in this case
|
||||
|
||||
webtier/ # same kind of structure as "common" was above, done for the webtier role
|
||||
monitoring/ # ""
|
||||
fooapp/ # ""
|
||||
```
|
||||
|
||||
# Deployment
|
||||
15
requirements.yml
Normal file
15
requirements.yml
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
roles:
|
||||
# Install a role from Ansible Galaxy.
|
||||
# note that ranges are not supported for roles
|
||||
- name: geerlingguy.certbot
|
||||
version: "5.4.1"
|
||||
|
||||
collections:
|
||||
# Install a collection from Ansible Galaxy.
|
||||
- name: community.general
|
||||
version: ">=7.0.0"
|
||||
source: https://galaxy.ansible.com
|
||||
- name: ansible.posix
|
||||
|
||||
|
||||
1
roles/base/files/id_rsa.pub
Normal file
1
roles/base/files/id_rsa.pub
Normal file
@@ -0,0 +1 @@
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQChdhIFLJ1nwmqkFJzgHKvPJXPdGRZ3tmN0IqAJyP61DSsQf4rJcw4fL9Z4UKGfIw4Mn4f8FFcAUCmD/2OZxSKjjQBYiq/+q3AS12PVUbDR3fE5IyZx3uDmAB3m9yJuIFGl3mqldefnnH98UA3+kwZgFoJXJwHgp6mTV+S5N0aJdX1gCwoVMz3imkUAkGQrK4eDp9T4YH94yVh8or3si+mQJe+5j5xjF7oFGWWVYIr7iNS6zrtgRQdFklAt8cFIx2Mxql6PuTNJo83zS1NUxijEEGC/aZMLhafsOWm8M63EvkXsGOYS2JN5ycKJaTTDiD22tyXP4a1Oe6SGzB7of2NJ9RUXYnq7IYNlMpLJ4D7tHyYJUEckRQy9yugYWSUFxPgLc6n1PxDUEk1hTVwm5xsha9kYYXtuAY4RI3uXkvYIMsuO92kwqnOwt6Yw285DrXQQYSLt2NGBYvGfVczrSM8TYwsCZ0wHOaNeZKieeOmNDeHcOX8smSsiYlF08NOJ6pk= stanito@MacM5
|
||||
8
roles/base/tasks/main.yml
Normal file
8
roles/base/tasks/main.yml
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
- import_tasks: packages.yml
|
||||
|
||||
- import_tasks: users.yml
|
||||
|
||||
- import_tasks: sudo.yml
|
||||
|
||||
- import_tasks: ssh.yml
|
||||
10
roles/base/tasks/packages.yml
Normal file
10
roles/base/tasks/packages.yml
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
- name: Install base packages
|
||||
ansible.builtin.apt:
|
||||
name:
|
||||
- vim
|
||||
- curl
|
||||
- git
|
||||
- htop
|
||||
state: present
|
||||
update_cache: true
|
||||
5
roles/base/tasks/ssh.yml
Normal file
5
roles/base/tasks/ssh.yml
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
- name: Add authorized key
|
||||
ansible.posix.authorized_key:
|
||||
user: stanito
|
||||
key: "{{ lookup('file', 'id_rsa.pub') }}"
|
||||
0
roles/base/tasks/sudo.yml
Normal file
0
roles/base/tasks/sudo.yml
Normal file
7
roles/base/tasks/users.yml
Normal file
7
roles/base/tasks/users.yml
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
- name: Create user
|
||||
ansible.builtin.user:
|
||||
name: stanito
|
||||
groups: sudo
|
||||
shell: /bin/bash
|
||||
create_home: true
|
||||
Reference in New Issue
Block a user