361 lines
16 KiB
YAML
361 lines
16 KiB
YAML
---
|
|
# Set up directory and files for specifying software needs rather than using hosts file.
|
|
|
|
- name: General | Account Management | Provisioning Configuration | Variables 1
|
|
set_fact:
|
|
prov_dir: "/usr/local/etc/hyperling-scm"
|
|
provision_variables: []
|
|
|
|
- name: General | Account Management | Provisioning Configuration | Variables 2
|
|
set_fact:
|
|
gen_file: "{{ prov_dir }}/general.ini"
|
|
wrk_file: "{{ prov_dir }}/workstation.ini"
|
|
mnr_file: "{{ prov_dir }}/miner.ini"
|
|
srv_file: "{{ prov_dir }}/server.ini"
|
|
|
|
- name: General | Account Management | Provisioning Configuration | Create Directory
|
|
file:
|
|
path: "{{ prov_dir }}"
|
|
state: directory
|
|
mode: '0755'
|
|
|
|
|
|
## General ##
|
|
|
|
- name: General | Account Management | Provisioning Configuration | General | Create
|
|
blockinfile:
|
|
path: "{{ gen_file }}"
|
|
block: |
|
|
; Please note that all potions require lowercase keys and values.
|
|
;
|
|
;;;;;;;;;;;;;;;;;;;; Basic Options ;;;;;;;;;;;;;;;;;;;;
|
|
;
|
|
; enable : Provide true for the provision to occur.
|
|
; Default: false
|
|
;
|
|
; user : Provide the name of the user account.
|
|
; Example: tom, jerry, kim, sarah
|
|
; Default: ling
|
|
;
|
|
; user_desc : Provide the description of the user account.
|
|
; Example: Thomas, Jerry, Kimberly, Sarah
|
|
; Default: Hyperling
|
|
;
|
|
; sshd_port : Determine the port which SSHD should listen on.
|
|
; Example: 12345
|
|
; Default: 22
|
|
;
|
|
; pentesting : Set to true to install tools such as metasploit.
|
|
; nmap is already provided for reporting
|
|
; Default: false
|
|
;
|
|
;;;;;;;;;;;;;;;;;;;; Git Polling ;;;;;;;;;;;;;;;;;;;;
|
|
;
|
|
; For syncing this machine to a Git repository of this Ansible project
|
|
; in this fashion: ssh://git@GIT_HOST:GIT_SSH_PORT/GIT_USER/GIT_PROJECT
|
|
;
|
|
; branch : Branch to use on this machine.
|
|
; Example: main, dev, prod
|
|
; Default: main
|
|
;
|
|
; git_host : Provide the git host that the machine should poll.
|
|
; Example: github.com, gitlab.com. gitea.com
|
|
; Default: git.hyperling.com
|
|
;
|
|
; git_ssh_port : Port of the server host to use for SSH requests.
|
|
; Example: 22, 222, 2222
|
|
; Default: 22
|
|
;
|
|
; git_user : Provide the git user which projects are found under.
|
|
; Example: Hyperling, JimBobMcGeeJr
|
|
; Default: me
|
|
;
|
|
; git_project : Name of this project on the server host.
|
|
; Example: Ansible, ansible-setup, my-env
|
|
; Default: env-ansible
|
|
;
|
|
;;;;;;;;;;;;;;;;;;;; Swap File ;;;;;;;;;;;;;;;;;;;;
|
|
;
|
|
; swap_block : Set to the block size if dd should create a swapfile.
|
|
; Preferably keep this under 2G for integrity sakes, the
|
|
; value is multiplied by count if you need a larger file.
|
|
; Example: 500M, 512MB, 1G
|
|
; Default: false
|
|
;
|
|
; swap_count : Set to the number of blocks to multiply the file size by.
|
|
; Example: 8
|
|
; Default: 1
|
|
;
|
|
; swap_file : Set to the name and location of where the file should be.
|
|
; Example: /usr/local/swap
|
|
; Default: /swapfile
|
|
;
|
|
;;;;;;;;;;;;;;;;;;;; Sync Frequency ;;;;;;;;;;;;;;;;;;;;
|
|
;
|
|
; no_telem : Set to true to avoid setting up telemetry services.
|
|
; Disables GitHub updates to this project.
|
|
; Disables all telegraf pings.
|
|
; Default: false
|
|
;
|
|
; battery : Set to true to attempt to save battery life.
|
|
; Slows down the rate of services such as telegraf and cron.
|
|
; Default: false
|
|
;
|
|
[global]
|
|
marker: '; {mark} MANAGED BY ANSIBLE | Generic Config'
|
|
state: present
|
|
create: yes
|
|
backup: yes
|
|
|
|
- name: General | Account Management | Provisioning Configuration | General | Load
|
|
set_fact:
|
|
provision: "{{ lookup('ini', 'enable file={{gen_file}} default=false') }}"
|
|
user: "{{ lookup('ini', 'user file={{gen_file}} default=ling') }}"
|
|
user_desc: "{{ lookup('ini', 'user_desc file={{gen_file}} default=Hyperling') }}"
|
|
branch: "{{ lookup('ini', 'branch file={{gen_file}} default=main') }}"
|
|
pentesting: "{{ lookup('ini', 'pentesting file={{gen_file}} default=false') }}"
|
|
no_telem: "{{ lookup('ini', 'no_telem file={{gen_file}} default=false') }}"
|
|
battery: "{{ lookup('ini', 'battery file={{gen_file}} default=false') }}"
|
|
swap_block: "{{ lookup('ini', 'swap_block file={{gen_file}} default=false') }}"
|
|
swap_count: "{{ lookup('ini', 'swap_count file={{gen_file}} default=1') }}"
|
|
swap_file: "{{ lookup('ini', 'swap_file file={{gen_file}} default=/swapfile') }}"
|
|
sshd_port: "{{ lookup('ini', 'sshd_port file={{gen_file}} default=22') }}"
|
|
git_host: "{{ lookup('ini', 'git_host file={{gen_file}} default=git.hyperling.com') }}"
|
|
git_user: "{{ lookup('ini', 'git_user file={{gen_file}} default=me') }}"
|
|
git_project: "{{ lookup('ini', 'git_project file={{gen_file}} default=env-ansible') }}"
|
|
git_ssh_port: "{{ lookup('ini', 'git_ssh_port file={{gen_file}} default=22') }}"
|
|
|
|
- name: General | Account Management | Provisioning Configuration | General | List
|
|
set_fact:
|
|
provision_variables: "{{ provision_variables | combine(item) }}"
|
|
loop:
|
|
- { 'provision': "{{ provision }}" }
|
|
- { 'user': "{{ user }}" }
|
|
- { 'user_desc': "{{ user_desc }}" }
|
|
- { 'branch': "{{ branch }}" }
|
|
- { 'pentesting': "{{ pentesting }}" }
|
|
- { 'no_telem': "{{ no_telem }}" }
|
|
- { 'battery': "{{ battery }}" }
|
|
- { 'swap_block': "{{ swap_block }}" }
|
|
- { 'swap_count': "{{ swap_count }}" }
|
|
- { 'swap_file': "{{ swap_file }}" }
|
|
- { 'sshd_port': "{{ sshd_port }}" }
|
|
- { 'git_host': "{{ git_host }}" }
|
|
- { 'git_user': "{{ git_user }}" }
|
|
- { 'git_project': "{{ git_project }}" }
|
|
- { 'git_ssh_port': "{{ git_ssh_port }}" }
|
|
|
|
|
|
## Workstation ##
|
|
|
|
- name: General | Account Management | Provisioning Configuration | Workstation | Create
|
|
blockinfile:
|
|
path: "{{ wrk_file }}"
|
|
block: |
|
|
;;;;;;; Available options - all require lowercase values ;;;;;;
|
|
;
|
|
; enable : Set to true for system to be considered a workstation.
|
|
;
|
|
; coding : Set to true for installation of code editors (VSCode, PyCharm, Android Studio)
|
|
;
|
|
; editing : Set to true for installation of Audio/Video editors (Shotcut, Audacity, OBS Stdio, GIMP)
|
|
;
|
|
; gaming : Set to true for installation of gaming software (Steam, Lutris)
|
|
;
|
|
; rdp : Set to true for installation of RDP protocol
|
|
; CURRENTLY FREEBSD-ONLY
|
|
;
|
|
; vnc : Set to true for installation of VNC protocol
|
|
; UNFINISHED/UNTESTED
|
|
;
|
|
; bsd_gpu : Set to [] to install GPU driver
|
|
; Example: amdgpu
|
|
;
|
|
; mobile : Set to true if not using an amd64 processor.
|
|
; Also used to disable tasks not helpful for Pinephone.
|
|
;
|
|
[global]
|
|
marker: '; {mark} MANAGED BY ANSIBLE | Workstation Config'
|
|
state: present
|
|
create: yes
|
|
backup: yes
|
|
|
|
- name: General | Account Management | Provisioning Configuration | Workstation | Load
|
|
set_fact:
|
|
workstation: "{{ lookup('ini', 'enable file={{wrk_file}} default=false') }}"
|
|
coding: "{{ lookup('ini', 'coding file={{wrk_file}} default=false') }}"
|
|
editing: "{{ lookup('ini', 'editing file={{wrk_file}} default=false') }}"
|
|
gaming: "{{ lookup('ini', 'gaming file={{wrk_file}} default=false') }}"
|
|
rdp: "{{ lookup('ini', 'rdp file={{wrk_file}} default=false') }}"
|
|
vnc: "{{ lookup('ini', 'vnc file={{wrk_file}} default=false') }}"
|
|
bsd_gpu: "{{ lookup('ini', 'bsd_gpu file={{wrk_file}} default=false') }}"
|
|
mobile: "{{ lookup('ini', 'mobile file={{wrk_file}} default=false') }}"
|
|
|
|
- name: General | Account Management | Provisioning Configuration | Workstation | List
|
|
set_fact:
|
|
provision_variables: "{{ provision_variables | combine(item) }}"
|
|
loop:
|
|
- { 'workstation': "{{ workstation }}" }
|
|
- { 'coding': "{{ coding }}" }
|
|
- { 'editing': "{{ editing }}" }
|
|
- { 'gaming': "{{ gaming }}" }
|
|
- { 'rdp': "{{ rdp }}" }
|
|
- { 'vnc': "{{ vnc }}" }
|
|
- { 'bsd_gpu': "{{ bsd_gpu }}" }
|
|
- { 'mobile': "{{ mobile }}" }
|
|
|
|
# No longer mining, this is now considered deprecated.
|
|
### Miner ##
|
|
#
|
|
#- name: General | Account Management | Provisioning Configuration | Miner | Create
|
|
# blockinfile:
|
|
# path: "{{ mnr_file }}"
|
|
# block: |
|
|
# ;;;;;;; Available options - all require lowercase values ;;;;;;
|
|
# ;
|
|
# ; enable : Set to true for system to be considered a miner.
|
|
# ;
|
|
# ; amdgpu : Set to true for installation of AMDGPU-Pro drivers on Ubuntu (20.04 preferred)
|
|
# ;
|
|
# ; nanominer : Set to true for installation of nanominer
|
|
# ;
|
|
# ; nanominer_cpu : Set to coin code that you'd like the CPU to work on
|
|
# ; Valid values: xmr
|
|
# ;
|
|
# ; nanominer_cpu_pool : Set to pool organization to use for CPU mining
|
|
# ; Valid values: nanopool
|
|
# ;
|
|
# ; nanominer_gpu : Set to coin code that you'd like the GPU to work on
|
|
# ; Valid values: eth
|
|
# ;
|
|
# ; nanominer_gpus : Set to comma list of GPU devices that should be used for nanominer
|
|
# ; Example: 0,2,3
|
|
# ;
|
|
# ; nanominer_gpu_pool : Set to pool organization to use for GPU mining
|
|
# ; Valid values: nanopool etherpool f2pool
|
|
# ;
|
|
# ; eth_minhashrate : Set to minimum hashrate over 10 minutes before restarting. Can accept M for Million and K for thousand.
|
|
# ; Example: 100K
|
|
# ;
|
|
# ; ethminer : Set to true for installation of ethminer
|
|
# ; UNFINISHED/UNTESTED
|
|
# ;
|
|
# ; nvidia : Set to true for NVidia support in ethminer.
|
|
# ; UNFINISHED/UNTESTED
|
|
# ;
|
|
# ; xmr_stak_cpu : Set to true for istallation
|
|
# ; UNFINISHED/UNTESTED
|
|
# ;
|
|
# [global]
|
|
# marker: '; {mark} MANAGED BY ANSIBLE | Miner Config'
|
|
# state: present
|
|
# create: yes
|
|
# backup: yes
|
|
#
|
|
#- name: General | Account Management | Provisioning Configuration | Miner | Load
|
|
# set_fact:
|
|
# miner: "{{ lookup('ini', 'enable file={{mnr_file}} default=false') }}"
|
|
# amdgpu: "{{ lookup('ini', 'amdgpu file={{mnr_file}} default=false') }}"
|
|
# nanominer: "{{ lookup('ini', 'nanominer file={{mnr_file}} default=false') }}"
|
|
# nanominer_cpu: "{{ lookup('ini', 'nanominer_cpu file={{mnr_file}} default=false') }}"
|
|
# nanominer_cpu_pool: "{{ lookup('ini', 'nanominer_cpu_pool file={{mnr_file}} default=false') }}"
|
|
# nanominer_gpu: "{{ lookup('ini', 'nanominer_gpu file={{mnr_file}} default=false') }}"
|
|
# nanominer_gpus: "{{ lookup('ini', 'nanominer_gpus file={{mnr_file}} default=false') }}"
|
|
# nanominer_gpu_pool: "{{ lookup('ini', 'nanominer_gpu_pool file={{mnr_file}} default=false') }}"
|
|
# eth_minhashrate: "{{ lookup('ini', 'eth_minhashrate file={{mnr_file}} default=false') }}"
|
|
# ethminer: "{{ lookup('ini', 'ethminer file={{mnr_file}} default=false') }}"
|
|
# nvidia: "{{ lookup('ini', 'nvidia file={{mnr_file}} default=false') }}"
|
|
# xmr_stak_cpu: "{{ lookup('ini', 'xmr_stak_cpu file={{mnr_file}} default=false') }}"
|
|
#
|
|
#- name: General | Account Management | Provisioning Configuration | Miner | List
|
|
# set_fact:
|
|
# provision_variables: "{{ provision_variables | combine(item) }}"
|
|
# loop:
|
|
# - { 'miner': "{{ miner }}" }
|
|
# - { 'amdgpu': "{{ amdgpu }}" }
|
|
# - { 'nanominer': "{{ nanominer }}" }
|
|
# - { 'nanominer_cpu': "{{ nanominer_cpu }}" }
|
|
# - { 'nanominer_cpu_pool': "{{ nanominer_cpu_pool }}" }
|
|
# - { 'nanominer_gpu': "{{ nanominer_gpu }}" }
|
|
# - { 'nanominer_gpus': "{{ nanominer_gpus }}" }
|
|
# - { 'nanominer_gpu_pool': "{{ nanominer_gpu_pool }}" }
|
|
# - { 'eth_minhashrate': "{{ eth_minhashrate }}" }
|
|
# - { 'ethminer': "{{ ethminer }}" }
|
|
# - { 'nvidia': "{{ nvidia }}" }
|
|
# - { 'xmr_stak_cpu': "{{ xmr_stak_cpu }}" }
|
|
|
|
|
|
## Server ##
|
|
|
|
- name: General | Account Management | Provisioning Configuration | Server | Create
|
|
blockinfile:
|
|
path: "{{ srv_file }}"
|
|
block: |
|
|
;;;;;;; Parameters ;;;;;;
|
|
;
|
|
; enable : Set to true for system to be considered a server.
|
|
;
|
|
; domain : Set to the domain which gives the server its FQDN.
|
|
; Example: hyperling.com
|
|
;
|
|
; onlyoffice : Set to true for this server to be configured as an OnlyOffice server.
|
|
;
|
|
; grafana : Set to true for this server to be configured as an Grafana web server.
|
|
;
|
|
; influxdb1 : Set to true for this server to be configured as an Influx 1 DB server.
|
|
;
|
|
; influxdb2 : Set to true for this server to be configured as an Influx 2 DB + web server.
|
|
;
|
|
; certbot : Set to true to add cron job for `certbot renew`.
|
|
;
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;
|
|
; Never got these fully working or did not understand how to use them.
|
|
;
|
|
; hugo : Set to true to install HUGO static website generator.
|
|
;
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
[global]
|
|
marker: '; {mark} MANAGED BY ANSIBLE | Server Config'
|
|
state: present
|
|
create: yes
|
|
backup: yes
|
|
|
|
- name: General | Account Management | Provisioning Configuration | Server | Load
|
|
set_fact:
|
|
server: "{{ lookup('ini', 'enable file={{srv_file}} default=false') }}"
|
|
domain: "{{ lookup('ini', 'domain file={{srv_file}} default=hyperling.com') }}"
|
|
onlyoffice: "{{ lookup('ini', 'onlyoffice file={{srv_file}} default=false') }}"
|
|
grafana: "{{ lookup('ini', 'grafana file={{srv_file}} default=false') }}"
|
|
influxdb1: "{{ lookup('ini', 'influxdb1 file={{srv_file}} default=false') }}"
|
|
influxdb2: "{{ lookup('ini', 'influxdb2 file={{srv_file}} default=false') }}"
|
|
certbot: "{{ lookup('ini', 'certbot file={{srv_file}} default=false') }}"
|
|
hugo: "{{ lookup('ini', 'hugo file={{srv_file}} default=false') }}"
|
|
|
|
- name: General | Account Management | Provisioning Configuration | Server | List
|
|
set_fact:
|
|
provision_variables: "{{ provision_variables | combine(item) }}"
|
|
loop:
|
|
- { 'server': "{{ server }}" }
|
|
- { 'domain': "{{ domain }}" }
|
|
- { 'onlyoffice': "{{ onlyoffice }}" }
|
|
- { 'grafana': "{{ grafana }}" }
|
|
- { 'influxdb1': "{{ influxdb1 }}" }
|
|
- { 'influxdb2': "{{ influxdb2 }}" }
|
|
- { 'certbot': "{{ certbot }}" }
|
|
- { 'hugo': "{{ hugo }}" }
|
|
|
|
|
|
## Exit if not turned on yet ##
|
|
|
|
- name: General | Account Management | Provisioning Configuration | Exit Check
|
|
shell: echo "Please configure the config files in {{ prov_dir }} then try again." && exit 1
|
|
when: provision != true
|
|
|
|
|
|
## Display values ##
|
|
|
|
- name: General | Account Management | Provisioning Configuration | Print
|
|
debug:
|
|
var: provision_variables
|