Compare commits

...

41 commits

Author SHA1 Message Date
a1572676a4 Reformat messages 2025-05-01 22:20:09 +02:00
d09544dcd6 add yq-go - a jq-like tool but for yaml written in go - to base packages 2025-04-25 22:40:02 +02:00
163ade7561 Use release-version of inventory, instead hardcode 2025-04-25 22:23:28 +02:00
4eb80faf53 Update ID in os-release 2025-04-25 22:05:52 +02:00
60c831b31f Execute nsm check local on login 2025-04-25 21:23:49 +02:00
cd3c8b7031 Add nsm 2025-04-25 21:08:53 +02:00
4528681b41 Fix wrong chrony service-name 2025-04-24 20:13:22 +02:00
d9adf73946 Remove pterodactyl leftovers 2025-04-19 21:30:51 +02:00
7cdcf8409f Change pms-cli podman-directory to {{ PODMAN_DIRECTORY }}/pms-cli 2025-04-10 20:37:06 +02:00
2a27a7830f add ddupdater cron 2025-04-06 22:19:56 +02:00
0dbbe6d575 add ddupdater 2025-04-06 21:56:06 +02:00
cd74b7ace1 Add chrony ntp service 2025-04-04 23:12:59 +02:00
af6398cdad Add pms-cli config, move podman_dir defition to separate map 2025-04-01 21:51:50 +02:00
4100cfd793 Remove pterodactyl before docker 2025-04-01 21:36:02 +02:00
2f5a33c394 Remove pterodactyl, Remove docker, add pms-cli 2025-04-01 21:33:46 +02:00
70b47b7952 update repo ver to 3.21 2024-12-28 12:54:15 +01:00
e673abb764 add gaming network configs 2024-12-02 20:26:01 +01:00
8d5dcef849 add gaming mysql configs & user 2024-12-02 19:54:07 +01:00
54de7c011b fix lock file 2 2024-12-01 21:38:22 +01:00
ca1f51a857 fix lock file 2024-12-01 21:35:24 +01:00
07d1d844e3 Don't log sensitive data 2024-12-01 21:30:07 +01:00
8008a16081 actually create lock-file 2024-12-01 21:29:10 +01:00
3930557150 Rework mysql_secure_installation (again) 2024-12-01 21:13:41 +01:00
35456667fb remove unneccessary sudo from mysql_secure_installation.py 2024-12-01 21:01:17 +01:00
f2dfe99ddc Fix secure.ansible.yml 2024-12-01 20:51:23 +01:00
c9651f783d exchange for py3-pymysql 2024-12-01 20:43:55 +01:00
b03a568298 fix test statements 2024-12-01 20:38:05 +01:00
655b0e2f88 fix test statements 2024-12-01 20:32:56 +01:00
edd27d4cbf fix test statements 2024-12-01 20:27:54 +01:00
074b6ac04c re-add py-mysqlclient 2024-12-01 20:24:02 +01:00
cac06433e7 try other way to secure mysql 2024-12-01 20:23:16 +01:00
88d7a964b9 Try to fix .my.cnf 2024-12-01 19:49:12 +01:00
321779dafd fix .my.cnf somehow 2024-12-01 18:31:54 +01:00
5b29805865 fix .my.cnf somehow 2024-12-01 18:26:18 +01:00
8a7b7f0b81 add .my.cnf 2024-12-01 18:20:29 +01:00
2c178f9e9c add missing mysqlclient dep 2024-12-01 18:11:27 +01:00
53bd6c5c2a Add MySQL to top 2024-12-01 18:04:09 +01:00
b291330bc9 Automatic mysql_secure_installation 2024-12-01 17:18:25 +01:00
f9232d32b2 Allow connections to wings 2024-11-18 20:51:46 +01:00
8df43c3391 Add pterodactyl rules 2024-11-18 20:46:29 +01:00
3a5d9bc778 Add rootfull docker for gaming-host 2024-11-16 12:08:06 +01:00
45 changed files with 355 additions and 163 deletions

View file

@ -0,0 +1,6 @@
{
"username": "{{ USERNAME }}",
"password": "{{ PASSWORD }}",
"domain": "{{ DOMAIN }}",
"url": "https://infomaniak.com/nic/update?hostname=%HOSTNAME%&myip=%IPADDRESS%&username=%USERNAME%&password=%PASSWORD%"
}

View file

@ -0,0 +1,42 @@
- hosts: localhost
vars_files:
- ../../map.yml
tasks:
- name: "apps/ddupdater : Create ddupdater app-dir"
file:
state: directory
path: "{{ app_dir }}/ddupdater"
owner: root
group: root
mode: "0755"
- name: "apps/ddupdater : Clone ddupdater git repo"
git:
repo: https://git.noveria.org/Tools/ddupdater.git
dest: "{{ app_dir }}/ddupdater"
force: true
- name: "apps/ddupdater : Symlink to bin directory"
file:
state: link
src: "{{ app_dir }}/ddupdater/ddupdater"
dest: "{{ bin_dir }}/ddupdater"
owner: root
group: root
mode: "0755"
- name: "apps/ddupdater : Populate config"
template:
src: files/ddupdater_config.json.j2
dest: "{{ app_dir }}/ddupdater/config.json"
owner: root
group: root
mode: "0644"
vars:
USERNAME: "noveria"
PASSWORD: "{{dyndns_password}}"
DOMAIN: "play.noveria.org"
- name: "apps/ddupdater : Create ddupdater crontab"
cron:
name: "Check public ip and update ddns record every 5 minutes"
state: present
minute: "*/5"
job: "{{ bin_dir }}/ddupdater"
user: root

View file

@ -2,23 +2,23 @@
vars_files:
- ../../map.yml
tasks:
- name: Create generate_motd app-dir
- name: "apps/generate-motd : Create generate_motd app-dir"
file:
state: directory
path: "{{ app_dir }}/generate_motd"
owner: root
group: root
mode: '0755'
- name: Clone generate-motd git repo
mode: "0755"
- name: "apps/generate-motd : Clone generate-motd git repo"
git:
repo: https://git.noveria.org/Tools/generate_motd.git
dest: "{{ app_dir }}/generate_motd"
force: true
- name: Symlink generate_motd
- name: "apps/generate-motd : Symlink to bin directory"
file:
state: link
src: "{{ app_dir }}/generate_motd/generate_motd"
dest: "{{ bin_dir }}/generate_motd"
owner: root
group: root
mode: '0755'
mode: "0755"

View file

@ -1,3 +1,4 @@
- import_playbook: nsm/init.ansible.yml
- import_playbook: generate-motd/init.ansible.yml
- import_playbook: noveriablcgen/init.ansible.yml
- import_playbook: raclette/init.ansible.yml

View file

@ -1,46 +1,45 @@
- hosts: localhost
vars_files:
../../map.yml
vars_files: ../../map.yml
tasks:
- name: Create noveriablcgen app-dir
- name: "apps/noveriablcgen : Create noveriablcgen app-dir"
file:
state: directory
path: "{{ app_dir }}/noveriablcgen"
owner: root
group: root
mode: '0755'
- name: Clone noveriablcgen git-repo
mode: "0755"
- name: "apps/noveriablcgen : Clone noveriablcgen git-repo"
git:
repo: https://git.noveria.org/Tools/noveriablcgen.git
dest: "{{ app_dir }}/noveriablcgen"
force: true
- name: Symlink noveriablcgen
- name: "apps/noveriablcgen : Symlink to bin directory"
file:
state: link
src: "{{ app_dir }}/noveriablcgen/noveriablcgen"
dest: "{{ bin_dir }}/noveriablcgen"
owner: root
group: root
mode: '0755'
- name: noveriablcgen etc dir
mode: "0755"
- name: "apps/noveriablcgen : Create noveriablcgen etc dir"
file:
state: directory
path: "{{ etc_dir }}/noveriablcgen"
owner: root
group: root
mode: '0755'
- name: Get ROOT_UUID
mode: "0755"
- name: "apps/noveriablcgen : Get ROOT_UUID"
shell: |
lsblk -o LABEL,UUID | grep ROOT | awk '{print $2}'
register: root_uuid
run_once: true
- name: Populate noveriablcgen config
- name: "apps/noveriablcgen : Populate noveriablcgen config"
template:
src: files/noveriablcgen_config.json.j2
dest: "{{ etc_dir }}/noveriablcgen/noveriablcgen.json"
owner: root
group: root
mode: '0644'
mode: "0644"
vars:
BTRFS_ROOT: "/btrfs"
GRUB_CONFD: "/etc/grub.d"

3
apps/nsm/files/nsm.json Normal file
View file

@ -0,0 +1,3 @@
{
"url": "https://git.noveria.org/Novos/ISO"
}

38
apps/nsm/init.ansible.yml Normal file
View file

@ -0,0 +1,38 @@
- hosts: localhost
vars_files:
- ../../map.yml
tasks:
- name: "apps/nsm : Create nsm app-dir"
file:
state: directory
path: "{{ app_dir }}/nsm"
owner: root
group: root
mode: "0755"
- name: "apps/nsm : Clone nsm git repo"
git:
repo: https://git.noveria.org/Tools/nsm.git
dest: "{{ app_dir }}/nsm"
force: true
- name: "apps/nsm : Symlink to bin directory"
file:
state: link
src: "{{ app_dir }}/nsm/nsm"
dest: "{{ bin_dir }}/nsm"
owner: root
group: root
mode: "0755"
- name: "apps/nsm : Create nsm config dir"
file:
state: directory
name: "{{ etc_dir }}/nsm"
owner: root
group: root
mode: "0755"
- name: "apps/nsm : Populate nsm config"
template:
src: files/nsm.json
dest: "{{ etc_dir }}/nsm/nsm.json"
owner: root
group: root
mode: "0644"

View file

@ -0,0 +1,11 @@
{
"PODMAN_DIRECTORY": "{{PODMAN_DIRECTORY}}/pms-cli",
"SERVERRUNNERS": {
"paper": "https://api.papermc.io/v2/projects/paper",
"folia": "https://api.papermc.io/v2/projects/folia"
},
"PROXYRUNNERS": {
"waterfall": "https://api.papermc.io/v2/projects/waterfall",
"velocity": "https://api.papermc.io/v2/projects/velocity"
}
}

View file

@ -0,0 +1,41 @@
- hosts: localhost
vars_files:
- ../../map.yml
- ../../podman/map.yml
tasks:
- name: "apps/pms-cli : Create pms-cli app-dir"
file:
state: directory
path: "{{ app_dir }}/pms-cli"
owner: root
group: root
mode: "0755"
- name: "apps/pms-cli : Clone pms-cli git repo"
git:
repo: https://git.noveria.org/Tools/pms-cli.git
dest: "{{ app_dir }}/pms-cli"
force: true
- name: "apps/pms-cli : Symlink to bin directory"
file:
state: link
src: "{{ app_dir }}/pms-cli/pms-cli"
dest: "{{ bin_dir }}/pms-cli"
owner: root
group: root
mode: "0755"
- name: "apps/pms-cli : Create pms-cli config dir"
file:
state: directory
name: "{{ etc_dir }}/pms-cli"
owner: root
group: root
mode: "0755"
- name: "apps/pms-cli : Populate pms-cli Config"
template:
src: files/pms-cli.json.j2
dest: "{{ etc_dir }}/pms-cli/pms-cli.json"
owner: root
group: root
mode: "0644"
vars:
PODMAN_DIRECTORY: "{{ podman_dir }}"

View file

@ -2,19 +2,19 @@
vars_files:
- ../../map.yml
tasks:
- name: Create raclette app-dir
- name: "apps/raclette : Create raclette app-dir"
file:
state: directory
path: "{{ app_dir }}/raclette"
owner: root
group: root
mode: "0755"
- name: Clone raclette git-repo
- name: "apps/raclette : Clone raclette git-repo"
git:
repo: https://git.noveria.org/Tools/raclette.git
dest: "{{ app_dir }}/raclette"
force: true
- name: Symlink raclette-run
- name: "apps/raclette : Symlink raclette-run to bin directory"
file:
state: link
src: "{{ app_dir }}/raclette/raclette-run"
@ -22,7 +22,7 @@
owner: root
group: root
mode: "0755"
- name: Symlink raclette-call
- name: "apps/raclette : Symlink raclette-call to bin directory"
file:
state: link
src: "{{ app_dir }}/raclette/raclette-call"
@ -30,14 +30,14 @@
owner: root
group: root
mode: "0755"
- name: raclette etc dir
- name: "apps/raclette : Create raclette config dir"
file:
state: directory
path: "{{ etc_dir }}/raclette"
owner: root
group: root
mode: "0755"
- name: Populate raclette config
- name: "apps/raclette : Populate raclette config"
template:
src: files/raclette_config.json.j2
dest: "{{ etc_dir }}/raclette/raclette.json"

View file

@ -2,15 +2,15 @@
vars_files:
- ../../map.yml
tasks:
- name: Create repo-mgmt dir
- name: "build : Create repo-mgmt dir"
file:
state: directory
path: /opt/podman/repo-mgmt
owner: puser
group: puser
mode: '0755'
mode: "0755"
recurse: true
- name: Clone repo-mgmt
- name: "build : Clone repo-mgmt"
git:
repo: https://git.noveria.org/Novos/repo-mgmt.git
dest: /opt/podman/repo-mgmt

View file

@ -2,28 +2,28 @@
vars_files:
- map.yml
tasks:
- name: Create base directory
- name: "directories : Create base directory"
file:
path: "{{ dir }}"
recurse: yes
owner: root
group: root
state: directory
- name: Create bin directory
- name: "directories : Create bin directory"
file:
path: "{{ bin_dir }}"
recurse: yes
owner: root
group: root
state: directory
- name: Create etc directory
- name: "directories : Create etc directory"
file:
path: "{{ etc_dir }}"
recurse: yes
owner: root
group: root
state: directory
- name: Create apps directory
- name: "directories : Create apps directory"
file:
path: "{{ app_dir }}"
recurse: yes

View file

@ -2,33 +2,33 @@
vars_files:
- map.yml
tasks:
- name: Install haproxy pkg
- name: "haproxy/pkg : Install haproxy pkg"
package:
state: present
name:
- haproxy
- name: Setup haproxy conf.d directory
- name: "haproxy/pkg : Setup haproxy conf.d directory"
file:
state: directory
path: /etc/haproxy/conf.d
owner: root
group: root
mode: '0755'
- name: Populate haproxy config
mode: "0755"
- name: "haproxy/pkg : Populate haproxy config"
template:
src: files/haproxy_config.j2
dest: /etc/haproxy/haproxy.cfg
owner: root
group: root
mode: '0644'
mode: "0644"
vars:
IPV4: "{{ ansible_default_ipv4.address }}"
- name: Populate haproxy rc-script
- name: "haproxy/pkg : Populate haproxy rc-script"
template:
src: files/haproxy_rcscript.initd.j2
dest: /etc/init.d/haproxy
owner: root
group: root
mode: '0755'
mode: "0755"
vars:
CONF_DIR: "{{ conf_dir }}"

View file

@ -1,6 +1,6 @@
- hosts: localhost
tasks:
- name: Enable haproxy service
- name: "haproxy/service : Enable haproxy service"
service:
name: haproxy
state: started

15
migrations.ansible.yml Normal file
View file

@ -0,0 +1,15 @@
- hosts: localhost
tasks:
- name: "migrations : Remove pterodactyl"
package:
state: absent
name:
- pterodactyl-panel-compose
- pterodactyl-wings
- name: "migrations : Remove Docker"
package:
state: absent
name:
- docker
- docker-cli-compose
- docker-openrc

View file

@ -1,6 +1,6 @@
- hosts: localhost
tasks:
- name: Create mysql directory
- name: "mysql/directory : Create mysql directory"
file:
path: /var/lib/mysql
recurse: yes

7
mysql/files/my.cnf.j2 Normal file
View file

@ -0,0 +1,7 @@
[client]
user=root
password={{MYSQL_ROOT_PASSWORD}}
[mysql]
user=root
password={{MYSQL_ROOT_PASSWORD}}

View file

@ -1,3 +1,4 @@
- import_playbook: pkg.ansible.yml
- import_playbook: directory.ansible.yml
- import_playbook: service.ansible.yml
- import_playbook: secure.ansible.yml

View file

@ -1,9 +1,10 @@
- hosts: localhost
tasks:
- name: Install mariadb package
- name: "mysql/pkg : Install mariadb package"
package:
state: present
name:
- mariadb
- mariadb-client
- mariadb-openrc
- py3-mysqlclient

46
mysql/secure.ansible.yml Normal file
View file

@ -0,0 +1,46 @@
- hosts: localhost
tasks:
- name: "mysql/secure : Test if mysql has been secured"
stat:
path: /var/lib/mysql/.secured
register: MYSQL_SECURED_RESULT
- name: "mysql/secure : Set the root password"
mysql_user: user=root password="{{mysql_root_password}}" host="{{item}}"
with_items:
- 127.0.0.1
- ::1
- localhost
no_log: true
when: not MYSQL_SECURED_RESULT.stat.exists
- name: "mysql/secure : Set root my.cnf"
template:
src: files/my.cnf.j2
dest: /root/.my.cnf
owner: root
group: root
mode: "0644"
vars:
MYSQL_ROOT_PASSWORD: "{{mysql_root_password}}"
no_log: true
- name: "mysql/secure : Delete anonymous MySQL user"
mysql_user: name="" host="{{item}}" state=absent
with_items:
- localhost
- "{{ansible_nodename}}"
no_log: true
when: not MYSQL_SECURED_RESULT.stat.exists
- name: "mysql/secure : Delete Hostname based MySQL user"
mysql_user: user=root host="{{ansible_nodename}}" state=absent
no_log: true
when: not MYSQL_SECURED_RESULT.stat.exists
- name: "mysql/secure : Remove MySQL test database"
mysql_db: name=test state=absent
no_log: true
when: not MYSQL_SECURED_RESULT.stat.exists
- name: "mysql/secure : Create .secured lock file"
file:
state: touch
path: /var/lib/mysql/.secured
owner: root
group: root
when: not MYSQL_SECURED_RESULT.stat.exists

View file

@ -1,13 +1,14 @@
- hosts: localhost
tasks:
- name: Test if directory exists
shell: |
test /var/lib/mysql/mysql
register: MYSQL_DIRECTORY_EXISTS
- name: MariaDB setup
- name: "mysql/service : Test if directory exists"
stat:
path: /var/lib/mysql/mysql
register: MYSQL_DIRECTORY_RESULT
ignore_errors: true
- name: "mysql/service : Setup mariadb"
shell: |
/etc/init.d/mariadb setup
when: not MYSQL_DIRECTORY_EXISTS
when: not MYSQL_DIRECTORY_RESULT.stat.exists
- name: Enable mariadb service
service:
name: mariadb

View file

@ -1,27 +1,27 @@
- hosts: localhost
tasks:
- name: Install firewall packages
- name: "network/firewall : Install nftables packages"
package:
name:
- nftables
state: present
- name: Create firewall rules directory
- name: "network/firewall : Create nftables.d directory"
file:
state: directory
path: /etc/nftables.d
owner: root
group: root
mode: '0755'
- name: Firewall rules
mode: "0755"
- name: "network/firewall : Firewall rules"
template:
src: files/firewall_rules.nft.j2
dest: /etc/nftables.d/noveria.nft
owner: root
group: root
mode: '0600'
mode: "0600"
vars:
ALLOWED_PORTS: [80, 443, 25565, 51871]
- name: Enable nftables service
ALLOWED_PORTS: [80, 443]
- name: "network/firewall : Enable nftables service"
service:
name: nftables
state: started

View file

@ -2,14 +2,14 @@
- hosts: localhost
tasks:
- name: Populate interfaces
- name: "network : Populate interfaces"
template:
src: files/network_interfaces
dest: /etc/network/interfaces
owner: root
group: root
mode: '0644'
- name: Enable networking service
mode: "0644"
- name: "network : Enable networking service"
service:
name: networking
state: started

View file

@ -1,20 +1,20 @@
- hosts: localhost
tasks:
- name: Populate sshd_config
- name: "openssh/config : Populate sshd_config"
template:
src: files/openssh_sshd_config
dest: /etc/ssh/sshd_config
mode: "0644"
owner: root
group: root
- name: Configure root .ssh directory
- name: "openssh/config : Configure root .ssh directory"
file:
state: directory
path: /root/.ssh
mode: "0755"
owner: root
group: root
- name: Configure root authorized_keys
- name: "openssh/config : Configure root authorized_keys"
template:
src: files/openssh_authorized_keys
dest: /root/.ssh/authorized_keys

View file

@ -1,6 +1,6 @@
- hosts: localhost
tasks:
- name: Install openssh package
- name: "openssh/pkg : Install openssh-server package"
package:
state: present
name:

View file

@ -1,11 +1,11 @@
- hosts: localhost
tasks:
- name: Enable openssh service
- name: "openssh/service : Enable sshd service"
service:
name: sshd
state: started
enabled: true
- name: Require lo interface
- name: "openssh/service : Require networking service"
lineinfile:
state: present
path: /etc/conf.d/sshd

View file

@ -1,8 +1,10 @@
- hosts: localhost
vars_files:
- map.yml
tasks:
- name: Create podman directory
- name: "podman/directory : Create podman directory"
file:
path: /opt/podman
path: "{{ podman_dir }}"
owner: puser
group: puser
state: directory

1
podman/map.yml Normal file
View file

@ -0,0 +1 @@
podman_dir: /opt/podman

View file

@ -1,6 +1,6 @@
- hosts: localhost
tasks:
- name: Install podman package
- name: "podman/pkg : Install required packages"
package:
state: present
name:

View file

@ -1,15 +1,15 @@
- hosts: localhost
tasks:
- name: cgroup mode
- name: "podman/rootless : Set cgroup mode to unified"
lineinfile:
path: "/etc/rc.conf"
regexp: "^rc_cgroup_mode.?=.?"
line: rc_cgroup_mode="unified"
- name: cgroups service
- name: "podman/rootless : Enable cgroups service"
service:
name: cgroups
enabled: true
- name: rootless modules
- name: "podman/rootless : Activate rootless modules"
lineinfile:
state: present
path: /etc/modules
@ -18,13 +18,13 @@
tun
fuse
ip_tables
- name: subgid
- name: "podman/rootless : Set puser subgid"
lineinfile:
state: present
path: /etc/subgid
insertafter: EOF
line: puser:100000:65536
- name: subuid
- name: "podman/rootless : Set puser subuid"
lineinfile:
state: present
path: /etc/subuid

View file

@ -1,10 +1,10 @@
- hosts: localhost
tasks:
- name: Enable podman service
- name: "podman/service : Enable podman service"
service:
name: podman
enabled: true
- name: Podman unprivileged ports
- name: "podman/service : Podman unprivileged ports"
template:
src: files/files_unprivileged_ports
dest: /etc/sysctl.d/podman.conf

View file

@ -1,6 +1,6 @@
- hosts: localhost
tasks:
- name: Create puser user
- name: "podman/user : Create puser user"
user:
uid: 2000
name: puser
@ -8,14 +8,14 @@
home: /home/puser
password: "*"
create_home: true
- name: puser .ssh dir
- name: "podman/user : Create puser .ssh dir"
file:
state: directory
path: /home/puser/.ssh
mode: "0755"
owner: puser
group: puser
- name: puser authorized_keys
- name: "podman/user : Add puser authorized_keys"
template:
src: ../openssh/files/openssh_authorized_keys
dest: /home/puser/.ssh/authorized_keys

View file

@ -1,2 +0,0 @@
- import_playbook: panel.ansible.yml
- import_playbook: wings.ansible.yml

View file

@ -1,24 +0,0 @@
- hosts: localhost
tasks:
- name: Install pterodactyl panel
package:
state: present
name:
- pterodactyl-panel-compose
- name: Enable pterodactyl-panel service
service:
name: pterodactyl-panel-compose
enabled: true
- name: pterodactyl subuid
lineinfile:
state: present
path: /etc/subuid
insertafter: EOF
line: pterodactyl:200000:65536
- name: pterodactyl subgid
lineinfile:
state: present
path: /etc/subgid
insertafter: EOF
line: pterodactyl:200000:65536

View file

@ -1,11 +0,0 @@
- hosts: localhost
tasks:
- name: Install pterodactyl wings
package:
state: present
name:
- pterodactyl-wings
- name: Enable pterodactyl-wings service
service:
name: pterodactyl-wings
enabled: true

View file

@ -2,12 +2,12 @@
vars_files:
- ../map.yml
tasks:
- name: Install ansible packages
- name: "system/ansible : Install ansible packages"
package:
name:
- ansible
state: present
- name: Populate ansible config
- name: "system/ansible : Populate ansible config"
template:
src: files/ansible_config
dest: /etc/ansible/ansible.cfg

View file

@ -2,7 +2,7 @@
vars_files:
- ../map.yml
tasks:
- name: Install base packages
- name: "system/base : Install base packages"
package:
state: present
name:
@ -10,6 +10,7 @@
- linux-firmware-none
- openjdk17-jre-headless
- jq
- yq-go
- vim
- git
- findmnt
@ -18,49 +19,56 @@
- curl
- rsync
- screen
- name: Systemupdate script
- iproute2-ss
- chrony
- name: "system/base : Deploy systemupdate script"
template:
src: files/base_systemupdate
dest: "{{ app_dir }}/systemupdate"
owner: root
group: root
mode: '0755'
- name: Systemupdate bin-link
mode: "0755"
- name: "system/base : Create systemupdate symlink to bin"
file:
src: "{{ app_dir }}/systemupdate"
dest: "{{ bin_dir }}/systemupdate"
owner: root
group: root
state: link
- name: Enable modules Service
- name: "system/base : Enable modules Service"
service:
state: started
name: modules
enabled: true
- name: Tun permission service-file
- name: "system/base : Deploy tun permission service-file"
template:
src: files/base_tun-perm.initd
dest: "/etc/init.d/tun-perm"
owner: root
group: root
mode: '0755'
- name: Enable tun-perm service
mode: "0755"
- name: "system/base : Enable tun-perm service"
service:
state: started
name: tun-perm
enabled: true
- name: Enable sysctl service
- name: "system/base : Enable sysctl service"
service:
state: started
name: sysctl
enabled: true
- name: Enable syslog service
- name: "system/base : Enable syslog service"
service:
state: started
name: syslog
enabled: true
- name: Enable sysfs service
- name: "system/base : Enable sysfs service"
service:
state: started
name: sysfs
enabled: true
- name: "system/base : Enable chrony-ntp service"
service:
state: started
name: chronyd
enabled: true

View file

@ -2,7 +2,7 @@
vars_files:
- ../map.yml
tasks:
- name: Install bootloader pkgs
- name: "system/bootloader : Install grub, mkinitfs, efibootmgr"
package:
name:
- grub
@ -11,22 +11,22 @@
- mkinitfs-doc
- efibootmgr
state: present
- name: Get current timestamp
- name: "system/bootloader : Get current timestamp"
shell: |
CURRENT_SUBVOLUME=$(LC_ALL=C btrfs sub show / | LC_ALL=C grep Name: | tr -d '[:space:]'); TIMESTAMP_FORMAT='[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}_[[:digit:]]{2}-[[:digit:]]{2}-[[:digit:]]{2}'; echo "$CURRENT_SUBVOLUME" | grep -Eo "$TIMESTAMP_FORMAT"
register: CURRENT_SUBVOLUME_TIMESTAMP
run_once: true
- name: Get current timestamp human
- name: "system/bootloader : Get current timestamp human"
shell: |
CURRENT_SUBVOLUME_TIMESTAMP='{{ CURRENT_SUBVOLUME_TIMESTAMP.stdout }}'; echo "${CURRENT_SUBVOLUME_TIMESTAMP:0:10} ${CURRENT_SUBVOLUME_TIMESTAMP:11:2}:${CURRENT_SUBVOLUME_TIMESTAMP:14:2}"
register: CURRENT_SUBVOLUME_TIMESTAMP_HUMAN
run_once: true
- name: Get current kernel version
- name: "system/bootloader : Get current kernel version"
shell: |
uname -r
register: KERNEL_VERSION
run_once: true
- name: mkinitfs config
- name: "system/bootloader : Add features to mkinitfs config"
lineinfile:
path: "/etc/mkinitfs/mkinitfs.conf"
regexp: "^features.?=.?"
@ -34,7 +34,7 @@
owner: root
group: root
mode: "0644"
- name: os-release file
- name: "system/bootloader : Generate os-release file"
template:
src: files/bootloader_os-release.j2
dest: "/etc/os-release"
@ -42,16 +42,16 @@
group: root
mode: "0644"
vars:
OS_VERSION: "2406"
OS_VERSION: "{{ release_version }}"
OS_RELEASE_INFO: '"Timestamp: {{ CURRENT_SUBVOLUME_TIMESTAMP_HUMAN.stdout }} | Kernel: {{ KERNEL_VERSION.stdout }}"'
- name: Motd Directory
- name: "system/bootloader : Create motd directory"
file:
name: /etc/motd.d
owner: root
group: root
mode: "0755"
state: directory
- name: Motd
- name: "system/bootloader : Place Noveria motd file in motd directory"
template:
src: files/bootloader_00_noveria.motd.j2
dest: /etc/motd.d/00_noveria.motd
@ -59,10 +59,10 @@
group: root
mode: "0644"
vars:
OS_NAME: "Novos 2406"
OS_NAME: "Novos {{ release_version }}"
OS_RELEASE_INFO: "Timestamp: {{ CURRENT_SUBVOLUME_TIMESTAMP_HUMAN.stdout }} | Kernel: {{ KERNEL_VERSION.stdout }}"
OS_ISSUE_URL: "https://git.noveria.org/Novos/ISO/issues"
- name: Issue
- name: "system/bootloader : Place issue file"
template:
src: files/bootloader_issue.j2
dest: /etc/issue
@ -70,5 +70,5 @@
group: root
mode: "0644"
vars:
OS_NAME: "Novos 2406"
OS_NAME: "Novos {{ release_version }}"
OS_RELEASE_INFO: "{{ CURRENT_SUBVOLUME_TIMESTAMP_HUMAN.stdout }}"

View file

@ -2,43 +2,43 @@
vars_files:
- ../map.yml
tasks:
- name: Install Disks packages
- name: "system/disks : Install required filesystem packages"
package:
name:
- btrfs-progs
state: present
- name: Append btrfs module
- name: "system/disks : Append btrfs module"
lineinfile:
state: present
path: /etc/modules
insertafter: EOF
line: btrfs
- name: Btrfs mount permission
- name: "system/disks : Set correct /btrfs permissions"
file:
path: "/btrfs"
owner: root
group: root
mode: '0755'
mode: "0755"
state: directory
- name: Get ROOT_UUID
- name: "system/disks : Get ROOT_UUID"
shell: |
lsblk -o LABEL,UUID | grep ROOT | awk '{print $2}'
register: root_uuid
run_once: true
- name: Get ESP_UUID
- name: "system/disks : Get ESP_UUID"
shell: |
lsblk -o LABEL,UUID | grep EFI | awk '{print $2}'
register: esp_uuid
run_once: true
- name: Deploy fstab
- name: "system/disks : Deploy fstab"
template:
src: files/disks_fstab.j2
dest: /etc/fstab
owner: root
group: root
mode: '0644'
mode: "0644"
vars:
ROOT_UUID: '{{ root_uuid.stdout }}'
ESP_UUID: '{{ esp_uuid.stdout }}'
TIMESTAMP: '{{ start_timestamp }}'
TMPFS_SIZE: '{{ tmpfs_size }}'
ROOT_UUID: "{{ root_uuid.stdout }}"
ESP_UUID: "{{ esp_uuid.stdout }}"
TIMESTAMP: "{{ start_timestamp }}"
TMPFS_SIZE: "{{ tmpfs_size }}"

View file

@ -1,5 +1,5 @@
NAME="Novos"
ID=noveriaos
ID=novos
ID_LIKE=alpine
VERSION_ID="{{ OS_VERSION }}"
PRETTY_NAME="Novos {{ OS_VERSION }}"

View file

@ -32,3 +32,5 @@ for script in /etc/profile.d/*.sh ; do
fi
done
unset script
nsm check local

View file

@ -1,12 +1,12 @@
- hosts: localhost
tasks:
- name: Add noveria repository
- name: "system/repositories : Add noveria repository"
lineinfile:
state: present
path: "/etc/apk/repositories"
insertafter: EOF
line: https://alpine.noveria.org/v3.20/noveria
- name: Get noveria repo pubkey
line: https://alpine.noveria.org/v3.21/noveria
- name: "system/repositories : Get noveria repo pubkey"
get_url:
url: "https://alpine.noveria.org/alpine@noveria.org.pub"
dest: /etc/apk/keys

View file

@ -2,19 +2,19 @@
vars_files:
- ../map.yml
tasks:
- name: Install shell base-packages
- name: "system/shell : Install packages"
package:
name:
- zsh
- alpine-zsh-config
- bash
state: present
- name: Populate shell profile
- name: "system/shell : Populate shell profile"
template:
src: files/shell_profile.j2
dest: /etc/profile
owner: root
group: root
mode: '0644'
mode: "0644"
vars:
CUSTOM_BIN: "{{ bin_dir }}"

View file

@ -2,14 +2,14 @@
vars_files:
- ../map.yml
tasks:
- name: Create Noveria user
- name: "system/user : Create noveria user"
user:
uid: 1000
name: noveria
shell: /bin/false
home: /home/noveria
password: '*'
- name: Edit root user
password: "*"
- name: "system/user : Edit root user"
user:
name: root
shell: /bin/zsh

View file

@ -1,3 +1,5 @@
- name: Run Migrations
import_playbook: migrations.ansible.yml
- name: Setup Directories
import_playbook: directories.ansible.yml
- name: Setup System
@ -8,14 +10,16 @@
import_playbook: apps/init.ansible.yml
- name: Setup SSH
import_playbook: openssh/init.ansible.yml
#- name: Setup MySQL
# import_playbook: mysql/init.ansible.yml
- name: Setup HAProxy
import_playbook: haproxy/init.ansible.yml
when: installation_type == 'proxy'
- name: Setup Podman
- name: Setup Podman Rootless
import_playbook: podman/init.ansible.yml
when: installation_type == 'gaming' or installation_type == 'build'
- name: Setup Pterodactyl
import_playbook: pterodactyl/init.ansible.yml
when: installation_type == 'build' or installation_type == 'gaming' or installation_type == 'container'
- name: Setup PMS-CLI
import_playbook: apps/pms-cli/init.ansible.yml
when: installation_type == 'gaming'
- name: Setup repo-mgmt
import_playbook: build/init.ansible.yml