More content and playbooks
* more readme.md content * imported basic roles * commented said basic roles * trimmed down playbooks to be understandable * update requirements.txt deps
This commit is contained in:
parent
23b521f4fb
commit
2a067a2fe4
22 changed files with 491 additions and 0 deletions
2
Makefile
Normal file
2
Makefile
Normal file
|
@ -0,0 +1,2 @@
|
|||
install:
|
||||
ansible-galaxy install -r requirements.yml
|
89
README.md
Normal file
89
README.md
Normal file
File diff suppressed because one or more lines are too long
10
ansible.cfg
Normal file
10
ansible.cfg
Normal file
|
@ -0,0 +1,10 @@
|
|||
[defaults]
|
||||
remote_user = root
|
||||
remote_port = 22
|
||||
host_key_checking = False
|
||||
#hash_behaviour = merge
|
||||
pipelining=True
|
||||
fact_path = facts.d
|
||||
gathering = implicit
|
||||
gather_subset = all
|
||||
inject_facts_as_vars = True
|
9
base.yml
Normal file
9
base.yml
Normal file
|
@ -0,0 +1,9 @@
|
|||
---
|
||||
- hosts: all
|
||||
roles:
|
||||
- role: root_user
|
||||
tags: root_user
|
||||
- role: base
|
||||
tags: base
|
||||
- role: vim
|
||||
tags: vim
|
4
docker.yml
Normal file
4
docker.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
- hosts: all
|
||||
roles:
|
||||
- geerlingguy.docker
|
14
group_vars/all.yml
Normal file
14
group_vars/all.yml
Normal file
|
@ -0,0 +1,14 @@
|
|||
---
|
||||
# Standard variables
|
||||
os: "{{ ansible_system|lower }}"
|
||||
arch: "{% if ansible_architecture == 'aarch64' %}arm64{% elif ansible_architecture == 'amd64' or ansible_architecture == 'x86_64' %}amd64{% elif ansible_architecture == 'armhf' %}armhf{% else %}{{ ansible_architecture }}{% endif %}"
|
||||
|
||||
# Docker stuff
|
||||
docker_apt_ignore_key_error: false
|
||||
docker_install_compose: true
|
||||
docker_apt_arch: "{{ arch }}"
|
||||
|
||||
root_user:
|
||||
default_root_keys:
|
||||
- name: thomas-ed25519
|
||||
key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPrw78OSJACq5MFXHrhAr2bPpnTNxwLE85mzij8gKmCs thomas@thonkpad
|
10
inventory
Normal file
10
inventory
Normal file
|
@ -0,0 +1,10 @@
|
|||
[all]
|
||||
# Replace this with your hostname and IP address
|
||||
your-db-host.local ansible_ssh_host="1.2.3.4"
|
||||
your-docker-host.local ansible_ssh_host="5.6.7.8"
|
||||
|
||||
[db]
|
||||
your-db-host.local ansible_ssh_host="1.2.3.4"
|
||||
|
||||
[docker]
|
||||
your-docker-host.local ansible_ssh_host="5.6.7.8"
|
6
reboot.yml
Normal file
6
reboot.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
- hosts: all
|
||||
tasks:
|
||||
- name: Reboot
|
||||
reboot:
|
||||
reboot_timeout: 3600
|
10
requirements.txt
Normal file
10
requirements.txt
Normal file
|
@ -0,0 +1,10 @@
|
|||
ansible==7.1.0
|
||||
ansible-core==2.14.1
|
||||
cffi==1.15.1
|
||||
cryptography==39.0.0
|
||||
Jinja2==3.1.2
|
||||
MarkupSafe==2.1.1
|
||||
packaging==23.0
|
||||
pycparser==2.21
|
||||
PyYAML==6.0
|
||||
resolvelib==0.8.1
|
7
requirements.yml
Normal file
7
requirements.yml
Normal file
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
roles:
|
||||
- src: geerlingguy.docker
|
||||
version: 4.2.3
|
||||
collections:
|
||||
- name: community.docker
|
||||
version: 2.6.0
|
121
roles/base/tasks/main.yml
Normal file
121
roles/base/tasks/main.yml
Normal file
|
@ -0,0 +1,121 @@
|
|||
---
|
||||
# welcome to tbe base.yml role. As you can see, this is a collection of
|
||||
# tasks, which in turn is basically a structure like this one
|
||||
# name: "user friendly name of your task"
|
||||
# a_module_name:
|
||||
# a_module_parameter: value
|
||||
# another_module_parameter: value2
|
||||
|
||||
# this installs packages, here we use the `apt` module
|
||||
# because we are on a debian-based distribution. If we were
|
||||
# using something like Fedora for instance, we would have used
|
||||
# the `dnf` module. Then just pass as arguments the names of
|
||||
# the packages you want to install just as you would pass them
|
||||
# to `apt install`.
|
||||
- name: "Install wanted packages"
|
||||
apt:
|
||||
name:
|
||||
- apt-transport-https
|
||||
- arptables
|
||||
- bash-completion
|
||||
- bridge-utils
|
||||
- ca-certificates
|
||||
- cmake
|
||||
- coreutils
|
||||
- curl
|
||||
- dnsutils
|
||||
- ebtables
|
||||
- file
|
||||
- gawk
|
||||
- git
|
||||
- glusterfs-client
|
||||
- glusterfs-server
|
||||
- gnupg
|
||||
- htop
|
||||
- iftop
|
||||
- ifstat
|
||||
- iputils-ping
|
||||
- iptables
|
||||
- iproute2
|
||||
- jq
|
||||
- libsqlite3-dev
|
||||
- libffi-dev
|
||||
- libpython3-dev
|
||||
- libssl-dev
|
||||
- locales-all
|
||||
- lsb-release
|
||||
- lsof
|
||||
- lvm2
|
||||
- mdadm
|
||||
- minicom
|
||||
- mtr-tiny
|
||||
- netcat
|
||||
- net-tools
|
||||
- ntp
|
||||
- open-iscsi
|
||||
- openssl
|
||||
- p7zip-full
|
||||
- pwgen
|
||||
- sqlite3
|
||||
- strace
|
||||
- sudo
|
||||
- sysstat
|
||||
- telnet
|
||||
- tcpdump
|
||||
- tmux
|
||||
- uuid-runtime
|
||||
- unzip
|
||||
- vim-nox
|
||||
- wget
|
||||
- wipe
|
||||
- zip
|
||||
# state: latest will update the package everytime the
|
||||
# role is ran against a host
|
||||
state: latest
|
||||
# Update the cache before trying to update ?
|
||||
# You generally want this because it's not updating itself
|
||||
update_cache: true
|
||||
# force update it if it's been updated for longer than an hour
|
||||
cache_valid_time: 3600
|
||||
register: apt_res
|
||||
# if running apt fails, retry to do it up to 5 times then give up and cry in the corner
|
||||
retries: 5
|
||||
until: apt_res is success
|
||||
# Same as above, except you *remove* packages instead of installing them
|
||||
- name: "Remove unanted packages"
|
||||
apt:
|
||||
name:
|
||||
- ntpdate
|
||||
# note the value of `state` here
|
||||
state: absent
|
||||
# This renders a template, the `inventory_hostname` is a variable
|
||||
# that is golbally available. It will map to the hostname you
|
||||
# assigned your host in the `inventory` file
|
||||
- name: "Hard set hostname"
|
||||
template:
|
||||
src: hostname.j2
|
||||
dest: /etc/hostname
|
||||
owner: root
|
||||
group: root
|
||||
# you need to put it in string mode, and you need to
|
||||
# have a leading `0`, otherwise ansible is going to interpret it weird
|
||||
# more info https://docs.ansible.com/ansible/latest/collections/ansible/builtin/file_module.html#parameter-mode
|
||||
mode: "0644"
|
||||
- name: "Setup motd"
|
||||
template:
|
||||
src: motd.j2
|
||||
dest: /etc/motd
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0644"
|
||||
- name: "Setup hosts"
|
||||
template:
|
||||
src: hosts.j2
|
||||
dest: /etc/hosts
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0644"
|
||||
# Note that you can also just `copy` files using the copy module:
|
||||
# https://docs.ansible.com/ansible/latest/collections/ansible/builtin/copy_module.html#examples
|
||||
# And finally you can create files and directories with the `file` module
|
||||
# https://docs.ansible.com/ansible/latest/collections/ansible/builtin/file_module.html#examples
|
1
roles/base/templates/hostname.j2
Normal file
1
roles/base/templates/hostname.j2
Normal file
|
@ -0,0 +1 @@
|
|||
{{ inventory_hostname }}
|
3
roles/base/templates/hosts.j2
Normal file
3
roles/base/templates/hosts.j2
Normal file
|
@ -0,0 +1,3 @@
|
|||
127.0.0.1 localhost
|
||||
{{ ansible_default_ipv4["address"] }} {{ inventory_hostname }}
|
||||
|
9
roles/base/templates/motd.j2
Normal file
9
roles/base/templates/motd.j2
Normal file
|
@ -0,0 +1,9 @@
|
|||
This is {{ ansible_fqdn }}
|
||||
|
||||
System : {{ ansible_distribution }} {{ ansible_distribution_version }} ({{ ansible_distribution_release }})
|
||||
|
||||
Kernel : {{ ansible_kernel }} {{ ansible_kernel_version }}
|
||||
CPU(s) : {{ ansible_processor_cores }}
|
||||
RAM : {{ ansible_memory_mb.real.total }}Mb
|
||||
Architecture : {{ ansible_architecture }}
|
||||
Address : {{ ansible_default_ipv4.interface }} - {{ ansible_default_ipv4.address }}
|
60
roles/ntp/files/ntp.conf
Normal file
60
roles/ntp/files/ntp.conf
Normal file
|
@ -0,0 +1,60 @@
|
|||
# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help
|
||||
|
||||
driftfile /var/lib/ntp/ntp.drift
|
||||
|
||||
# Leap seconds definition provided by tzdata
|
||||
leapfile /usr/share/zoneinfo/leap-seconds.list
|
||||
|
||||
# Enable this if you want statistics to be logged.
|
||||
#statsdir /var/log/ntpstats/
|
||||
|
||||
statistics loopstats peerstats clockstats
|
||||
filegen loopstats file loopstats type day enable
|
||||
filegen peerstats file peerstats type day enable
|
||||
filegen clockstats file clockstats type day enable
|
||||
|
||||
# Specify one or more NTP servers.
|
||||
|
||||
# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
|
||||
# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
|
||||
# more information.
|
||||
pool 0.ubuntu.pool.ntp.org iburst
|
||||
pool 1.ubuntu.pool.ntp.org iburst
|
||||
pool 2.ubuntu.pool.ntp.org iburst
|
||||
pool 3.ubuntu.pool.ntp.org iburst
|
||||
|
||||
# Use Ubuntu's ntp server as a fallback.
|
||||
pool ntp.ubuntu.com
|
||||
|
||||
# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for
|
||||
# details. The web page <http://support.ntp.org/bin/view/Support/AccessRestrictions>
|
||||
# might also be helpful.
|
||||
#
|
||||
# Note that "restrict" applies to both servers and clients, so a configuration
|
||||
# that might be intended to block requests from certain clients could also end
|
||||
# up blocking replies from your own upstream servers.
|
||||
|
||||
# By default, exchange time with everybody, but don't allow configuration.
|
||||
restrict -4 default kod notrap nomodify nopeer noquery limited
|
||||
restrict -6 default kod notrap nomodify nopeer noquery limited
|
||||
|
||||
# Local users may interrogate the ntp server more closely.
|
||||
restrict 127.0.0.1
|
||||
restrict ::1
|
||||
|
||||
# Needed for adding pool entries
|
||||
restrict source notrap nomodify noquery
|
||||
|
||||
# Clients from this (example!) subnet have unlimited access, but only if
|
||||
# cryptographically authenticated.
|
||||
#restrict 192.168.123.0 mask 255.255.255.0 notrust
|
||||
|
||||
|
||||
# If you want to provide time to your local subnet, change the next line.
|
||||
# (Again, the address is an example only.)
|
||||
#broadcast 192.168.123.255
|
||||
|
||||
# If you want to listen to time broadcasts on your local subnet, de-comment the
|
||||
# next lines. Please do this only if you trust everybody on the network!
|
||||
#disable auth
|
||||
#broadcastclient
|
8
roles/ntp/handlers/main.yml
Normal file
8
roles/ntp/handlers/main.yml
Normal file
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
# handlers are special tasks that you can invoke when something changes.
|
||||
# in this example you want to invoke this restart handler when the
|
||||
# configuration of the service changes for example.
|
||||
- name: "Restart ntp"
|
||||
service:
|
||||
name: ntp
|
||||
state: restarted
|
24
roles/ntp/tasks/main.yml
Normal file
24
roles/ntp/tasks/main.yml
Normal file
|
@ -0,0 +1,24 @@
|
|||
---
|
||||
- name: "Install ntp"
|
||||
apt:
|
||||
name: ntp
|
||||
state: present
|
||||
- name: "Configure ntp"
|
||||
copy:
|
||||
src: ntp.conf
|
||||
dest: /etc/ntp.conf
|
||||
owner: root
|
||||
group: root
|
||||
mode: "644"
|
||||
# notify is going to invoke the "Restart ntp" handler defined in
|
||||
# the roles/ntp/handlers/main.yml file. Basically it says that
|
||||
# you want to restart the ntp service every time the configuratio
|
||||
# changes
|
||||
notify: "Restart ntp"
|
||||
# Here you say that you want the NTP service to be restarted as well
|
||||
# as enabled on boot.
|
||||
- name: "ntp service"
|
||||
service:
|
||||
name: ntp
|
||||
state: restarted
|
||||
enabled: true
|
28
roles/root_user/tasks/main.yml
Normal file
28
roles/root_user/tasks/main.yml
Normal file
|
@ -0,0 +1,28 @@
|
|||
---
|
||||
# Ensures the .ssh directory exists
|
||||
- name: "creates the .ssh root directory"
|
||||
file:
|
||||
path: "/root/.ssh"
|
||||
state: directory
|
||||
owner: root
|
||||
group: root
|
||||
mode: 0700
|
||||
- name: "Install root SSH keys"
|
||||
template:
|
||||
src: authorized_keys.j2
|
||||
dest: /root/.ssh/authorized_keys
|
||||
owner: root
|
||||
group: root
|
||||
mode: 0600
|
||||
# Delete users you don't need
|
||||
# respectively you can also *add* users
|
||||
# https://docs.ansible.com/ansible/latest/collections/ansible/builtin/user_module.html#ansible-collections-ansible-builtin-user-module
|
||||
- name: "Delete usual cloud users user"
|
||||
user:
|
||||
name: "{{ item }}"
|
||||
state: absent
|
||||
remove: true
|
||||
with_items:
|
||||
- pi
|
||||
- admin
|
||||
- ubuntu
|
4
roles/root_user/templates/authorized_keys.j2
Normal file
4
roles/root_user/templates/authorized_keys.j2
Normal file
|
@ -0,0 +1,4 @@
|
|||
{% for key in root_user.default_root_keys %}
|
||||
# {{ key.name }}
|
||||
{{ key.key }}
|
||||
{% endfor %}
|
51
roles/vim/files/vimrc
Normal file
51
roles/vim/files/vimrc
Normal file
|
@ -0,0 +1,51 @@
|
|||
set nocompatible
|
||||
|
||||
filetype on
|
||||
filetype plugin indent on
|
||||
syntax on
|
||||
|
||||
set expandtab
|
||||
set tabstop=4
|
||||
set softtabstop=4
|
||||
set shiftwidth=4
|
||||
set smarttab
|
||||
set lazyredraw
|
||||
set showmatch
|
||||
set incsearch
|
||||
set hlsearch
|
||||
set number
|
||||
set ruler
|
||||
set autoindent
|
||||
set smartindent
|
||||
set wildmenu
|
||||
set laststatus=2
|
||||
set cursorline
|
||||
set showmode
|
||||
set backspace=indent,eol,start
|
||||
set mouse=a
|
||||
set background=dark
|
||||
set foldenable
|
||||
set foldlevelstart=10
|
||||
set foldmethod=indent
|
||||
|
||||
nnoremap <F2> :set invpaste paste?<CR>
|
||||
set pastetoggle=<F2>
|
||||
set showmode
|
||||
|
||||
let mapleader=","
|
||||
|
||||
nnoremap <leader><space> :nohlsearch<CR>
|
||||
nnoremap <space> za
|
||||
map <Leader><Right> 10<C-w><<CR>
|
||||
map <Leader><Down> 10<C-w>-<CR>
|
||||
map <Leader><Up> 10<C-w>+<CR>
|
||||
map <Leader><Left> 10<C-w>><CR>
|
||||
map <Leader>= 10<C-w>=<CR>
|
||||
map <Leader>s :%s/\s\+$//<CR>
|
||||
|
||||
nnoremap tt :tabnew<CR>
|
||||
nnoremap to :tabonly<CR>
|
||||
nnoremap tc :tabclose<CR>
|
||||
nnoremap tn :tabnext<CR>
|
||||
nnoremap tp :tabprevious<CR>
|
||||
nnoremap vs :vsplit
|
12
roles/vim/tasks/main.yml
Normal file
12
roles/vim/tasks/main.yml
Normal file
|
@ -0,0 +1,12 @@
|
|||
---
|
||||
- name: Install vim
|
||||
apt:
|
||||
name: vim-nox
|
||||
state: latest
|
||||
# use the `copy` module to copy files to the remote host
|
||||
- name: Configure vim
|
||||
copy:
|
||||
src: vimrc
|
||||
dest: /etc/vim/vimrc
|
||||
owner: root
|
||||
group: root
|
9
upgrade.yml
Normal file
9
upgrade.yml
Normal file
|
@ -0,0 +1,9 @@
|
|||
---
|
||||
- hosts: all
|
||||
tasks:
|
||||
- name: "update apt cache"
|
||||
apt: update_cache=yes force_apt_get=yes cache_valid_time=3600
|
||||
- name: "upgrade packages"
|
||||
apt: upgrade=safe force_apt_get=yes
|
||||
- name: "upgrade dist packages"
|
||||
apt: upgrade=dist force_apt_get=yes
|
Loading…
Add table
Reference in a new issue