No description
- Jinja 85.1%
- Python 13.7%
- Shell 1.2%
|
|
||
|---|---|---|
| .ansible | ||
| backup | ||
| garagehq | ||
| home | ||
| host_vars | ||
| inventory | ||
| molecule/_commons | ||
| roles | ||
| scripts | ||
| server | ||
| sshKeys | ||
| templates | ||
| vendor/roles/powerdns.pdns | ||
| wireguard | ||
| .gitignore | ||
| AGENTS.md | ||
| ansible.cfg | ||
| CLAUDE.md | ||
| create_instances.yml | ||
| dns_config.yml | ||
| dns_install.yml | ||
| enusre_host_vars.yml | ||
| instances_done.yml | ||
| mail-config.yml | ||
| README.md | ||
| server-install.yml | ||
| server-uninstall.yml | ||
| server-update.yml | ||
| share_sshkeys.yml | ||
| unattendes.yml | ||
| wireguard-manage.yml | ||
Ansible Server Repository
This repository manages server instances and roles using a unified configuration.
Quick start
- Define server aliases and host mapping in
inventory/group_vars/all.yml. - Add instances to
inventory/instance_vars/instances.ymlwithserver: <alias>and reference passwords as{{ mysql_passwords['user__domain'] }}. - Store MySQL passwords in the vaulted file
inventory/hosts/group_vars/all/mysql_passwords.ymlusing the key patternusername__domain.
Run
- All hosts:
ansible-playbook -i inventory/hosts create_instances.yml --check --diff - With Vault prompt:
--ask-vault-passor with file:--vault-password-file .vault_pass.txt - Limit to one host:
-l sv01.server.ktrion.de
Key files
create_instances.ymlfilters instances per host by resolved alias.inventory/group_vars/all.ymlholds aliases and FQDN mappings.inventory/instance_vars/instances.ymlis the single source of instances.inventory/hosts/group_vars/all/mysql_passwords.ymlcontains vaulted MySQL passwords.inventory/hosts/group_vars/all/mail_passwords.ymlcontains vaulted Mail/IMAP passwords.
Mail passwords (mail_local)
- Add password hashes to
inventory/hosts/group_vars/all/mail_passwords.ymlusing keys:<username>__<domainname>__system<username>__<domainname>__mail
- Hash generation:
- System hash:
openssl passwd -6 - Dovecot hash:
doveadm pw -s SHA512-CRYPT
- System hash:
- Edit via Vault:
ansible-vault edit inventory/hosts/group_vars/all/mail_passwords.yml - Script to set a mail password (Vault required):
scripts/set_mail_password.sh <username> <domain> [password]- Optional:
FILE=inventory/hosts/group_vars/all/mail_passwords.yml
Contributing
- Keep playbooks idempotent and use FQCN modules (
ansible.builtin.*). - Validate with
--check --diff; lint withansible-lintandyamllintif available.