added first 2 days
This commit is contained in:
parent
f0b0b51ec1
commit
be7399a645
17 changed files with 546 additions and 0 deletions
34
ansible.cfg
Normal file
34
ansible.cfg
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[defaults]
|
||||
nocows = 1
|
||||
timeout = 30
|
||||
forks = 50
|
||||
interpreter_python = auto_silent
|
||||
|
||||
inventory = hosts.ini
|
||||
# roles_path = ./roles
|
||||
library = ./library
|
||||
|
||||
# bin_ansible_callbacks = true
|
||||
# stdout_callback = unixy
|
||||
# callbacks_enabled = timer, profile_tasks, profile_roles
|
||||
|
||||
# force_handlers = true
|
||||
|
||||
gathering = smart
|
||||
fact_caching = jsonfile
|
||||
fact_caching_connection = /tmp/ansible/facts.cache
|
||||
fact_caching_timeout = 3600
|
||||
|
||||
|
||||
[ssh_connection]
|
||||
pipelining = true
|
||||
ssh_args = -o PreferredAuthentications=publickey -o ControlMaster=auto -o ControlPersist=60s
|
||||
|
||||
|
||||
[privilege_escalation]
|
||||
become = true
|
||||
|
||||
|
||||
[diff]
|
||||
always = true
|
||||
context = 5
|
||||
13
hosts.ini
Normal file
13
hosts.ini
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
[webapp:children]
|
||||
database
|
||||
webserver
|
||||
|
||||
[ansible]
|
||||
ansible01 ansible_host=167.235.134.124
|
||||
|
||||
[webserver]
|
||||
web01 ansible_host=116.203.48.2
|
||||
web02 ansible_host=195.201.37.254
|
||||
|
||||
[database]
|
||||
db01 ansible_host=195.201.38.233
|
||||
6
library/kernel.sh
Normal file
6
library/kernel.sh
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
cat "$1" >> /tmp/ansible-parameter
|
||||
|
||||
release="$(uname --kernel-release)"
|
||||
echo '{ "changed": false, "msg": "'"$release"'" }'
|
||||
17
playbook.yml
Normal file
17
playbook.yml
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
---
|
||||
|
||||
- hosts: all
|
||||
roles:
|
||||
- debian
|
||||
- chrony
|
||||
|
||||
- hosts: webserver
|
||||
tags: webserver
|
||||
roles:
|
||||
- nginx
|
||||
|
||||
- hosts: database
|
||||
tags: database
|
||||
roles:
|
||||
- mariadb
|
||||
|
||||
17
roles/chrony/files/chrony.conf
Normal file
17
roles/chrony/files/chrony.conf
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
|
||||
# File managed by Ansible
|
||||
# change
|
||||
|
||||
pool pool.ntp.org iburst maxsources 3
|
||||
|
||||
keyfile /etc/chrony/chrony.keys
|
||||
driftfile /var/lib/chrony/chrony.drift
|
||||
ntsdumpdir /var/lib/chrony
|
||||
logdir /var/log/chrony
|
||||
|
||||
maxupdateskew 100.0
|
||||
rtcsync
|
||||
makestep 1 3
|
||||
leapsectz right/UTC
|
||||
|
||||
lock_all
|
||||
6
roles/chrony/handlers/main.yml
Normal file
6
roles/chrony/handlers/main.yml
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
|
||||
- name: Restart
|
||||
systemd:
|
||||
name: chrony
|
||||
state: restarted
|
||||
29
roles/chrony/tasks/main.yml
Normal file
29
roles/chrony/tasks/main.yml
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
---
|
||||
- tags: chrony
|
||||
block:
|
||||
|
||||
- name: Package
|
||||
apt:
|
||||
state: present
|
||||
name:
|
||||
- chrony
|
||||
update_cache: true
|
||||
tags: installchrony
|
||||
|
||||
- name: Service
|
||||
systemd:
|
||||
state: started
|
||||
name: chrony
|
||||
enabled: true
|
||||
tags: startchrony
|
||||
|
||||
- name: Configfile
|
||||
copy:
|
||||
src: chrony.conf
|
||||
dest: /etc/chrony/chrony.conf
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
notify:
|
||||
- Restart
|
||||
# - waitfor chrony
|
||||
107
roles/debian/files/.zshrc
Normal file
107
roles/debian/files/.zshrc
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
|
||||
# If you come from bash you might have to change your $PATH.
|
||||
# export PATH=$HOME/bin:$HOME/.local/bin:/usr/local/bin:$PATH
|
||||
|
||||
# Path to your Oh My Zsh installation.
|
||||
export ZSH="$HOME/.oh-my-zsh"
|
||||
|
||||
# Set name of the theme to load --- if set to "random", it will
|
||||
# load a random theme each time Oh My Zsh is loaded, in which case,
|
||||
# to know which specific one was loaded, run: echo $RANDOM_THEME
|
||||
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
|
||||
ZSH_THEME="robbyrussell"
|
||||
|
||||
# Set list of themes to pick from when loading at random
|
||||
# Setting this variable when ZSH_THEME=random will cause zsh to load
|
||||
# a theme from this variable instead of looking in $ZSH/themes/
|
||||
# If set to an empty array, this variable will have no effect.
|
||||
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )
|
||||
|
||||
# Uncomment the following line to use case-sensitive completion.
|
||||
# CASE_SENSITIVE="true"
|
||||
|
||||
# Uncomment the following line to use hyphen-insensitive completion.
|
||||
# Case-sensitive completion must be off. _ and - will be interchangeable.
|
||||
# HYPHEN_INSENSITIVE="true"
|
||||
|
||||
# Uncomment one of the following lines to change the auto-update behavior
|
||||
# zstyle ':omz:update' mode disabled # disable automatic updates
|
||||
# zstyle ':omz:update' mode auto # update automatically without asking
|
||||
# zstyle ':omz:update' mode reminder # just remind me to update when it's time
|
||||
|
||||
# Uncomment the following line to change how often to auto-update (in days).
|
||||
# zstyle ':omz:update' frequency 13
|
||||
|
||||
# Uncomment the following line if pasting URLs and other text is messed up.
|
||||
# DISABLE_MAGIC_FUNCTIONS="true"
|
||||
|
||||
# Uncomment the following line to disable colors in ls.
|
||||
# DISABLE_LS_COLORS="true"
|
||||
|
||||
# Uncomment the following line to disable auto-setting terminal title.
|
||||
# DISABLE_AUTO_TITLE="true"
|
||||
|
||||
# Uncomment the following line to enable command auto-correction.
|
||||
# ENABLE_CORRECTION="true"
|
||||
|
||||
# Uncomment the following line to display red dots whilst waiting for completion.
|
||||
# You can also set it to another string to have that shown instead of the default red dots.
|
||||
# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f"
|
||||
# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765)
|
||||
# COMPLETION_WAITING_DOTS="true"
|
||||
|
||||
# Uncomment the following line if you want to disable marking untracked files
|
||||
# under VCS as dirty. This makes repository status check for large repositories
|
||||
# much, much faster.
|
||||
# DISABLE_UNTRACKED_FILES_DIRTY="true"
|
||||
|
||||
# Uncomment the following line if you want to change the command execution time
|
||||
# stamp shown in the history command output.
|
||||
# You can set one of the optional three formats:
|
||||
# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
|
||||
# or set a custom format using the strftime function format specifications,
|
||||
# see 'man strftime' for details.
|
||||
# HIST_STAMPS="mm/dd/yyyy"
|
||||
|
||||
# Would you like to use another custom folder than $ZSH/custom?
|
||||
# ZSH_CUSTOM=/path/to/new-custom-folder
|
||||
|
||||
# Which plugins would you like to load?
|
||||
# Standard plugins can be found in $ZSH/plugins/
|
||||
# Custom plugins may be added to $ZSH_CUSTOM/plugins/
|
||||
# Example format: plugins=(rails git textmate ruby lighthouse)
|
||||
# Add wisely, as too many plugins slow down shell startup.
|
||||
plugins=(git)
|
||||
|
||||
|
||||
# User configuration
|
||||
|
||||
# export MANPATH="/usr/local/man:$MANPATH"
|
||||
|
||||
# You may need to manually set your language environment
|
||||
# export LANG=en_US.UTF-8
|
||||
|
||||
# Preferred editor for local and remote sessions
|
||||
# if [[ -n $SSH_CONNECTION ]]; then
|
||||
# export EDITOR='vim'
|
||||
# else
|
||||
# export EDITOR='nvim'
|
||||
# fi
|
||||
|
||||
# Compilation flags
|
||||
# export ARCHFLAGS="-arch $(uname -m)"
|
||||
|
||||
# Set personal aliases, overriding those provided by Oh My Zsh libs,
|
||||
# plugins, and themes. Aliases can be placed here, though Oh My Zsh
|
||||
# users are encouraged to define aliases within a top-level file in
|
||||
# the $ZSH_CUSTOM folder, with .zsh extension. Examples:
|
||||
# - $ZSH_CUSTOM/aliases.zsh
|
||||
# - $ZSH_CUSTOM/macos.zsh
|
||||
# For a full list of active aliases, run `alias`.
|
||||
#
|
||||
# Example aliases
|
||||
# alias zshconfig="mate ~/.zshrc"
|
||||
# alias ohmyzsh="mate ~/.oh-my-zsh
|
||||
export PATH="$PATH:/root/.local/bin"
|
||||
alias vi='vim'
|
||||
alias ll='ls -l'
|
||||
8
roles/debian/files/resolv.conf
Normal file
8
roles/debian/files/resolv.conf
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
# /etc/resolv.conf
|
||||
|
||||
nameserver 8.8.8.8
|
||||
nameserver 4.4.4.4
|
||||
nameserver 1.1.1.1
|
||||
nameserver 9.9.9.9
|
||||
|
||||
nameserver 2001:4860:4860::8888
|
||||
30
roles/debian/tasks/main.yml
Normal file
30
roles/debian/tasks/main.yml
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
---
|
||||
|
||||
|
||||
- tags: debian
|
||||
block:
|
||||
- name: Install zsh
|
||||
apt:
|
||||
name: zsh
|
||||
state: present
|
||||
update_cache: true
|
||||
|
||||
- import_tasks: users.yml
|
||||
|
||||
- name: Install tops
|
||||
apt:
|
||||
name:
|
||||
- htop
|
||||
- iotop
|
||||
- btop
|
||||
state: present
|
||||
|
||||
- name: Install vim
|
||||
apt:
|
||||
name: vim
|
||||
state: present
|
||||
|
||||
- name: resolv.conf
|
||||
copy:
|
||||
src: resolv.conf
|
||||
dest: /etc/resolv.conf
|
||||
55
roles/debian/tasks/users.yml
Normal file
55
roles/debian/tasks/users.yml
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
---
|
||||
|
||||
- tags: users
|
||||
block:
|
||||
|
||||
- name: Groups
|
||||
group:
|
||||
name: "{{ item.name }}"
|
||||
state: present
|
||||
gid: "{{ item.gid }}"
|
||||
loop_control:
|
||||
label: "{{ item.name }}"
|
||||
loop:
|
||||
- name: root
|
||||
gid: 0
|
||||
- name: admin
|
||||
gid: 1040
|
||||
- name: developer
|
||||
gid: 1050
|
||||
|
||||
- name: Users
|
||||
user:
|
||||
name: "{{ item.name }}"
|
||||
uid: "{{ item.uid }}"
|
||||
group: "{{ item.name }}"
|
||||
groups: "{{ item.groups }}"
|
||||
shell: "{{ item.shell }}"
|
||||
password: "{{ item.password }}"
|
||||
loop_control:
|
||||
label: "{{ item.name }}"
|
||||
loop:
|
||||
- name: root
|
||||
uid: 0
|
||||
groups: sudo
|
||||
shell: /bin/bash
|
||||
password: $6$R0En0ee9OeDp3ikb$Rl3aXOCw0Me9Jm8/0hTjgII2xm1L2K5/v1oAd0MoP13/Q7zT0YRNoF2TGlQ23jF7K90z8iVs4km8JvK.2JhkU0
|
||||
- name: admin
|
||||
uid: 1040
|
||||
groups: sudo
|
||||
shell: /bin/zsh
|
||||
password: $6$R0En0ee9OeDp3ikb$Rl3aXOCw0Me9Jm8/0hTjgII2xm1L2K5/v1oAd0MoP13/Q7zT0YRNoF2TGlQ23jF7K90z8iVs4km8JvK.2JhkU0
|
||||
- name: developer
|
||||
uid: 1050
|
||||
groups:
|
||||
shell: /bin/zsh
|
||||
password: $6$R0En0ee9OeDp3ikb$Rl3aXOCw0Me9Jm8/0hTjgII2xm1L2K5/v1oAd0MoP13/Q7zT0YRNoF2TGlQ23jF7K90z8iVs4km8JvK.2JhkU0
|
||||
|
||||
- name: zsh config
|
||||
copy:
|
||||
src: .zshrc
|
||||
dest: "{{ item }}/.zshrc"
|
||||
loop:
|
||||
- '/home/admin'
|
||||
- '/home/developer'
|
||||
- '/root'
|
||||
42
roles/mariadb/tasks/main.yml
Normal file
42
roles/mariadb/tasks/main.yml
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
---
|
||||
|
||||
- tags: mariadb
|
||||
block:
|
||||
|
||||
- name: Package
|
||||
apt:
|
||||
state: present
|
||||
name:
|
||||
- mariadb-server
|
||||
- python3-pymysql
|
||||
update_cache: true
|
||||
|
||||
- name: Service
|
||||
systemd:
|
||||
state: started
|
||||
name: mariadb
|
||||
enabled: true
|
||||
|
||||
- name: Create new databases with names 'webapp' and 'webapp_backup'
|
||||
community.mysql.mysql_db:
|
||||
login_unix_socket: /var/run/mysqld/mysqld.sock
|
||||
name: "{{ item }}"
|
||||
loop:
|
||||
- webapp
|
||||
- webapp_backup
|
||||
|
||||
- name: DB User
|
||||
mysql_user:
|
||||
name: "{{ item.name }}"
|
||||
password: "{{ item.password }}"
|
||||
priv: "{{ item.priv }}"
|
||||
login_unix_socket: /var/run/mysqld/mysqld.sock
|
||||
loop:
|
||||
- name: webapp
|
||||
password: w3b4pp
|
||||
priv: '*.*:ALL'
|
||||
- name: webapp_backup
|
||||
password: w3b4pp_b4ckup
|
||||
priv: '*.*:ALL'
|
||||
loop_control:
|
||||
label: "{{ item.name }}"
|
||||
28
roles/nginx/files/default
Normal file
28
roles/nginx/files/default
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
# Default server configuration
|
||||
#
|
||||
server {
|
||||
listen 80 default_server;
|
||||
listen [::]:80 default_server;
|
||||
|
||||
root /var/www/html;
|
||||
|
||||
# Add index.php to the list if you are using PHP
|
||||
index index.html index.htm index.nginx-debian.html;
|
||||
|
||||
server_name _;
|
||||
|
||||
location / {
|
||||
# First attempt to serve request as file, then
|
||||
# as directory, then fall back to displaying a 404.
|
||||
try_files $uri $uri/ =404;
|
||||
# proxy_pass http://localhost:8080;
|
||||
# proxy_http_version 1.1;
|
||||
# proxy_set_header Upgrade $http_upgrade;
|
||||
# proxy_set_header Connection 'upgrade';
|
||||
# proxy_set_header Host $host;
|
||||
# proxy_cache_bypass $http_upgrade;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
66
roles/nginx/files/index.htm
Normal file
66
roles/nginx/files/index.htm
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Ansible-Schulung: Automatisierung leicht gemacht</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
line-height: 1.6;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-color: #f4f4f4;
|
||||
}
|
||||
header {
|
||||
background-color: #35424a;
|
||||
color: #ffffff;
|
||||
text-align: center;
|
||||
padding: 1rem;
|
||||
}
|
||||
main {
|
||||
padding: 2rem;
|
||||
max-width: 800px;
|
||||
margin: auto;
|
||||
}
|
||||
h1, h2 {
|
||||
color: #35424a;
|
||||
}
|
||||
.cta-button {
|
||||
display: inline-block;
|
||||
background-color: #e8491d;
|
||||
color: #ffffff;
|
||||
padding: 10px 20px;
|
||||
text-decoration: none;
|
||||
border-radius: 5px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1>Willkommen zur Ansible-Schulung</h1>
|
||||
<p>Automatisierung leicht gemacht</p>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<h2>Über unsere Schulung</h2>
|
||||
<p>In dieser umfassenden Ansible-Schulung lernen Sie, wie Sie IT-Infrastrukturen effizient automatisieren und verwalten können. Vom Grundlagen bis hin zu fortgeschrittenen Techniken - wir machen Sie zum Ansible-Experten!</p>
|
||||
|
||||
<h2>Was Sie lernen werden:</h2>
|
||||
<ul>
|
||||
<li>Grundlagen von Ansible</li>
|
||||
<li>Playbooks erstellen und ausführen</li>
|
||||
<li>Rollen und Best Practices</li>
|
||||
<li>Ansible für Netzwerk-Automatisierung</li>
|
||||
<li>Integration mit CI/CD-Pipelines</li>
|
||||
</ul>
|
||||
|
||||
<h2>Für wen ist diese Schulung?</h2>
|
||||
<p>Unsere Schulung ist ideal für System-Administratoren, DevOps-Ingenieure und IT-Profis, die ihre Automatisierungsfähigkeiten verbessern möchten.</p>
|
||||
|
||||
<a href="#" class="cta-button">Jetzt anmelden</a>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
30
roles/nginx/files/nginx.conf
Normal file
30
roles/nginx/files/nginx.conf
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
user www-data;
|
||||
worker_processes auto;
|
||||
pid /run/nginx.pid;
|
||||
error_log /var/log/nginx/error.log;
|
||||
include /etc/nginx/modules-enabled/*.conf;
|
||||
|
||||
events {
|
||||
worker_connections 768;
|
||||
# multi_accept on;
|
||||
}
|
||||
|
||||
http {
|
||||
|
||||
|
||||
sendfile on;
|
||||
tcp_nopush on;
|
||||
types_hash_max_size 2048;
|
||||
include /etc/nginx/mime.types;
|
||||
default_type application/octet-stream;
|
||||
|
||||
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
|
||||
ssl_prefer_server_ciphers on;
|
||||
access_log /var/log/nginx/access.log;
|
||||
|
||||
|
||||
gzip on;
|
||||
|
||||
include /etc/nginx/conf.d/*.conf;
|
||||
include /etc/nginx/sites-enabled/*;
|
||||
}
|
||||
15
roles/nginx/handlers/main.yml
Normal file
15
roles/nginx/handlers/main.yml
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
|
||||
- name: Restart
|
||||
systemd:
|
||||
name: nginx
|
||||
state: restarted
|
||||
|
||||
- name: Waitfor
|
||||
wait_for:
|
||||
host: localhost
|
||||
port: 80
|
||||
state: started
|
||||
sleep: 1
|
||||
delay: 2
|
||||
timeout: 300
|
||||
43
roles/nginx/tasks/main.yml
Normal file
43
roles/nginx/tasks/main.yml
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
---
|
||||
- tags: nginx
|
||||
block:
|
||||
- name: Package
|
||||
apt:
|
||||
state: present
|
||||
name:
|
||||
- nginx-light
|
||||
- curl
|
||||
- wget
|
||||
update_cache: true
|
||||
|
||||
- name: Service
|
||||
systemd:
|
||||
state: started
|
||||
name: nginx
|
||||
enabled: true
|
||||
|
||||
- name: Config
|
||||
copy:
|
||||
src: "{{ item.src }}"
|
||||
dest: "{{ item.dest }}"
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
notify:
|
||||
- Restart
|
||||
- Waitfor
|
||||
loop_control:
|
||||
label: "{{ item.src }}"
|
||||
loop:
|
||||
- src: nginx.conf
|
||||
dest: /etc/nginx/nginx.conf
|
||||
- src: default
|
||||
dest: /etc/nginx/sites-enabled/default
|
||||
|
||||
- name: Defaultpage
|
||||
copy:
|
||||
src: index.htm
|
||||
dest: /var/www/html/index.nginx-debian.html
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
Loading…
Reference in a new issue