Migrate from old repository
This commit is contained in:
commit
4a304d486a
3
defaults/main.yml
Normal file
3
defaults/main.yml
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
ssh_authorized_keys: []
|
||||
ssh_authorized_keys_extra: []
|
30
handlers/main.yml
Normal file
30
handlers/main.yml
Normal file
@ -0,0 +1,30 @@
|
||||
---
|
||||
- name: reload hostname
|
||||
service:
|
||||
name: hostname
|
||||
state: restarted
|
||||
|
||||
- name: reload nginx
|
||||
service:
|
||||
name: nginx
|
||||
state: restarted
|
||||
|
||||
- name: reload docker
|
||||
service:
|
||||
name: docker
|
||||
state: reloaded
|
||||
|
||||
- name: restart docker
|
||||
service:
|
||||
name: docker
|
||||
state: restarted
|
||||
|
||||
- name: reload chronyd
|
||||
service:
|
||||
name: chronyd
|
||||
state: restarted
|
||||
|
||||
- name: restart sshd
|
||||
service:
|
||||
name: sshd
|
||||
state: restarted
|
18
meta/main.yml
Normal file
18
meta/main.yml
Normal file
@ -0,0 +1,18 @@
|
||||
---
|
||||
|
||||
dependencies: []
|
||||
|
||||
galaxy_info:
|
||||
role_name: common
|
||||
author: 'Pierre-Olivier Mercier <nemunaire+iac@nemunai.re>'
|
||||
description: Common role
|
||||
license: GPL-3.0-or-later
|
||||
min_ansible_version: 2.9
|
||||
platforms:
|
||||
- name: Alpine
|
||||
versions:
|
||||
- all
|
||||
- name: Debian
|
||||
versions:
|
||||
- all
|
||||
galaxy_tags: []
|
100
tasks/main.yml
Normal file
100
tasks/main.yml
Normal file
@ -0,0 +1,100 @@
|
||||
---
|
||||
- import_tasks: ssh.yml
|
||||
tags:
|
||||
- ssh
|
||||
|
||||
- name: fix hostname
|
||||
template:
|
||||
src: hostname.j2
|
||||
dest: /etc/hostname
|
||||
register: firsttime
|
||||
notify:
|
||||
- reload hostname
|
||||
# tags:
|
||||
# - always
|
||||
|
||||
- name: fix /etc/hosts
|
||||
lineinfile:
|
||||
dest: /etc/hosts
|
||||
regexp: "^{{ item.ip }}"
|
||||
line: "{{ item.ip }} {{ item.hosts }}"
|
||||
with_items:
|
||||
- ip: "127.0.0.1"
|
||||
hosts: "{{ inventory_hostname }}.{{ mydomain }} {{ inventory_hostname }} localhost localhost.localdomain"
|
||||
- ip: "::1"
|
||||
hosts: "{{ inventory_hostname }}.{{ mydomain }} {{ inventory_hostname }} localhost localhost.localdomain"
|
||||
when: mydomain is defined
|
||||
|
||||
- import_tasks: "pkg_Alpine.yml"
|
||||
when: ansible_distribution == 'Alpine'
|
||||
tags:
|
||||
- pkg
|
||||
- import_tasks: "pkg_Debian.yml"
|
||||
when: ansible_distribution == 'Debian'
|
||||
tags:
|
||||
- pkg
|
||||
|
||||
- name: ensure rngd is running
|
||||
service:
|
||||
name: rngd
|
||||
enabled: yes
|
||||
state: started
|
||||
tags:
|
||||
- pkg
|
||||
|
||||
- include_tasks: "sshd.yml"
|
||||
tags:
|
||||
- ssh
|
||||
|
||||
- name: ensure netmount is enabled
|
||||
service:
|
||||
name: netmount
|
||||
enabled: yes
|
||||
state: started
|
||||
tags:
|
||||
- pkg
|
||||
when: ansible_distribution == 'Alpine' and iscsid.session[ansible_hostname] is defined
|
||||
|
||||
- name: ensure haveged is disabled
|
||||
service:
|
||||
name: haveged
|
||||
enabled: no
|
||||
state: stopped
|
||||
tags:
|
||||
- pkg
|
||||
|
||||
- name: configure networking
|
||||
template:
|
||||
src: networking.j2
|
||||
dest: /etc/network/interfaces
|
||||
when: wanted_ip4 is defined or wanted_ip6 is defined
|
||||
tags:
|
||||
- networking
|
||||
|
||||
- name: configure watchdog
|
||||
template:
|
||||
src: watchdog.conf.j2
|
||||
dest: /etc/conf.d/watchdog
|
||||
when: ansible_distribution == 'Alpine'
|
||||
|
||||
- name: configure watchdog
|
||||
template:
|
||||
src: watchdog-deb.conf.j2
|
||||
dest: /etc/watchdog.conf
|
||||
when: ansible_distribution != 'Alpine'
|
||||
|
||||
- name: ensure watchdog is running
|
||||
service:
|
||||
name: watchdog
|
||||
enabled: yes
|
||||
state: started
|
||||
|
||||
- name: configure chrony
|
||||
template:
|
||||
src: chrony.conf.j2
|
||||
dest: /etc/chrony/chrony.conf
|
||||
notify:
|
||||
- reload chronyd
|
||||
when: ansible_distribution == 'Alpine'
|
||||
tags:
|
||||
- chrony
|
76
tasks/pkg_Alpine.yml
Normal file
76
tasks/pkg_Alpine.yml
Normal file
@ -0,0 +1,76 @@
|
||||
---
|
||||
- name: remove acpid
|
||||
apk:
|
||||
name: busybox-acpid
|
||||
state: absent
|
||||
tags:
|
||||
- pkg
|
||||
|
||||
- name: set alpine repositories
|
||||
template:
|
||||
src: apk-repositories
|
||||
dest: /etc/apk/repositories
|
||||
register: change_release
|
||||
tags:
|
||||
- pkg
|
||||
|
||||
- command: apk fix
|
||||
when: firsttime is changed
|
||||
tags:
|
||||
- pkg
|
||||
|
||||
- name: Upgrade system
|
||||
apk:
|
||||
update_cache: yes
|
||||
upgrade: yes
|
||||
available: "{{ change_release.changed }}"
|
||||
when: firsttime is not changed
|
||||
tags:
|
||||
- pkg
|
||||
|
||||
- name: install common packages (alpine)
|
||||
apk:
|
||||
name:
|
||||
- acl
|
||||
- chrony
|
||||
- coreutils
|
||||
- docker
|
||||
- docker-py
|
||||
- haveged
|
||||
- htop
|
||||
- iptables
|
||||
- ip6tables
|
||||
- nginx
|
||||
- openssh
|
||||
- openssl
|
||||
- py3-openssl
|
||||
- rng-tools
|
||||
# - ssmtp
|
||||
state: present
|
||||
update_cache: yes
|
||||
tags:
|
||||
- pkg
|
||||
|
||||
- name: install ssmtp (alpine)
|
||||
apk:
|
||||
name:
|
||||
- ssmtp
|
||||
state: present
|
||||
when: "'scouts' not in group_names"
|
||||
tags:
|
||||
- pkg
|
||||
|
||||
- name: configure ssmtp
|
||||
template:
|
||||
src: ssmtp.conf.j2
|
||||
dest: /etc/ssmtp/ssmtp.conf
|
||||
when: "'scouts' not in group_names"
|
||||
tags:
|
||||
- pkg
|
||||
|
||||
- name: make Docker depends on netmount
|
||||
lineinfile:
|
||||
path: /etc/conf.d/docker
|
||||
line: 'rc_need="netmount"'
|
||||
tags:
|
||||
- pkg
|
40
tasks/pkg_Debian.yml
Normal file
40
tasks/pkg_Debian.yml
Normal file
@ -0,0 +1,40 @@
|
||||
---
|
||||
- name: install common packages (debian)
|
||||
apt:
|
||||
name:
|
||||
- ca-certificates
|
||||
- apt-transport-https
|
||||
- curl
|
||||
# - docker.io
|
||||
- haveged
|
||||
- htop
|
||||
- gpg
|
||||
- iptables
|
||||
- iptables-persistent
|
||||
- msmtp-mta
|
||||
- nginx
|
||||
- openssh-server
|
||||
- python3-apt
|
||||
- python3-docker
|
||||
- python3-openssl
|
||||
- rng-tools5
|
||||
- watchdog
|
||||
- wget
|
||||
state: present
|
||||
update_cache: yes
|
||||
|
||||
- name: ensure netfilter-persistent is enabled
|
||||
service:
|
||||
name: netfilter-persistent
|
||||
enabled: yes
|
||||
state: started
|
||||
tags:
|
||||
- pkg
|
||||
|
||||
- name: configure msmtp
|
||||
template:
|
||||
src: msmtprc.j2
|
||||
dest: /etc/msmtprc
|
||||
when: "'scouts' not in group_names"
|
||||
tags:
|
||||
- pkg
|
7
tasks/ssh.yml
Normal file
7
tasks/ssh.yml
Normal file
@ -0,0 +1,7 @@
|
||||
---
|
||||
- name: Set ssh authorized_keys
|
||||
ansible.posix.authorized_key:
|
||||
key: "{{ ssh_authorized_keys | union(ssh_authorized_keys_extra) | flatten | join('\n') }}"
|
||||
state: present
|
||||
user: "{{ ansible_user }}"
|
||||
exclusive: true
|
44
tasks/sshd.yml
Normal file
44
tasks/sshd.yml
Normal file
@ -0,0 +1,44 @@
|
||||
---
|
||||
- name: Disable legacy ssh algorithms
|
||||
lineinfile:
|
||||
path: /etc/ssh/sshd_config
|
||||
regexp: "^#(HostKey {{ item }})$"
|
||||
line: '\1'
|
||||
backrefs: yes
|
||||
validate: '/usr/sbin/sshd -f %s -t'
|
||||
loop:
|
||||
- /etc/ssh/ssh_host_rsa_key
|
||||
- /etc/ssh/ssh_host_ed25519_key
|
||||
notify:
|
||||
- restart sshd
|
||||
tags:
|
||||
- pkg
|
||||
|
||||
- name: Activate specifics SSH ports
|
||||
lineinfile:
|
||||
path: /etc/ssh/sshd_config
|
||||
regexp: "^#?(Port {{ item }})$"
|
||||
insertafter: "^Port [0-9]+$"
|
||||
line: "Port {{ item }}"
|
||||
validate: '/usr/sbin/sshd -f %s -t'
|
||||
loop:
|
||||
- 22
|
||||
- 622
|
||||
notify:
|
||||
- restart sshd
|
||||
tags:
|
||||
- pkg
|
||||
|
||||
- name: Disable ssh password authentification
|
||||
lineinfile:
|
||||
path: /etc/ssh/sshd_config
|
||||
regexp: "^#? *{{ item.regexp }}"
|
||||
line: "{{ item.line }}"
|
||||
validate: '/usr/sbin/sshd -f %s -t'
|
||||
loop:
|
||||
- { regexp: "ChallengeResponseAuthentication", line: "ChallengeResponseAuthentication no" }
|
||||
- { regexp: "PasswordAuthentication", line: "PasswordAuthentication no" }
|
||||
notify:
|
||||
- restart sshd
|
||||
tags:
|
||||
- pkg
|
2
templates/apk-repositories
Normal file
2
templates/apk-repositories
Normal file
@ -0,0 +1,2 @@
|
||||
https://dl-cdn.alpinelinux.org/alpine/v{{ alpine_version }}/main
|
||||
https://dl-cdn.alpinelinux.org/alpine/v{{ alpine_version }}/community
|
34
templates/chrony.conf.j2
Normal file
34
templates/chrony.conf.j2
Normal file
@ -0,0 +1,34 @@
|
||||
# {{ ansible_managed }}
|
||||
|
||||
# List of NTP servers to use.
|
||||
{% if ansible_hostname == 'hesat' %}
|
||||
pool ntp.tuxfamily.net iburst
|
||||
pool fr.pool.ntp.org iburst
|
||||
server 2a01:e0a:2b:2250::b
|
||||
{% else %}
|
||||
{% for server in ntp_pool %}
|
||||
pool {{ server }} iburst
|
||||
{% endfor %}
|
||||
|
||||
initstepslew 10 {{ ntp_pool[0] }}
|
||||
{% endif %}
|
||||
|
||||
# Record the rate at which the system clock gains/losses time.
|
||||
driftfile /var/lib/chrony/chrony.drift
|
||||
|
||||
# In first three updates step the system clock instead of slew
|
||||
# if the adjustment is larger than 1 second.
|
||||
makestep 1.0 3
|
||||
|
||||
# Enable kernel synchronization of the real-time clock (RTC).
|
||||
rtcsync
|
||||
|
||||
cmdport 0
|
||||
|
||||
user ntp
|
||||
|
||||
{% if ntp_served_for is defined %}
|
||||
{% for network in ntp_served_for %}
|
||||
allow {{ network }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
1
templates/hostname.j2
Normal file
1
templates/hostname.j2
Normal file
@ -0,0 +1 @@
|
||||
{{ inventory_hostname }}
|
14
templates/msmtprc.j2
Normal file
14
templates/msmtprc.j2
Normal file
@ -0,0 +1,14 @@
|
||||
defaults
|
||||
|
||||
account here
|
||||
{% if rewrite_domain is defined %}
|
||||
from root@{{ rewrite_domain }}
|
||||
set_from_header on
|
||||
{% else %}
|
||||
from root@{{ ansible_hostname }}.{{ ansible_domain }}
|
||||
{% endif %}
|
||||
host {{ mailhub }}
|
||||
port 25
|
||||
tls on
|
||||
|
||||
account default : here
|
39
templates/networking.j2
Normal file
39
templates/networking.j2
Normal file
@ -0,0 +1,39 @@
|
||||
# The loopback network interface
|
||||
auto lo
|
||||
iface lo inet loopback
|
||||
{% if local_network.dns is defined %}
|
||||
dns-nameservers {{ local_network.dns }}
|
||||
{% endif %}
|
||||
|
||||
# The main interface
|
||||
auto eth0
|
||||
{% if wanted_ip4 is defined %}
|
||||
iface eth0 inet static
|
||||
address {{ wanted_ip4 }}/24
|
||||
gateway {{ local_network.gateway }}
|
||||
{% else %}
|
||||
iface eth0 inet dhcp
|
||||
{% endif %}
|
||||
{% if wanted_ip6 is defined %}
|
||||
iface eth0 inet6 static
|
||||
{% if local_network.gateway6 is defined %}
|
||||
address {{ wanted_ip6 }}/64
|
||||
gateway {{ local_network.gateway6 }}
|
||||
pre-up echo 0 > /proc/sys/net/ipv6/conf/eth0/accept_ra
|
||||
{% else %}
|
||||
address {{ wanted_ip6 }}/128
|
||||
post-up ip addrlabel add prefix {{ wanted_ip6 }}/64 label 99
|
||||
post-up ip addrlabel add prefix {{ wanted_ip6 }}/128 label 1
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if wanted_serekh is defined %}
|
||||
auto wg-serekh
|
||||
iface wg-serekh inet6 static
|
||||
address {{ wanted_serekh }}/64
|
||||
pre-up ip link add dev wg-serekh type wireguard
|
||||
pre-up wg setconf wg-serekh /etc/wireguard/wg-serekh.conf
|
||||
post-down ip link delete dev wg-serekh
|
||||
{% endif %}
|
||||
|
||||
source-directory /etc/network/interfaces.d
|
56
templates/ssmtp.conf.j2
Normal file
56
templates/ssmtp.conf.j2
Normal file
@ -0,0 +1,56 @@
|
||||
#
|
||||
# /etc/ssmtp.conf -- a config file for sSMTP sendmail.
|
||||
#
|
||||
|
||||
# The person who gets all mail for userids < MinUserId
|
||||
# Make this empty to disable rewriting.
|
||||
root=postmaster
|
||||
|
||||
# All mail delivered to userid >= MinUserId goes to user, not root.
|
||||
#MinUserId=1000
|
||||
|
||||
# The place where the mail goes. The actual machine name is required
|
||||
# no MX records are consulted. Commonly mailhosts are named mail.domain.com
|
||||
# The example will fit if you are in domain.com and your mailhub is so named.
|
||||
#mailhub=mail
|
||||
mailhub={{ mailhub }}
|
||||
|
||||
# Example for SMTP port number 2525
|
||||
# mailhub=mail.your.domain:2525
|
||||
# Example for SMTP port number 25 (Standard/RFC)
|
||||
# mailhub=mail.your.domain
|
||||
# Example for SSL encrypted connection
|
||||
# mailhub=mail.your.domain:465
|
||||
|
||||
# Where will the mail seem to come from?
|
||||
{% if rewrite_domain is defined %}
|
||||
rewriteDomain={{ rewrite_domain }}
|
||||
{% else %}
|
||||
#rewriteDomain=
|
||||
{% endif %}
|
||||
|
||||
# The full hostname
|
||||
|
||||
# Gentoo bug #47562
|
||||
# Commenting the following line will force ssmtp to figure
|
||||
# out the hostname itself.
|
||||
|
||||
# hostname=_HOSTNAME_
|
||||
|
||||
# Set this to never rewrite the "From:" line (unless not given) and to
|
||||
# use that address in the "from line" of the envelope.
|
||||
#FromLineOverride=YES
|
||||
|
||||
# Use SSL/TLS to send secure messages to server.
|
||||
#UseTLS=YES
|
||||
|
||||
# Use SSL/TLS certificate to authenticate against smtp host.
|
||||
#UseTLSCert=YES
|
||||
|
||||
# Use this RSA certificate.
|
||||
#TLSCert=/etc/ssl/certs/ssmtp.pem
|
||||
|
||||
# Get enhanced (*really* enhanced) debugging information in the logs
|
||||
# If you want to have debugging of the config file parsing, move this option
|
||||
# to the top of the config file and uncomment
|
||||
#Debug=YES
|
50
templates/watchdog-deb.conf.j2
Normal file
50
templates/watchdog-deb.conf.j2
Normal file
@ -0,0 +1,50 @@
|
||||
#ping = 172.31.14.1
|
||||
#ping = 172.26.1.255
|
||||
#interface = eth0
|
||||
#file = /var/log/messages
|
||||
#change = 1407
|
||||
|
||||
# Uncomment to enable test. Setting one of these values to '0' disables it.
|
||||
# These values will hopefully never reboot your machine during normal use
|
||||
# (if your machine is really hung, the loadavg will go much higher than 25)
|
||||
#max-load-1 = 24
|
||||
#max-load-5 = 18
|
||||
#max-load-15 = 12
|
||||
|
||||
# Note that this is the number of pages!
|
||||
# To get the real size, check how large the pagesize is on your machine.
|
||||
#min-memory = 1
|
||||
#allocatable-memory = 1
|
||||
|
||||
#repair-binary = /usr/sbin/repair
|
||||
#repair-timeout = 60
|
||||
#test-binary =
|
||||
#test-timeout = 60
|
||||
|
||||
# The retry-timeout and repair limit are used to handle errors in a more robust
|
||||
# manner. Errors must persist for longer than retry-timeout to action a repair
|
||||
# or reboot, and if repair-maximum attempts are made without the test passing a
|
||||
# reboot is initiated anyway.
|
||||
#retry-timeout = 60
|
||||
#repair-maximum = 1
|
||||
|
||||
watchdog-device = /dev/watchdog
|
||||
watchdog-timeout = 16
|
||||
|
||||
# Defaults compiled into the binary
|
||||
#temperature-sensor =
|
||||
#max-temperature = 90
|
||||
|
||||
# Defaults compiled into the binary
|
||||
#admin = root
|
||||
#interval = 1
|
||||
#logtick = 1
|
||||
#log-dir = /var/log/watchdog
|
||||
|
||||
# This greatly decreases the chance that watchdog won't be scheduled before
|
||||
# your machine is really loaded
|
||||
realtime = yes
|
||||
priority = 1
|
||||
|
||||
# Check if rsyslogd is still running by enabling the following line
|
||||
#pidfile = /var/run/rsyslogd.pid
|
2
templates/watchdog.conf.j2
Normal file
2
templates/watchdog.conf.j2
Normal file
@ -0,0 +1,2 @@
|
||||
WATCHDOG_OPTS="-T 16 -t 10"
|
||||
WATCHDOG_DEV="/dev/watchdog"
|
Loading…
Reference in New Issue
Block a user