develop
Dave S. 2 years ago
parent 6155f074c8
commit 5878ef2e31
  1. 2
      group_vars/infra.yml.template
  2. 4
      hosts.template
  3. 2
      mappings.yml
  4. 5
      roles/common/tasks/debian.yml
  5. 10
      roles/proxmox/defaults/main.yml
  6. 36
      roles/proxmox/tasks/install.yml
  7. 11
      roles/proxmox/tasks/main.yml
  8. 4
      roles/proxmox/tasks/rproxy.yml
  9. 0
      roles/proxmox/templates/rproxy_nginx.j2
  10. 2
      tasks/includes/role.yml

@ -14,3 +14,5 @@ networks:
gw: 10.0.0.1/16 gw: 10.0.0.1/16
services: services:
mail_server:

@ -5,7 +5,7 @@ all:
ansible: ansible:
ansible_host: 10.0.0.3 ansible_host: 10.0.0.3
ansible_ssh_private_key_file: /etc/ansible/keys/ansible ansible_ssh_private_key_file: /etc/ansible/keys/ansible
container_password: --- host_password: ---
container_id: 100 container_id: 100
container_network: srv container_network: srv
database: {user: 'test', name: 'test', pass: 'test'} database: {user: 'test', name: 'test', pass: 'test'}
@ -15,7 +15,7 @@ all:
hosts: hosts:
node1: node1:
ansible_host: 10.0.0.2 ansible_host: 10.0.0.2
ansible_password: --- host_password: ---
ansible_ssh_extra_args: -o StrictHostKeyChecking=no ansible_ssh_extra_args: -o StrictHostKeyChecking=no
external_ipv4: 1.1.1.1 external_ipv4: 1.1.1.1
primary_role: proxmox primary_role: proxmox

@ -54,7 +54,7 @@
- {stage: 1, role: 'common'} - {stage: 1, role: 'common'}
- {stage: 1, role: 'proxmox', function: 'install'} - {stage: 1, role: 'proxmox', function: 'install'}
- {stage: 5, role: 'mail-user'} - {stage: 5, role: 'mail-user'}
- {stage: 5, role: 'proxmox', function: 'tls'} - {stage: 5, role: 'proxmox', function: 'rproxy'}
- {stage: 6, role: 'proxmox', function: 'mail'} - {stage: 6, role: 'proxmox', function: 'mail'}
rest-server: rest-server:
- {stage: 6, role: 'rest-server', function: 'install'} - {stage: 6, role: 'rest-server', function: 'install'}

@ -13,7 +13,7 @@
apt: apt:
force_apt_get: yes force_apt_get: yes
update_cache: yes update_cache: yes
changed_when: false changed_when: no
- name: ensure apt-show-versions is installed - name: ensure apt-show-versions is installed
@ -27,13 +27,14 @@
shell: shell:
cmd: apt-show-versions --upgradeable cmd: apt-show-versions --upgradeable
register: upgradeable register: upgradeable
changed_when: false changed_when: no
- block: - block:
- name: pause and confirm updates - name: pause and confirm updates
pause: pause:
prompt: "{{ upgradeable.stdout }}" prompt: "{{ upgradeable.stdout }}"
when: interactive | d(true) == true
- name: upgrade all packages - name: upgrade all packages

@ -1 +1,9 @@
cpu_governor: conservative proxmox_default_config:
cpu_governor: conservative
auto_reboot: yes
datacenter:
mac_prefix: "{{ mac_prefix }}"
email_from: "{{ host_name ~ '@' ~ ((mail_server | d({}))['tld'] | d(tld)) }}"
proxmox_default_packages: []

@ -1,29 +1,38 @@
- name: set cpu scheduler in cron - name: install extra proxmox packages
package:
name: "{{ item }}"
loop: "{{ proxmox_default_packages + (proxmox_packages | d([])) }}"
- block:
- name: set cpu scheduler in cron
cron: cron:
name: set cpu scheduler name: set cpu scheduler
special_time: reboot special_time: reboot
job: 'echo {{ cpu_governor | quote }} | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor > /dev/null' job: 'echo {{ proxmox_cfg.cpu_governor | quote }} | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor > /dev/null'
user: root user: root
- block: - block:
- name: get current cpu scheduler types - name: get current cpu scheduler types
shell: shell:
cmd: cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor cmd: cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
register: result register: result
changed_when: false changed_when: no
- name: change cpu scheduler - name: change cpu scheduler
shell: shell:
cmd: 'echo {{ cpu_governor | quote }} | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor' cmd: 'echo {{ proxmox_cfg.cpu_governor | quote }} | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor'
when: (result.stdout_lines | unique | length > 1) or ((result.stdout_lines | unique)[0] != cpu_governor) when: (result.stdout_lines | unique | length > 1) or ((result.stdout_lines | unique)[0] != proxmox_cfg.cpu_governor)
rescue: rescue:
- name: report that cpu scheduler cannot be changed - name: report that cpu scheduler cannot be changed
debug: debug:
msg: failed to change cpu scheduler msg: failed to change cpu scheduler
when: proxmox_cfg.cpu_governor is string
- name: disable enterprise repo - name: disable enterprise repo
apt_repository: apt_repository:
@ -44,17 +53,13 @@
- name: set datacenter configuration - name: set datacenter configuration
lineinfile: lineinfile:
path: /etc/pve/datacenter.cfg path: /etc/pve/datacenter.cfg
regexp: "^{{ item.name }}: " regexp: "^{{ item.key }}: "
line: "{{ item.name }}: {{ item.value }}" line: "{{ item.key }}: {{ item.value }}"
mode: 0640 mode: 0640
owner: root owner: root
group: www-data group: www-data
create: yes create: yes
loop: loop: "{{ proxmox_cfg.datacenter | dict2items }}"
- name: mac_prefix
value: "{{ mac_prefix }}"
- name: email_from
value: "{{ host_name }}@{{ mail_server.tld | d(tld) }}"
- name: enable auto-reboot on kernel panic - name: enable auto-reboot on kernel panic
@ -62,13 +67,14 @@
dest: /etc/sysctl.d/90-auto-reboot.conf dest: /etc/sysctl.d/90-auto-reboot.conf
content: "kernel.panic = 5\n" content: "kernel.panic = 5\n"
mode: 0644 mode: 0644
when: proxmox_cfg.auto_reboot | d(true) == true
- name: set max arc cache size for zfs - name: set max arc cache size for zfs
lineinfile: lineinfile:
path: /etc/modprobe.d/zfs.conf path: /etc/modprobe.d/zfs.conf
regexp: "^options zfs zfs_arc_max=" regexp: "^options zfs zfs_arc_max="
line: "options zfs zfs_arc_max={{ zfs_arc_max }}" line: "options zfs zfs_arc_max={{ proxmox_cfg.zfs_arc_max }}"
create: yes create: yes
mode: 0644 mode: 0644
when: zfs_arc_max is defined when: proxmox_cfg.zfs_arc_max is defined

@ -1,11 +1,16 @@
- name: set proxmox_cfg
set_fact:
proxmox_cfg: "{{ proxmox_default_config | d({}) | combine(proxmox_config | d({}), recursive=true) }}"
- name: proxmox installation - name: proxmox installation
include_tasks: install.yml include_tasks: install.yml
when: function == 'install' when: function == 'install'
- name: proxmox tls configuration - name: proxmox reverse proxy configuration
include_tasks: tls.yml include_tasks: rproxy.yml
when: function == 'tls' when: function == 'rproxy'
- name: proxmox mail configuration - name: proxmox mail configuration

@ -4,8 +4,8 @@
vars: vars:
nginx: nginx:
servers: servers:
- conf: nginx_server - conf: rproxy_nginx
certs: true certs: "{{ host_tls }}"
conf: conf:
http: http:
ssl_conf_command: [] ssl_conf_command: []

@ -7,5 +7,7 @@
- name: include role - name: include role
include_role: include_role:
name: "{{ this_role.role }}" name: "{{ this_role.role }}"
public: "{{ this_role.public | d(false) }}"
tasks_from: "{{ this_role.tasks_from | d(omit) }}"
vars: vars:
function: "{{ this_role.function | d(None) }}" function: "{{ this_role.function | d(None) }}"

Loading…
Cancel
Save