feat: Updates for using pre-defined ansible role
This commit is contained in:
@@ -1 +0,0 @@
|
|||||||
.ansible/group_vars/all
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
---
|
|
||||||
author_name: "Testy McTestface Jr"
|
|
||||||
document_title: "Home Performance Report"
|
|
||||||
company:
|
|
||||||
website: "https://example.com"
|
|
||||||
phone: "555-555-5555"
|
|
||||||
url_display_title: "www.Example.com"
|
|
||||||
|
|
||||||
links:
|
|
||||||
images:
|
|
||||||
logo: "img/logo.png"
|
|
||||||
trueflow: "img/trueflow.png"
|
|
||||||
trueflow_forecast: "img/forecast.png"
|
|
||||||
documents:
|
|
||||||
loads_folder: "https://example.com/path/to/loads/folder"
|
|
||||||
trueflow_file: "https://example.com/path/to/trueflow/file"
|
|
||||||
trueflow_forecast_file: "https://example.com/path/to/trueflow/forecast/file"
|
|
||||||
document_folder: "https://example.com/path/to/document/folder"
|
|
||||||
|
|
||||||
customer:
|
|
||||||
name: "Testy McTestface Sr"
|
|
||||||
address:
|
|
||||||
street: "1234 Seasme Street"
|
|
||||||
city: "No Mans Land"
|
|
||||||
state: "Foo"
|
|
||||||
zip: "55555"
|
|
||||||
|
|
||||||
home:
|
|
||||||
square_feet: "3,000"
|
|
||||||
cfm50: "3,000"
|
|
||||||
lair: "1:1"
|
|
||||||
|
|
||||||
build_dir: "build"
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
---
|
|
||||||
author_name: "{{ vault_author_name }}"
|
|
||||||
document_title: "Home Performance Report"
|
|
||||||
company: "{{ vault_company }}"
|
|
||||||
links:
|
|
||||||
images:
|
|
||||||
logo: "img/logo.png"
|
|
||||||
trueflow: "img/trueflow.png"
|
|
||||||
trueflow_forecast: "img/forecast.png"
|
|
||||||
documents: "{{ vault_document_links }}"
|
|
||||||
|
|
||||||
customer: "{{ vault_customer }}"
|
|
||||||
|
|
||||||
home:
|
|
||||||
square_feet: "3,000"
|
|
||||||
cfm50: "3,000"
|
|
||||||
lair: "1:1"
|
|
||||||
|
|
||||||
build_dir: "build"
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
$ANSIBLE_VAULT;1.1;AES256
|
|
||||||
37616334353636316232656136313764353534613834383266646665396364393233343464306632
|
|
||||||
3834666636616134356661626238323731616438366539630a616565613030376235306233356266
|
|
||||||
34323930656134363964666130613434313262313461373735656434333634333238343430353331
|
|
||||||
3732373966383635310a303665663732343561303239356634393162306666323836643765313638
|
|
||||||
38363130366534353164376333313435336362313438643166346236623537616438383437643965
|
|
||||||
36343833393237336239633433326535616562316561666539343362636564633262303337383631
|
|
||||||
62336331663032333039643033626634663636643762373539623262326462323762666435646362
|
|
||||||
37633538346530646362383464363732663164303937313635363833366639623662323263633431
|
|
||||||
39653434386263353834373239353236636538623632663061323431303937643761373364663835
|
|
||||||
34303030383536383833363639623661363531643734303265386532326439346463376436613033
|
|
||||||
66396536323865623832633663643936623531663734646630373966393562643439343631363365
|
|
||||||
34303833303935313334663831616435343130376536666631643231373333656363386566363865
|
|
||||||
62303062306565363535663261623361646464383166366233396233663838363136663461663630
|
|
||||||
39316234653834393739386564663866613765323333393932616133613231333664373839643364
|
|
||||||
34386335363065336632376135336132633331306435383861303261386564346136323562346432
|
|
||||||
33343132636239396231653832313431623539616434353163333637653738656436646135633666
|
|
||||||
36353266343932666538373137623162316566353437653066346338613732346662313433326261
|
|
||||||
32343164613165383065333738633338653763366534303930656361393031353736643233366631
|
|
||||||
65313931613833633037663631393861663134663239303033323135356130623062333634643331
|
|
||||||
39613761613332613231616437303835333961646235386232306235613664336533666663613834
|
|
||||||
62353237643461316563626538333936333261623039303663613230643962643139353734656630
|
|
||||||
33636136303732376432363862363534646631303566666331373435643532653931376263376665
|
|
||||||
38333037643730613637363832663838383231373765613531316664373334643232326365336531
|
|
||||||
35656433313461633939383661323464373933623963653438323366343661656138653135636235
|
|
||||||
63646135646561663863353236353939636531666166363866656230383931343937343834633263
|
|
||||||
61313338616263616636633232633464643530313763323064343838643036316135353366373933
|
|
||||||
64343235343435313664383630613639633233383766386265383264386133303063396339353731
|
|
||||||
33373631336265303561633663656433643837346438353131383565333062383238633264646532
|
|
||||||
31313931656533313031313032663035356438326365643262313734323661396465393138633564
|
|
||||||
62383166313334376639343265366136396230643236303635303638313833333836636330663262
|
|
||||||
63623434313838376366303763303961373733396163613365376236363233313438393637343064
|
|
||||||
32623233633963623830356331383462666438656132303938386437323332366634656236383664
|
|
||||||
38626539346339663533373062363531393263613636636237616263316537376438653339623435
|
|
||||||
6238656639353432653566353865386562643830333831656336
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Generate Report.
|
|
||||||
hosts: all
|
|
||||||
|
|
||||||
roles:
|
|
||||||
- role: hpa_role
|
|
||||||
54
Makefile
54
Makefile
@@ -1,54 +0,0 @@
|
|||||||
PDF_TITLE ?= "Report.pdf"
|
|
||||||
TEX_TITLE ?= "Report.tex"
|
|
||||||
HTML_TITLE ?= "report.html"
|
|
||||||
BUILD_DIR ?= "${PWD}/build"
|
|
||||||
PDF_TEST_TITLE ?= "Report.test.pdf"
|
|
||||||
ANSIBLE_DIR = ".ansible"
|
|
||||||
|
|
||||||
.PHONY: pdf
|
|
||||||
pdf: ansible
|
|
||||||
@./scripts/gen.sh "${BUILD_DIR}" "${PWD}/${PDF_TITLE}" \
|
|
||||||
&& open "${PDF_TITLE}" \
|
|
||||||
&& osascript ./scripts/notify.scpt
|
|
||||||
|
|
||||||
.PHONY: tex
|
|
||||||
tex: ansible
|
|
||||||
@./scripts/gen.sh "${BUILD_DIR}" "${BUILD_DIR}/${TEX_TITLE}"
|
|
||||||
|
|
||||||
.PHONY: html
|
|
||||||
html: ansible
|
|
||||||
@./scripts/gen.sh "${BUILD_DIR}" "${BUILD_DIR}/${HTML_TITLE}" \
|
|
||||||
&& open "${BUILD_DIR}/${HTML_TITLE}"
|
|
||||||
|
|
||||||
.PHONY: ansible
|
|
||||||
ansible:
|
|
||||||
@cd "${ANSIBLE_DIR}" && \
|
|
||||||
ansible-playbook playbook.yaml \
|
|
||||||
--extra-vars "build_dir=${BUILD_DIR}"
|
|
||||||
|
|
||||||
.PHONY: ansible-vault-example
|
|
||||||
ansible-vault-example:
|
|
||||||
@cd "${ANSIBLE_DIR}" && \
|
|
||||||
ansible-playbook playbook.yaml \
|
|
||||||
--ask-vault-password \
|
|
||||||
--extra-vars "build_dir=${BUILD_DIR}" \
|
|
||||||
--extra-vars "@group_vars/vault_example/vars.yaml" \
|
|
||||||
--extra-vars "@group_vars/vault_example/vault.yaml"
|
|
||||||
|
|
||||||
.PHONY: setup
|
|
||||||
setup:
|
|
||||||
@ln -sfv "${ANSIBLE_DIR}/roles/report/templates/Report.md"
|
|
||||||
@ln -sfv "${ANSIBLE_DIR}/group_vars/all" ./vars
|
|
||||||
|
|
||||||
.PHONY: clean
|
|
||||||
clean:
|
|
||||||
@rm -rf "${BUILD_DIR}"
|
|
||||||
|
|
||||||
.PHONY: install
|
|
||||||
install:
|
|
||||||
@brew install pandoc \
|
|
||||||
mactex-no-gui \
|
|
||||||
imagemagick \
|
|
||||||
gettext \
|
|
||||||
ansible \
|
|
||||||
just
|
|
||||||
48
justfile
48
justfile
@@ -1,5 +1,7 @@
|
|||||||
build_dir_name := ".build"
|
build_dir_name := ".build"
|
||||||
ansible_dir := ".ansible"
|
ansible_dir := "playbook"
|
||||||
|
vars_file := "vars.yml"
|
||||||
|
vault_file := "vault.yml"
|
||||||
|
|
||||||
[private]
|
[private]
|
||||||
default:
|
default:
|
||||||
@@ -17,25 +19,22 @@ run_pandoc dir output_file: build
|
|||||||
[private]
|
[private]
|
||||||
run_ansible build *ARGS:
|
run_ansible build *ARGS:
|
||||||
@echo "Running ansible with build directory: {{build}}"
|
@echo "Running ansible with build directory: {{build}}"
|
||||||
@cd {{ansible_dir}} && \
|
cd {{ansible_dir}} && \
|
||||||
ansible-playbook playbook.yaml \
|
ansible-playbook playbook.yml \
|
||||||
--extra-vars '{"config": { "work_dir": {{justfile_directory()}}, "build_dir": {{build}} }}' \
|
--inventory inventory.ini \
|
||||||
|
--extra-vars "work_dir={{justfile_directory()}}" \
|
||||||
|
--extra-vars "build_dir={{build}}" \
|
||||||
{{ARGS}}
|
{{ARGS}}
|
||||||
|
|
||||||
alias ansible := build
|
alias ansible := build
|
||||||
|
|
||||||
# Run the playbook, using the vault example files.
|
|
||||||
[group("build")]
|
|
||||||
ansible-vault-example: (
|
|
||||||
run_ansible build_dir_name
|
|
||||||
"--extra-vars @group_vars/vault_example/vars.yaml"
|
|
||||||
"--extra-vars @group_vars/vault_example/vault.yaml"
|
|
||||||
"--ask-vault-password"
|
|
||||||
)
|
|
||||||
|
|
||||||
# Run the playbook, which generates files required to build a report.
|
# Run the playbook, which generates files required to build a report.
|
||||||
[group("build")]
|
[group("build")]
|
||||||
build: (run_ansible justfile_directory()/build_dir_name)
|
build *ARGS: (
|
||||||
|
run_ansible justfile_directory()/build_dir_name
|
||||||
|
"--tags build"
|
||||||
|
ARGS
|
||||||
|
)
|
||||||
|
|
||||||
# Build & generate an HTML report.
|
# Build & generate an HTML report.
|
||||||
[group("generate")]
|
[group("generate")]
|
||||||
@@ -56,7 +55,7 @@ pdf title="Report.pdf" output_dir="${PWD}": (run_pandoc output_dir file_stem(tit
|
|||||||
tex title="Report.tex" output_dir=".build": (run_pandoc output_dir file_stem(title) + ".tex")
|
tex title="Report.tex" output_dir=".build": (run_pandoc output_dir file_stem(title) + ".tex")
|
||||||
@echo "Wrote to: " + {{output_dir}}/{{file_stem(title)}} + ".tex"
|
@echo "Wrote to: " + {{output_dir}}/{{file_stem(title)}} + ".tex"
|
||||||
|
|
||||||
# Setup the working directory
|
# Setup the working directory, setup tags see: `https://git.housh.dev/michael/ansible-role-hpa#setup-tags`
|
||||||
[group("setup")]
|
[group("setup")]
|
||||||
setup tag='setup': (
|
setup tag='setup': (
|
||||||
run_ansible justfile_directory()/build_dir_name "--tags " + tag
|
run_ansible justfile_directory()/build_dir_name "--tags " + tag
|
||||||
@@ -64,7 +63,19 @@ setup tag='setup': (
|
|||||||
|
|
||||||
# Setup the working directory with ansible-vault.
|
# Setup the working directory with ansible-vault.
|
||||||
[group("setup")]
|
[group("setup")]
|
||||||
setup-vault: (setup "setup-with-vault")
|
setup-vault: (setup "setup-with-vault")(encrypt-vault)
|
||||||
|
|
||||||
|
# Encrypt the vault file, pass in --ask-vault-pass if no default password file is set.
|
||||||
|
[group("setup")]
|
||||||
|
[group("utlities")]
|
||||||
|
encrypt-vault *ARGS:
|
||||||
|
@ansible-vault encrypt {{vault_file}} {{ARGS}}
|
||||||
|
|
||||||
|
# Edit the vault file, pass in --ask-vault-pass if no default password file is set.
|
||||||
|
[group("utlities")]
|
||||||
|
edit-vault *ARGS:
|
||||||
|
@ansible-vault edit {{vault_file}} {{ARGS}}
|
||||||
|
|
||||||
|
|
||||||
# Removes build directory, useful when debugging.
|
# Removes build directory, useful when debugging.
|
||||||
[group("utilities")]
|
[group("utilities")]
|
||||||
@@ -79,9 +90,12 @@ clean-all: clean-build-dir
|
|||||||
@rm -f ./Report.{md,pdf}
|
@rm -f ./Report.{md,pdf}
|
||||||
@rm -f vars.{yml,yaml}
|
@rm -f vars.{yml,yaml}
|
||||||
@rm -f vault.{yml,yaml}
|
@rm -f vault.{yml,yaml}
|
||||||
|
@rm -f Definitions.md
|
||||||
|
@rm -f {footer,head}.tex
|
||||||
|
@rm -f {{ansible_dir}}/group_vars/all/{vars,vault}.{yml,yaml}
|
||||||
|
|
||||||
|
|
||||||
# Install the required ansible roles.
|
# Install the required ansible roles.
|
||||||
[group("utilities")]
|
[group("utilities")]
|
||||||
install-requirements:
|
install-requirements:
|
||||||
@ansible-galaxy install -r ./.ansible/requirements.yaml
|
@ansible-galaxy install -r {{ansible_dir}}/requirements.yml
|
||||||
|
|||||||
0
playbook/group_vars/all/.gitkeep
Normal file
0
playbook/group_vars/all/.gitkeep
Normal file
25
playbook/playbook.yml
Normal file
25
playbook/playbook.yml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
- name: Generate Report.
|
||||||
|
hosts: all
|
||||||
|
roles:
|
||||||
|
- role: hpa_role
|
||||||
|
tasks:
|
||||||
|
- name: Link vars file.
|
||||||
|
ansible.builtin.file:
|
||||||
|
src: "{{ work_dir }}/vars.yml"
|
||||||
|
dest: "{{ work_dir }}/playbook/group_vars/all/vars.yml"
|
||||||
|
state: link
|
||||||
|
tags:
|
||||||
|
- setup
|
||||||
|
- setup-all
|
||||||
|
- setup-all-with-vault
|
||||||
|
- setup-with-vault
|
||||||
|
|
||||||
|
- name: Link vault file.
|
||||||
|
ansible.builtin.file:
|
||||||
|
src: "{{ work_dir }}/vault.yml"
|
||||||
|
dest: "{{ work_dir }}/playbook/group_vars/all/vault.yml"
|
||||||
|
state: link
|
||||||
|
tags:
|
||||||
|
- setup-all-with-vault
|
||||||
|
- setup-with-vault
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
- name: hpa_role
|
- name: hpa_role
|
||||||
src: git+https://git.housh.dev/michael/ansible-role-hpa
|
src: git+https://git.housh.dev/michael/ansible-role-hpa
|
||||||
version: v0.1.0
|
version: main
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
---
|
|
||||||
vault_author_name: "Testy McTestface Jr"
|
|
||||||
|
|
||||||
vault_company:
|
|
||||||
website: "https://example.com"
|
|
||||||
phone: "555-555-5555"
|
|
||||||
url_display_title: "www.Example.com"
|
|
||||||
|
|
||||||
vault_document_links:
|
|
||||||
loads_folder: "https://example.com/path/to/loads/folder"
|
|
||||||
trueflow_file: "https://example.com/path/to/trueflow/file"
|
|
||||||
trueflow_forecast_file: "https://example.com/path/to/trueflow/forecast/file"
|
|
||||||
document_folder: "https://example.com/path/to/document/folder"
|
|
||||||
|
|
||||||
vault_customer:
|
|
||||||
name: "Testy McTestface Sr"
|
|
||||||
address:
|
|
||||||
street: "1234 Seasme Street"
|
|
||||||
city: "No Mans Land"
|
|
||||||
state: "Foo"
|
|
||||||
zip: "55555"
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
local build_dir=${1:-"${PWD}/build"}
|
|
||||||
local output_file=${2:-"${PWD}/Report.md"}
|
|
||||||
|
|
||||||
echo "Starting with build dir: ${build_dir}"
|
|
||||||
|
|
||||||
pandoc --pdf-engine=xelatex \
|
|
||||||
-H "${build_dir}/head.tex" \
|
|
||||||
-H "${build_dir}/footer.tex" \
|
|
||||||
-o "${output_file}" \
|
|
||||||
"${build_dir}/Report.md" \
|
|
||||||
"${build_dir}/Definitions.md"
|
|
||||||
|
|
||||||
echo "Wrote report to: ${output_file}"
|
|
||||||
Reference in New Issue
Block a user