142 Commits

Author SHA1 Message Date
Jon
694b3209f2 feat(centurion): add ansible collection centurion
!1
2024-07-30 18:25:33 +09:30
Jon
4f9fc48eaa feat(centurion_erp): rename doc path
nofusscomputing/projects/centurion_erp#74 closes #18
2024-07-10 03:41:11 +09:30
Jon
2eb7870e57 Merge branch 'automated-tasks' into 'development'
chore(website-template): Automated update of git sub-module

See merge request nofusscomputing/infrastructure/website!63
2024-06-30 18:18:33 +00:00
Jon
433770ffa3 fix: build docs on api trigger
!63
2024-07-01 03:45:10 +09:30
e649d7e711 chore(git): updated submodule website-template
Automation Data:
{
    "branch": "development",
    "current_commit": "67ca423aaa61fc6f6901459973c12b191abc328d)",
    "name": "website-template",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/website-template",
    "remote_head": "8735f623dc5e1d9c9e46e50db03b4c41cb3d1efd)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/infrastructure/website-template.git"
}

Changes: Submodule path website-template: checked out 8735f623dc5e1d9c9e46e50db03b4c41cb3d1efd

MR !63
2024-06-30 18:03:33 +00:00
Jon
5f59921c70 Merge branch 'feat-django-itsm' into 'development'
feat: django itsm

See merge request nofusscomputing/infrastructure/website!62
2024-06-17 07:49:38 +00:00
Jon
4efb97b728 chore: update git submodules to current heads
!62 nofusscomputing/projects/django_template!27
2024-06-17 17:13:47 +09:30
Jon
20726d1712 feat(project): add django itsm docs
!62 nofusscomputing/projects/django_template!27
2024-06-17 17:08:38 +09:30
Jon
bf732b3238 feat: publish netbox collection docs
nofusscomputing/projects/ansible/collections/netbox!5
2024-04-09 16:37:53 +09:30
Jon
e415c4f112 feat(project): add docker bind
!60
2024-03-20 14:31:55 +09:30
Jon
e0ca7c7a25 fix(firewall): remove link from ansible roles
!60
2024-03-18 22:54:47 +09:30
Jon
03f88d7300 feat(firewall): fix nav
!60
2024-03-18 22:50:47 +09:30
Jon
acf5d9fe58 feat(firewall): add project to nav
!60
2024-03-18 22:44:07 +09:30
Jon
b22bde4f61 feat(firewall): update project path
!60
2024-03-16 21:33:48 +09:30
Jon
1eb98c187b Merge branch 'collection_ansible' into 'development'
feat: restructure kube role to collection

See merge request nofusscomputing/infrastructure/website!61
2024-03-13 10:57:01 +00:00
Jon
3458e89ee0 feat(kubernetes_collection): restructured from role to collection
!61 nofusscomputing/projects/ansible/kubernetes!37
2024-03-13 20:19:54 +09:30
Jon
3b8a8b8e9e fix(ci): ensure for non dev/master build is avail for pages
!60
2024-03-12 14:30:49 +09:30
Jon
b2afb094bb fix(ci): dont attempt to move sub-project docs if not exist
!60
2024-03-12 14:21:29 +09:30
Jon
deb01d8774 fix(ci): pages dep is also build
!60
2024-03-12 14:15:05 +09:30
Jon
2bcf3c99a7 fix(ci): pages only requires merge job on merge
!60
2024-03-12 14:11:05 +09:30
Jon
9533f47a3b Merge branch 'matrix-assemble' into 'development'
fix: merge docs

See merge request nofusscomputing/infrastructure/website!59
2024-02-22 03:44:38 +00:00
Jon
c15f2e0ea9 fix: merge docs
!59
2024-02-22 13:13:50 +09:30
Jon
a6bff682c2 Merge branch 'matrix-assemble' into 'development'
fix: mkdir

See merge request nofusscomputing/infrastructure/website!58
2024-02-21 12:40:57 +00:00
Jon
c59a0f6b7f fix: mkdir
!58
2024-02-21 22:10:07 +09:30
Jon
fa93149ac6 Merge branch 'matrix-assemble' into 'development'
fix: use correct path

See merge request nofusscomputing/infrastructure/website!57
2024-02-21 12:32:20 +00:00
Jon
bbccb0260a fix: prepare built site and dir structure
!57
2024-02-21 22:01:22 +09:30
Jon
80cfabbbb7 refactor: dont use stage name dirs
!57
2024-02-21 21:57:21 +09:30
Jon
99d5cd36e3 fix: no trailing slant for paths
!57
2024-02-21 21:52:10 +09:30
Jon
f5def60091 fix: use correct path
!57
2024-02-21 21:50:32 +09:30
Jon
f87051432c Merge branch 'matrix-assemble' into 'development'
fix: run the echo'ed commands

See merge request nofusscomputing/infrastructure/website!56
2024-02-21 12:18:25 +00:00
Jon
3481b1229b fix: run the echo'ed commands
!56
2024-02-21 21:47:33 +09:30
Jon
33c4f17324 Merge branch 'matrix-assemble' into 'development'
fix: ensure fetch project job creates directory

See merge request nofusscomputing/infrastructure/website!55
2024-02-21 12:10:21 +00:00
Jon
4b666a5c04 fix: ensure fetch project job creates directory
!55
2024-02-21 21:38:31 +09:30
Jon
e12b0a1ef3 Merge branch 'matrix-assemble' into 'development'
feat: Matrix assemble

See merge request nofusscomputing/infrastructure/website!54
2024-02-21 12:05:26 +00:00
Jon
7a4161e2a2 refactor(project_docs): use matrix job to assemble site
!54
2024-02-21 21:33:40 +09:30
Jon
6692e90318 Merge branch '17-php-ipam-scan-agent' into 'development'
fix(phpipam_scan_agent): use correct path when assembling site again.

See merge request nofusscomputing/infrastructure/website!53
2024-02-21 10:07:27 +00:00
Jon
57b00bc8f7 fix(phpipam_scan_agent): use correct path when assembling site again.
!53
2024-02-21 19:36:34 +09:30
Jon
185d3eec8c Merge branch '17-php-ipam-scan-agent' into 'development'
fix(phpipam_scan_agent): use correct path when assembling site

Closes #17

See merge request nofusscomputing/infrastructure/website!52
2024-02-21 09:27:16 +00:00
Jon
d42f0901ed fix(phpipam_scan_agent): use correct path when assembling site
!51
2024-02-21 18:56:21 +09:30
Jon
c0d589f70a Merge branch '17-php-ipam-scan-agent' into 'development'
feat: Add Ansible Collection phpIPAM Scan Agent for documentation build

Closes #17

See merge request nofusscomputing/infrastructure/website!51
2024-02-21 07:01:56 +00:00
Jon
649055c2e9 refactor: docker nav structure
!51
2024-02-21 16:26:31 +09:30
Jon
e3e8417130 feat(project): add phpIPAM ansible collection project to docs
!51 nofusscomputing/projects/ansible/collections/phpipam_scan_agent!1 nofusscomputing/projects/ansible/collections/phpipam_scan_agent!2 closes #17
2024-02-21 16:18:53 +09:30
Jon
1788673523 Merge branch '16-itil-runbooks' into 'development'
feat: Add project itil runbooks to website deploy

Closes #16

See merge request nofusscomputing/infrastructure/website!50
2024-02-10 05:34:01 +00:00
Jon
809b4457d9 feat(project): add itil runbooks
!50 fixes #16
2024-02-10 14:53:05 +09:30
Jon
955e30ba31 Merge branch 'automated-tasks' into 'development'
chore(website-template): Automated update of git sub-module

See merge request nofusscomputing/infrastructure/website!49
2024-02-10 05:12:53 +00:00
85de8dcd64 chore(git): updated submodule website-template
Automation Data:
{
    "branch": "development",
    "current_commit": "2bcc17652babd4027e7245c6367841e2580ec317)",
    "name": "website-template",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/website-template",
    "remote_head": "f5a82d3604faca56756eec91acee28ff89defd1d)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/infrastructure/website-template.git"
}

Changes: Submodule path website-template: checked out f5a82d3604faca56756eec91acee28ff89defd1d

MR !49
2024-02-08 05:32:01 +00:00
Jon
7d7fd5b4c1 Merge branch 'automated-tasks' into 'development'
chore(website-template): Automated update of git sub-module

See merge request nofusscomputing/infrastructure/website!48
2024-02-02 13:12:17 +00:00
58130b365d chore(git): updated submodule website-template
Automation Data:
{
    "branch": "development",
    "current_commit": "db172f4594391a18883b24768aae531c8245fce0)",
    "name": "website-template",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/website-template",
    "remote_head": "2bcc17652babd4027e7245c6367841e2580ec317)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/infrastructure/website-template.git"
}

Changes: Submodule path website-template: checked out 2bcc17652babd4027e7245c6367841e2580ec317

MR !48
2024-02-02 13:11:24 +00:00
Jon
2eeb1a4cee Merge branch 'mkdocs-update' into 'development'
feat: Mkdocs update

See merge request nofusscomputing/infrastructure/website!44
2024-02-02 08:20:16 +00:00
Jon
4b129fe0f5 chore: manual sub module update for ci
!44
2024-02-02 17:42:19 +09:30
Jon
844cb0cb73 chore: random change to trigger ci
!44
2024-02-02 17:41:26 +09:30
Jon
14a115d984 test: correct ignore link
!44
2024-02-02 17:41:26 +09:30
Jon
4bdf9d6f00 ci: set staging env to correct name
!44
2024-02-02 17:41:26 +09:30
Jon
fc3869798e Merge branch 'automated-tasks' into 'development'
chore(website-template): Automated update of git sub-module

See merge request nofusscomputing/infrastructure/website!46
2024-02-02 08:10:50 +00:00
aba4b88509 chore(git): updated submodule website-template
Automation Data:
{
    "branch": "development",
    "current_commit": "e7af7b52366c78a8b1a61d0c613bf73b83d31551)",
    "name": "website-template",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/website-template",
    "remote_head": "db172f4594391a18883b24768aae531c8245fce0)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/infrastructure/website-template.git"
}

Changes: Submodule path website-template: checked out db172f4594391a18883b24768aae531c8245fce0

MR !46
2024-02-02 08:10:05 +00:00
Jon
020de5681f Merge branch 'automated-tasks' into 'development'
chore(website-template): Automated update of git sub-module

See merge request nofusscomputing/infrastructure/website!45
2024-02-02 08:07:03 +00:00
6c430c9384 chore(git): updated submodule website-template
Automation Data:
{
    "branch": "development",
    "current_commit": "1c1d75d04fbda95badb9996889a64f4b0638640a)",
    "name": "website-template",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/website-template",
    "remote_head": "e7af7b52366c78a8b1a61d0c613bf73b83d31551)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/infrastructure/website-template.git"
}

Changes: Submodule path website-template: checked out e7af7b52366c78a8b1a61d0c613bf73b83d31551

MR !45
2024-02-02 07:41:27 +00:00
a72ceafd34 chore(git): updated submodule website-template
Automation Data:
{
    "branch": "development",
    "current_commit": "59b16501a6b6af046492174c24e1acbe7d971783)",
    "name": "website-template",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/website-template",
    "remote_head": "1c1d75d04fbda95badb9996889a64f4b0638640a)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/infrastructure/website-template.git"
}

Changes: Submodule path website-template: checked out 1c1d75d04fbda95badb9996889a64f4b0638640a

MR !45
2024-02-02 07:32:11 +00:00
Jon
f65a738621 Merge branch 'fix-nav-ansible-ee' into 'development'
fix: nav ansible EE

See merge request nofusscomputing/infrastructure/website!43
2024-01-14 19:31:29 +00:00
Jon
3d484f8dd1 fix(ansible-ee): update nav to match repo
!43 nofusscomputing/projects/ansible/execution_environment!184
2024-01-15 02:49:18 +09:30
Jon
b20906f38a Merge branch 'ansible-playbooks-sop' into 'development'
feat: document the playbook dynamic hosts selection

See merge request nofusscomputing/infrastructure/website!42
2024-01-10 06:41:34 +00:00
Jon
cd8088345e ci: fix default when should always be never
!42
2024-01-10 04:11:01 +09:30
Jon
8b61229d33 ci: only run dependent jobs of parent is successful
!42
2024-01-10 04:04:46 +09:30
Jon
f83c40ca87 fix: ensure ansible_test placeholder exists
!42
2024-01-10 04:01:46 +09:30
Jon
1eaa5c1c68 feat(ansible): update playbook requirements with awx vars
!42
2024-01-10 03:56:45 +09:30
Jon
ba00bf5ba4 Merge branch 'ansible-playbooks-sop' into 'development'
docs: Ansible playbooks sop

See merge request nofusscomputing/infrastructure/website!41
2023-12-16 12:29:08 +00:00
Jon
0e25bc5909 feat(ansible): playbook setup and setting of variables
!41 nofusscomputing/infrastructure/configuration-management/project-production!20 nofusscomputing/infrastructure/configuration-management/playbooks-production!10
2023-12-16 21:46:06 +09:30
Jon
eac92e72fb Merge branch 'fix-git-config-project' into 'development'
fix: git config project

See merge request nofusscomputing/infrastructure/website!40
2023-12-14 04:50:39 +00:00
Jon
4f320158ad fix(git_configuration): update path for docs
!40 nofusscomputing/projects/ansible/git_configuration!129
2023-12-14 14:16:10 +09:30
Jon
5dab342cdb fix(publish): correct artifacts path
!39
2023-12-01 14:41:29 +09:30
Jon
fd515ffea7 fix(publish): ensure job is tagged to select correct runner
!39
2023-12-01 14:14:23 +09:30
Jon
02b6253fb0 Merge branch 'ansible-role-homeassistant' into 'development'
feat: site navigation restructure and k3s deployment

See merge request nofusscomputing/infrastructure/website!38
2023-12-01 04:29:28 +00:00
Jon
b12c53de14 feat(ansible): document inventory_hostname requirement
!38 nofusscomputing/infrastructure/configuration-management/project-production!7
2023-11-30 15:06:17 +09:30
Jon
0303446664 feat(hosting): migrate to new hosting service
changes in config mgmt for new host.

!38 nofusscomputing/infrastructure/configuration-management/project-production!5
2023-11-26 21:26:17 +09:30
Jon
562d89540b ci: remove duplicate jobs
!38
2023-11-20 00:30:13 +09:30
Jon
500d06d4ea fix(unit_test): added an ignore for alive check for pages that are alive, but return 404
!38
2023-11-20 00:21:44 +09:30
Jon
3e5ec4159d fix: edit url
!38
2023-11-20 00:02:51 +09:30
Jon
f517e534e3 chore: update websute-template
!38 nofusscomputing/infrastructure/website-template!12
2023-11-19 23:44:22 +09:30
Jon
2abb7737fe fix(unit_test): 401|403 are valid returns for a link
!38
2023-11-19 23:33:14 +09:30
Jon
9243d1a43e fix: navigation, common
!38
2023-11-19 23:24:47 +09:30
Jon
a94aead136 feat(ansible): added further docs of inventory, specifically templates
!38 nofusscomputing/infrastructure/configuration-management/inventory-production!3
2023-11-19 23:14:13 +09:30
Jon
b52f02548b feat: add project ansible role common
!38
2023-11-16 17:19:33 +09:30
Jon
73b7858a95 feat: add project dns
!38
2023-11-16 17:16:05 +09:30
Jon
46d51faf7d docs(ansible_role): update repo layout to include playbooks as git sub-module
!38
2023-11-10 17:44:24 +09:30
Jon
d720eb238c feat(ansible_roles): added start of role standardization docs.
!38 nofusscomputing/projects/ansible/ansible-roles#22 nofusscomputing/projects/ansible/kubernetes#10 nofusscomputing/projects/ansible/homeassistant#4 nofusscomputing/projects/ansible/firewall#3 nofusscomputing/projects/ansible/git_configuration#23 nofusscomputing/projects/ansible/docker_management#8
2023-11-10 16:38:35 +09:30
Jon
8d206ab64f feat(ansible): add inventory setup
!38
2023-11-04 15:14:58 +09:30
Jon
f88bdc43fe feat(ansible): started documenting ansible
!38
2023-10-30 14:07:59 +09:30
Jon
e0936bd216 chore: updated structure
!38
2023-10-29 14:10:46 +09:30
Jon
49f28a497d feat: add projects firewall, kubernetes and homeassistant
!38
2023-10-28 17:18:33 +09:30
Jon
22801f53d2 feat(project): added project Public Playbooks
!38
2023-10-23 21:57:04 +09:30
Jon
6eef5a07e7 Merge branch 'kubernetes_monitoring' into 'development'
feat(docs): add kubernetes monitoring helm chart project

See merge request nofusscomputing/infrastructure/website!37
2023-09-27 05:33:59 +00:00
Jon
edbac20968 feat(docs): add kubernetes monitoring helm chart project
!37
2023-09-19 17:07:18 +09:30
Jon
550cc08761 Merge branch 'automated-tasks' into 'development'
chore(gitlab-ci): Automated update of git sub-module

See merge request nofusscomputing/infrastructure/website!36
2023-09-02 06:07:27 +00:00
82626a44b8 chore(git): updated submodule gitlab-ci
Automation Data:
{
    "branch": "development",
    "current_commit": "975de7aca210667d1e93d02a4036ca4ae70808ff)",
    "name": "gitlab-ci",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/gitlab-ci",
    "remote_head": "a5a9fa44374107657b2587ce52607d96a825be56)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/projects/gitlab-ci.git"
}

Changes: Submodule path gitlab-ci: checked out a5a9fa44374107657b2587ce52607d96a825be56

MR !36
2023-09-02 06:04:54 +00:00
Jon
ee11fd5795 Merge branch 'project-glpi' into 'development'
fix(docker_glpi): add docks to site structure

See merge request nofusscomputing/infrastructure/website!35
2023-08-30 03:08:57 +00:00
Jon
3255375325 fix(docker_glpi): add docks to site structure
!35
2023-08-30 12:35:20 +09:30
Jon
99e3b211b1 Merge branch 'project-glpi' into 'development'
feat(docker_glpi): add project docs for publishing

See merge request nofusscomputing/infrastructure/website!34
2023-08-30 02:58:58 +00:00
Jon
99ef0e92ae fix(docker_glpi): correct docs path
!33
2023-08-30 12:28:12 +09:30
Jon
23f22158a7 Merge branch 'project-glpi' into 'development'
feat(docker_glpi): add project docs for publishing

See merge request nofusscomputing/infrastructure/website!33
2023-08-30 02:50:44 +00:00
Jon
0f6bcd4701 feat(docker_glpi): add project docs for publishing
!33
2023-08-30 12:19:32 +09:30
Jon
e7c86268ba Merge branch 'ldap-self-service' into 'development'
feat(docs): add project ldap self service

See merge request nofusscomputing/infrastructure/website!32
2023-08-14 16:23:03 +00:00
Jon
6a3683b88c fix(docs): use correct ldap project path
!32
2023-08-15 01:48:35 +09:30
Jon
bffaec612c feat(docs): added project ldap self service
!32
2023-08-15 01:33:06 +09:30
Jon
78175ff62e Merge branch 'new-logo' into 'development'
feat: New logo

See merge request nofusscomputing/infrastructure/website!31
2023-08-05 04:45:00 +00:00
Jon
b6fcde0c9d feat(logo): add new logo
!31
2023-08-05 14:11:46 +09:30
Jon
45649e1ab0 Merge branch 'automated-tasks' into 'development'
chore(gitlab-ci): Automated update of git sub-module

See merge request nofusscomputing/infrastructure/website!29
2023-07-31 20:01:08 +00:00
Jon
c154e234ba Merge branch 'website-launch' into 'development'
chore: website release

See merge request nofusscomputing/infrastructure/website!30
2023-07-31 19:13:57 +00:00
Jon
cfccedde0b test(unit): ignore alive check for nofusscomputing.com
!30
2023-08-01 04:38:03 +09:30
Jon
a1a6131f95 feat(article): site updated and deployed
!30
2023-08-01 04:21:36 +09:30
142c22361b chore(git): updated submodule gitlab-ci
Automation Data:
{
    "branch": "development",
    "current_commit": "ebc3d93304b2cec409dab06205bb5eee372ed597)",
    "name": "gitlab-ci",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/gitlab-ci",
    "remote_head": "975de7aca210667d1e93d02a4036ca4ae70808ff)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/projects/gitlab-ci.git"
}

Changes: Submodule path gitlab-ci: checked out 975de7aca210667d1e93d02a4036ca4ae70808ff

MR !29
2023-07-04 02:05:31 +00:00
27d80c2b74 chore(git): updated submodule gitlab-ci
Automation Data:
{
    "branch": "development",
    "current_commit": "6a3ef23c6191883e5692e5e123e4bac05b49b7c5)",
    "name": "gitlab-ci",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/gitlab-ci",
    "remote_head": "ebc3d93304b2cec409dab06205bb5eee372ed597)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/projects/gitlab-ci.git"
}

Changes: Submodule path gitlab-ci: checked out ebc3d93304b2cec409dab06205bb5eee372ed597

MR !29
2023-06-28 04:33:35 +00:00
Jon
cdc775820f Merge branch 'automated-tasks' into 'development'
chore(gitlab-ci): Automated update of git sub-module

See merge request nofusscomputing/infrastructure/website!28
2023-06-28 04:05:51 +00:00
b19d22b0fc chore(git): updated submodule gitlab-ci
Automation Data:
{
    "branch": "development",
    "current_commit": "fd570fa3df559899fb3706c1ee46f29c33fd6520)",
    "name": "gitlab-ci",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/gitlab-ci",
    "remote_head": "6a3ef23c6191883e5692e5e123e4bac05b49b7c5)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/projects/gitlab-ci.git"
}

Changes: Submodule path gitlab-ci: checked out 6a3ef23c6191883e5692e5e123e4bac05b49b7c5

MR !28
2023-06-28 03:53:39 +00:00
Jon
8a146184ee Merge branch 'automated-tasks' into 'development'
chore(git): Automated update of git sub-modules

See merge request nofusscomputing/infrastructure/website!27
2023-06-28 03:44:57 +00:00
7a29d02d74 chore(git): updated submodule gitlab-ci
Automation Data:
{
    "branch": "development",
    "current_commit": "cf33e1faf185e45bc5f432a9b6768f2f7f89b945)",
    "name": "gitlab-ci",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/gitlab-ci",
    "remote_head": "fd570fa3df559899fb3706c1ee46f29c33fd6520)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/projects/gitlab-ci.git"
}

Changes: Submodule path gitlab-ci: checked out fd570fa3df559899fb3706c1ee46f29c33fd6520

MR !27
2023-06-28 03:43:38 +00:00
Jon
ad71502d36 Merge branch 'automated-tasks' into 'development'
chore(gitlab-ci): Automated update of git sub-module

See merge request nofusscomputing/infrastructure/website!26
2023-06-28 02:00:12 +00:00
a73f9828cc chore(git): updated submodule gitlab-ci
Automation Data:
{
    "branch": "development",
    "current_commit": "1a03324ecc9c7099a3f398170683e1a4cc1d882b)",
    "name": "gitlab-ci",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/gitlab-ci",
    "remote_head": "cf33e1faf185e45bc5f432a9b6768f2f7f89b945)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/projects/gitlab-ci.git"
}

Changes: Submodule path gitlab-ci: checked out cf33e1faf185e45bc5f432a9b6768f2f7f89b945

MR !26
2023-06-28 01:51:16 +00:00
Jon
bb5c50abc7 Merge branch 'automated-tasks' into 'development'
chore(git): Automated update of git sub-modules

See merge request nofusscomputing/infrastructure/website!24
2023-06-08 05:45:00 +00:00
2763eb9c2e chore(git): updated submodule gitlab-ci
Automation Data:
{
    "branch": "development",
    "current_commit": "869faedf5712227a77ca3ed537e689ab12382323)",
    "name": "gitlab-ci",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/gitlab-ci",
    "remote_head": "1a03324ecc9c7099a3f398170683e1a4cc1d882b)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/projects/gitlab-ci.git"
}

Changes: Submodule path gitlab-ci: checked out 1a03324ecc9c7099a3f398170683e1a4cc1d882b

MR !24
2023-06-08 05:43:39 +00:00
Jon
af511923c6 Merge branch 'automated-tasks' into 'development'
chore(git): Automated update of git sub-modules

See merge request nofusscomputing/infrastructure/website!23
2023-06-08 05:42:52 +00:00
da0c0f0583 chore(git): updated submodule gitlab-ci
Automation Data:
{
    "branch": "development",
    "current_commit": "606b19151ecc53b8841f638a30750a36ff655f47)",
    "name": "gitlab-ci",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/gitlab-ci",
    "remote_head": "869faedf5712227a77ca3ed537e689ab12382323)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/projects/gitlab-ci.git"
}

Changes: Submodule path gitlab-ci: checked out 869faedf5712227a77ca3ed537e689ab12382323

MR !23
2023-06-08 05:41:03 +00:00
Jon
4bff3e78cf Merge branch 'automated-tasks' into 'development'
chore(gitlab-ci): Automated update of git sub-module

See merge request nofusscomputing/infrastructure/website!22
2023-06-08 05:22:35 +00:00
470004b152 chore(git): updated submodule gitlab-ci
Automation Data:
{
    "branch": "development",
    "current_commit": "ae8b936c5d6df2d2bda22d89b0a01ee6a77bef16)",
    "name": "gitlab-ci",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/gitlab-ci",
    "remote_head": "606b19151ecc53b8841f638a30750a36ff655f47)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/projects/gitlab-ci.git"
}

Changes: Submodule path gitlab-ci: checked out 606b19151ecc53b8841f638a30750a36ff655f47

MR !22
2023-06-08 05:07:00 +00:00
472298bb2b chore(git): updated submodule gitlab-ci
Automation Data:
{
    "branch": "development",
    "current_commit": "755fcac06e9f265789b02a88eb90df35ab1dbf07)",
    "name": "gitlab-ci",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/gitlab-ci",
    "remote_head": "ae8b936c5d6df2d2bda22d89b0a01ee6a77bef16)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/projects/gitlab-ci.git"
}

Changes: Submodule path gitlab-ci: checked out ae8b936c5d6df2d2bda22d89b0a01ee6a77bef16

MR !22
2023-06-08 03:48:21 +00:00
Jon
47a564f1dd Merge branch 'fix-immediate' into 'development'
feat(ci): add resource groups to build jobs

See merge request nofusscomputing/infrastructure/website!21
2023-06-07 07:52:11 +00:00
Jon
452e5bf697 docs(execution_environment): addded ansible-ee docs
!21
2023-06-07 17:01:25 +09:30
Jon
5730f99080 docs(git_configuration): addded git ansible role docs
!21
2023-06-07 16:46:23 +09:30
Jon
e466b300b5 feat(ci): add resource groups to build jobs
!21
2023-06-07 16:44:50 +09:30
Jon
46f9698c87 Merge branch 'fix-immediate' into 'development'
feat(artifcts): always make available

See merge request nofusscomputing/infrastructure/website!20
2023-06-07 06:53:25 +00:00
Jon
d5b5db5e0b feat(artifcts): always make available
!19 gitlab-org/gitlab#331232 nofusscomputing/projects/gitlab-ci#34
2023-06-07 16:22:30 +09:30
Jon
cbf137dd73 Merge branch 'fix-immediate' into 'development'
feat(artifcts): always make available

See merge request nofusscomputing/infrastructure/website!19
2023-06-07 06:47:35 +00:00
Jon
07ba60e643 feat(artifcts): always make available
!19 gitlab-org/gitlab#331232 nofusscomputing/projects/gitlab-ci#34
2023-06-07 16:14:57 +09:30
Jon
8c75ba1df6 Merge branch 'automated-tasks' into 'development'
chore(git): Automated update of git sub-modules

See merge request nofusscomputing/infrastructure/website!18
2023-06-07 06:33:06 +00:00
f5956740c0 chore(git): updated submodule gitlab-ci
Automation Data:
{
    "branch": "development",
    "current_commit": "e57f7f09085121373ce5ca6a4eb356cb89e53709)",
    "name": "gitlab-ci",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/gitlab-ci",
    "remote_head": "755fcac06e9f265789b02a88eb90df35ab1dbf07)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/projects/gitlab-ci.git"
}

Changes: Submodule path gitlab-ci: checked out 755fcac06e9f265789b02a88eb90df35ab1dbf07

MR !18
2023-06-07 04:13:16 +00:00
33c204ab54 chore(git): updated submodule gitlab-ci
Automation Data:
{
    "branch": "development",
    "current_commit": "e57f7f09085121373ce5ca6a4eb356cb89e53709)",
    "name": "gitlab-ci",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/gitlab-ci",
    "remote_head": "928d625469425c23a1ef15e0e9c06bd00c12f8fe)",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/projects/gitlab-ci.git"
}

Changes: Submodule path gitlab-ci: checked out 928d625469425c23a1ef15e0e9c06bd00c12f8fe

MR !18
2023-06-05 19:09:09 +00:00
Jon
d25e5ffd36 Merge branch 'chore-submodule-update' into 'development'
chore(git): submdoule updated to current HEAD

See merge request nofusscomputing/infrastructure/website!17
2023-06-05 19:08:13 +00:00
Jon
b9adcabe7d chore(git): submdoule updated to current HEAD
!17
2023-06-06 04:35:30 +09:30
Jon
c959146238 Merge branch 'automated-tasks' into 'development'
chore(git): Automated update of git sub-modules

See merge request nofusscomputing/infrastructure/website!15
2023-06-03 05:17:44 +00:00
59095d22c3 chore(git): updated submodule gitlab-ci
Automation Data:
{
    "branch": "development",
    "current_commit": "3e068f98c5fe8dbeabb96aaffa63c392bf83bd0f",
    "name": "gitlab-ci",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/gitlab-ci",
    "remote_head": "6201afaf7e82411af1d0d173d54dffe1d404544a",
    "remote_name": "",
    "url": "https://gitlab.com/nofusscomputing/projects/gitlab-ci.git"
}

Changes: Submodule path gitlab-ci: checked out 6201afaf7e82411af1d0d173d54dffe1d404544a

MR !15
2023-06-03 05:06:00 +00:00
2a675eaf25 chore(git): updated submodule gitlab-ci
Automation Data:
{
    "branch": "development",
    "current_commit": "3e068f98c5fe8dbeabb96aaffa63c392bf83bd0f",
    "name": "gitlab-ci",
    "path": "/builds/nofusscomputing/infrastructure/website/_automation_/gitlab-ci",
    "remote_head": "e9713b31c8e5b30c27331eea23a690194f63394f",
    "remote_name": "origin",
    "url": "https://gitlab.com/nofusscomputing/projects/gitlab-ci.git"
}

Changes: Submodule path gitlab-ci: checked out e9713b31c8e5b30c27331eea23a690194f63394f

MR !15
2023-05-31 05:19:31 +00:00
Jon
2ca3477258 Merge branch 'ci-fixes' into 'development'
ci: Ci fixes

Closes #11

See merge request nofusscomputing/infrastructure/website!14
2023-05-31 03:11:48 +00:00
Jon
4a57845c36 fix(ci): ensure jobs don't run on schedule
!14 fixes #11
2023-05-31 12:33:22 +09:30
33 changed files with 1293 additions and 170 deletions

View File

@ -1,11 +1,13 @@
---
variables:
GIT_SUBMODULE_STRATEGY: recursive
MY_PROJECT_ID: "13001358"
include:
- local: .gitlab/project_docs.gitlab-ci.yml
- project: nofusscomputing/projects/gitlab-ci
ref: development
file:
@ -13,136 +15,309 @@ include:
- template/automagic.gitlab-ci.yaml
Get Project Documentation:
extends: .fetch_project_docs
parallel:
matrix:
- ASSEMBLE_PROJECT_NAME: centurion
ASSEMBLE_PROJECT_ID: 59504579
ASSEMBLE_PROJECT_PATH: projects/ansible/collection/centurion
- ASSEMBLE_PROJECT_NAME: firewall
ASSEMBLE_PROJECT_ID: 51640016
ASSEMBLE_PROJECT_PATH: projects/ansible/collection/firewall
- ASSEMBLE_PROJECT_NAME: django_template
ASSEMBLE_PROJECT_ID: 57560288
ASSEMBLE_PROJECT_PATH: projects/centurion_erp
- ASSEMBLE_PROJECT_NAME: kubernetes
ASSEMBLE_PROJECT_ID: 51640029
ASSEMBLE_PROJECT_PATH: projects/ansible/collection/kubernetes
- ASSEMBLE_PROJECT_NAME: netbox
ASSEMBLE_PROJECT_ID: 56568566
ASSEMBLE_PROJECT_PATH: projects/ansible/collection/netbox
- ASSEMBLE_PROJECT_NAME: phpipam_scan_agent
ASSEMBLE_PROJECT_ID: 55052132
ASSEMBLE_PROJECT_PATH: projects/ansible/collection/phpipam_scan_agent
- ASSEMBLE_PROJECT_NAME: gitlab-ci
ASSEMBLE_PROJECT_ID: 28543717
ASSEMBLE_PROJECT_PATH: projects/gitlab-ci
- ASSEMBLE_PROJECT_NAME: operations
ASSEMBLE_PROJECT_ID: 32419575
ASSEMBLE_PROJECT_PATH: operations
- ASSEMBLE_PROJECT_NAME: git_configuration
ASSEMBLE_PROJECT_ID: 45705596
ASSEMBLE_PROJECT_PATH: projects/ansible/roles/git_configuration
- ASSEMBLE_PROJECT_NAME: docker-bind
ASSEMBLE_PROJECT_ID: 52098058
ASSEMBLE_PROJECT_PATH: projects/docker/bind
- ASSEMBLE_PROJECT_NAME: docker-mail
ASSEMBLE_PROJECT_ID: 33611657
ASSEMBLE_PROJECT_PATH: projects/docker-mail
- ASSEMBLE_PROJECT_NAME: execution_environment
ASSEMBLE_PROJECT_ID: 45741845
ASSEMBLE_PROJECT_PATH: projects/ansible/execution_environment
- ASSEMBLE_PROJECT_NAME: ldap_self_service
ASSEMBLE_PROJECT_ID: 48321671
ASSEMBLE_PROJECT_PATH: projects/ldap_self_service
- ASSEMBLE_PROJECT_NAME: docker-glpi
ASSEMBLE_PROJECT_ID: 12928828
ASSEMBLE_PROJECT_PATH: projects/glpi
- ASSEMBLE_PROJECT_NAME: kubernetes_monitoring
ASSEMBLE_PROJECT_ID: 50510268
ASSEMBLE_PROJECT_PATH: projects/kubernetes_monitoring
- ASSEMBLE_PROJECT_NAME: ansible_playbooks
ASSEMBLE_PROJECT_ID: 46364551
ASSEMBLE_PROJECT_PATH: projects/ansible/playbooks
- ASSEMBLE_PROJECT_NAME: common
ASSEMBLE_PROJECT_ID: 52226103
ASSEMBLE_PROJECT_PATH: projects/ansible/roles/common
- ASSEMBLE_PROJECT_NAME: homeassistant
ASSEMBLE_PROJECT_ID: 51020674
ASSEMBLE_PROJECT_PATH: projects/ansible/roles/homeassistant
- ASSEMBLE_PROJECT_NAME: itil_runbooks
ASSEMBLE_PROJECT_ID: 54680811
ASSEMBLE_PROJECT_PATH: projects/itil/runbooks
# - ASSEMBLE_PROJECT_NAME:
# ASSEMBLE_PROJECT_ID:
# ASSEMBLE_PROJECT_PATH:
Documentation.Lint:
rules:
- when: never
Documentation.Build:
rules:
- when: never
Website.Lint:
extends: .Lint_Markdown_Docs
variables:
MDLINT_PATHS: "pages/*.md pages/**/*.md pages/**/**/*.md pages/**/**/**/*.md pages/**/**/**/**/**/*.md #CHANGELOG.md !gitlab-ci !website-template"
rules:
- if: '$JOB_STOP_LINT_MARKDOWN_DOCS'
when: never
- if: # condition_git_tag
$CI_COMMIT_TAG != null &&
$CI_COMMIT_BRANCH == null
exists:
- '{docs/**,pages/**}/*.md'
when: always
- if: # condition_master_branch_push
$CI_COMMIT_BRANCH == "master" &&
$CI_PIPELINE_SOURCE == "push"
exists:
- '{docs/**,pages/**}/*.md'
when: always
- if: # condition_dev_branch_push
$CI_COMMIT_BRANCH &&
(
$CI_PIPELINE_SOURCE == "api"
||
$CI_PIPELINE_SOURCE == "pipeline"
||
$CI_PIPELINE_SOURCE == "push"
||
$CI_PIPELINE_SOURCE == "schedule"
)
# See nofusscomputing/projects/gitlab-ci#34 for extra $CI_PIPELINE_SOURCE
exists:
- '{docs/**,pages/**}/*.md'
# No changes check # See nofusscomputing/projects/gitlab-ci#34
# changes:
# paths:
# - '{docs/**,pages/**}/*.md'
# compare_to: 'master'
when: always
- if: # condition_not_master_or_dev_push
$CI_COMMIT_BRANCH != "master" &&
$CI_COMMIT_BRANCH != "development" &&
$CI_PIPELINE_SOURCE == "push"
exists:
- '{docs/**,pages/**}/*.md' # works
changes:
paths:
#- '{docs/*,pages/*}*.md'
- '{docs/**,pages/**}/*.md'
compare_to: 'development'
when: always
- when: never
Website.Build:
extends: .MKDocs_Build
needs: [ 'Website.Lint' ]
resource_group: preperation
Assemble.Website.Prepare:
# extends: .MKDocs_Build
stage: prepare
# image: python:3.7.5-buster
# turn mkdocs build template script section to a command template so that customizations can be added.
script:
- mkdir -p "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/source"
# - mkdir -p "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build"
- echo "fetch artifacts from child repo's"
- echo "copy static pages source to" "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/source"
- echo "copy sub-repo source to (merge)" "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/source"
- echo "mkdocs build source dir"
# - mkdir -p "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/full-site"
- mv "$CI_PROJECT_DIR/artifacts/build/Website.Build/build" "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/"
#- ls -laR $CI_PROJECT_DIR
# remove ops placeholder index.html
- echo "[DEBUG] fetch operations docs"
- 'HTTP_STATUS_FILE=$(curl --location -o /dev/null --silent --head --write-out "%{http_code}" --header "PRIVATE-TOKEN: ${GIT_COMMIT_TOKEN}" "https://gitlab.com/api/v4/projects/32419575/jobs/artifacts/development/download?job=Documentation%2EBuild")'
- echo "[DEBUG] HTTP_STATUS_FILE=$HTTP_STATUS_FILE"
- |
if [ "0$HTTP_STATUS_FILE" != "0200" ]; then
echo "[ERROR] Unable to fetch Job Artifacts due to HTTP status of $HTTP_STATUS_FILE";
# exit 1;
else
curl --location --output operations-artifacts.zip --header "PRIVATE-TOKEN: ${GIT_COMMIT_TOKEN}" "https://gitlab.com/api/v4/projects/32419575/jobs/artifacts/development/download?job=Documentation%2EBuild";
unzip operations-artifacts.zip;
rm -Rf "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build/operations/index.html";
cp -rvf "$CI_PROJECT_DIR/artifacts/build/Documentation.Build/build/operations" "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build/";
rm -Rf "$CI_PROJECT_DIR/artifacts/build/Documentation.Build";
fi
- echo "[DEBUG] fetch gitlab-ci project docs"
- 'HTTP_STATUS_FILE=$(curl --location -o /dev/null --silent --head --write-out "%{http_code}" --header "PRIVATE-TOKEN: ${GIT_COMMIT_TOKEN}" "https://gitlab.com/api/v4/projects/28543717/jobs/artifacts/development/download?job=Documentation%2EBuild")'
- echo "[DEBUG] HTTP_STATUS_FILE=$HTTP_STATUS_FILE"
- |
if [ "0$HTTP_STATUS_FILE" != "0200" ]; then
echo "[ERROR] Unable to fetch Job Artifacts due to HTTP status of $HTTP_STATUS_FILE";
# exit 1;
else
curl --location --output gitlab-ci-artifacts.zip --header "PRIVATE-TOKEN: ${GIT_COMMIT_TOKEN}" "https://gitlab.com/api/v4/projects/28543717/jobs/artifacts/development/download?job=Documentation%2EBuild";
unzip gitlab-ci-artifacts.zip;
rm -Rf "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build/projects/gitlab-ci";
cp -rvf "$CI_PROJECT_DIR/artifacts/build/Documentation.Build/build/projects/gitlab-ci" "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build/projects/gitlab-ci/";
rm -Rf "$CI_PROJECT_DIR/artifacts/build/Documentation.Build";
fi
- echo "[DEBUG] fetch docker-mail project docs"
- 'HTTP_STATUS_FILE=$(curl --location -o /dev/null --silent --head --write-out "%{http_code}" --header "PRIVATE-TOKEN: ${GIT_COMMIT_TOKEN}" "https://gitlab.com/api/v4/projects/33611657/jobs/artifacts/development/download?job=Documentation%2EBuild")'
- echo "[DEBUG] HTTP_STATUS_FILE=$HTTP_STATUS_FILE"
- |
if [ "0$HTTP_STATUS_FILE" != "0200" ]; then
echo "[ERROR] Unable to fetch Job Artifacts due to HTTP status of $HTTP_STATUS_FILE";
# exit 1;
else
curl --location --output docker-mail-artifacts.zip --header "PRIVATE-TOKEN: ${GIT_COMMIT_TOKEN}" "https://gitlab.com/api/v4/projects/33611657/jobs/artifacts/development/download?job=Documentation%2EBuild";
unzip docker-mail-artifacts.zip;
rm -Rf "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build/projects/docker-mail";
cp -rvf "$CI_PROJECT_DIR/artifacts/build/Documentation.Build/build/projects/docker-mail" "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build/projects/docker-mail/";
rm -Rf "$CI_PROJECT_DIR/artifacts/build/Documentation.Build";
fi
# # below 2 lines commented out as need to ffigure out how to download artifacts.
# - rm -Rf "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build/operations/index.html"
# - echo "cp -rvn" "$CI_PROJECT_DIR/artifacts/build/Website.Build/build/operations" "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build/"
# # copy ops pages into main site, not overwriting
# #- cp -rvn "$CI_PROJECT_DIR/artifacts/build/Static Pages/build/"* "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build/"
# # below line commented out as need to ffigure out how to download artifacts.
# - cp -rvf "$CI_PROJECT_DIR/artifacts/build/Website.Build/build/operations" "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build/"
- echo "copy prepare files (sitemap, search file) to fullsite (overwrite)"
- echo "copy each sub-repo build to fullsite (merge)"
# - echo mv "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/full-site" public
needs:
- 'Website.Build'
# only available in gitlab premium
# use: - "curl -O --header 'PRIVATE-TOKEN: ${GITLAB_API_TOKEN}' https://gitlab.example.com/api/v4/projects/${PROJECT_A_ID}/jobs/${REMOTE_JOB_ID}/artifacts/${REMOTE_FILENAME}"
# - project: nofusscomputing/ops
# job: Static Pages
# ref: development
# artifacts: true
artifacts:
expire_in: 24 hrs
when: always
paths:
- "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/*"
resource_group: preperation
resource_group: build
rules:
- if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != "master"'
- if: '$JOB_STOP_MKDOCS_BUILD'
when: never
- if: # condition_git_tag
$CI_COMMIT_TAG != null &&
$CI_COMMIT_BRANCH == null
exists:
- 'mkdocs.{yaml,yml}'
when: always
# - if: # condition_master_branch_push
# $CI_COMMIT_BRANCH == "master" &&
# $CI_PIPELINE_SOURCE == "push"
# exists:
# - 'mkdocs.{yaml,yml}'
# when: always
- if: # condition_dev_branch_push
$CI_COMMIT_BRANCH &&
(
$CI_PIPELINE_SOURCE == "api"
||
$CI_PIPELINE_SOURCE == "pipeline"
||
$CI_PIPELINE_SOURCE == "push"
||
$CI_PIPELINE_SOURCE == "schedule"
)
# See nofusscomputing/projects/gitlab-ci#34 for extra $CI_PIPELINE_SOURCE
exists:
- 'mkdocs.{yaml,yml}'
# No changes check # See nofusscomputing/projects/gitlab-ci#34
# changes:
# paths:
# - '{docs/**,pages/**}/*.md'
# compare_to: 'master'
when: always
- if: # condition_not_master_or_dev_push
$CI_COMMIT_BRANCH != "master" &&
$CI_COMMIT_BRANCH != "development" &&
$CI_PIPELINE_SOURCE == "push"
exists:
- 'mkdocs.{yaml,yml}'
changes:
paths:
- '{docs/**,pages/**}/*.md'
compare_to: 'development'
when: always
- when: never
Merge Project Docs:
extends: .merge_project_docs
needs:
- job: Get Project Documentation
artifacts: true
- job: Website.Build
artifacts: true
pages:
stage: deploy
variables:
GIT_STRATEGY: none
script:
- mv "$CI_PROJECT_DIR/artifacts/prepare/Assemble.Website.Prepare/build" public
needs: [ 'Assemble.Website.Prepare' ]
- |
if [ -d "$CI_PROJECT_DIR/artifacts/prepare/Merge.Project.Docs/build" ]; then
mv "$CI_PROJECT_DIR/artifacts/prepare/Merge.Project.Docs/build" public;
else
mv "$CI_PROJECT_DIR/artifacts/build/Website.Build/build" public;
fi
needs:
- job: Website.Build
artifacts: true
- job: 'Merge Project Docs'
optional: true
environment:
name: staging
name: Gitlab Pages
url: $CI_PAGES_URL
resource_group: preperation
artifacts:
paths:
- public
rules:
- if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != "master"'
# - if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != "master" && $CI_PIPELINE_SOURCE == "push"'
# when: on_success
# Build docs on tag so they can be downloaded from the tag job and are always available.
- if: # condition_git_tag
$CI_COMMIT_TAG != null &&
$CI_COMMIT_BRANCH == null
exists:
- '{docs/**,pages/**}/*.md'
when: on_success
- if: # condition_master_branch_push
$CI_COMMIT_BRANCH == "master" &&
$CI_PIPELINE_SOURCE == "push"
exists:
- '{docs/**,pages/**}/*.md'
when: on_success
- if: # condition_dev_branch_push
$CI_COMMIT_BRANCH == "development" &&
(
$CI_PIPELINE_SOURCE == "pipeline"
||
$CI_PIPELINE_SOURCE == "push"
||
$CI_PIPELINE_SOURCE == "schedule"
)
# See nofusscomputing/projects/gitlab-ci#34 for extra $CI_PIPELINE_SOURCE
exists:
- '{docs/**,pages/**}/*.md'
# No changes check # See nofusscomputing/projects/gitlab-ci#34
# changes:
# paths:
# - '{docs/**,pages/**}/*.md'
# compare_to: 'master'
when: on_success
- if: # condition_not_master_or_dev_push
$CI_COMMIT_BRANCH != "master" &&
$CI_COMMIT_BRANCH != "development" &&
$CI_PIPELINE_SOURCE == "push"
exists:
- '{docs/**,pages/**}/*.md'
changes:
paths:
- '{docs/**,pages/**}/*.md'
compare_to: 'development'
when: on_success
- when: never
@ -165,17 +340,63 @@ pages:
reports:
junit:
- "*.junit.xml"
resource_group: preperation
rules:
- if: '$CI_COMMIT_BRANCH'
# - if: '$CI_COMMIT_BRANCH && $CI_PIPELINE_SOURCE == "push"'
# when: on_success
# Build docs on tag so they can be downloaded from the tag job and are always available.
- if: # condition_git_tag
$CI_COMMIT_TAG != null &&
$CI_COMMIT_BRANCH == null
exists:
- '{docs/**,pages/**}/*.md'
when: on_success
- if: # condition_master_branch_push
$CI_COMMIT_BRANCH == "master" &&
$CI_PIPELINE_SOURCE == "push"
exists:
- '{docs/**,pages/**}/*.md'
when: on_success
- if: # condition_dev_branch_push
$CI_COMMIT_BRANCH == "development" &&
(
$CI_PIPELINE_SOURCE == "pipeline"
||
$CI_PIPELINE_SOURCE == "push"
||
$CI_PIPELINE_SOURCE == "schedule"
)
# See nofusscomputing/projects/gitlab-ci#34 for extra $CI_PIPELINE_SOURCE
exists:
- '{docs/**,pages/**}/*.md'
# No changes check # See nofusscomputing/projects/gitlab-ci#34
# changes:
# paths:
# - '{docs/**,pages/**}/*.md'
# compare_to: 'master'
when: on_success
- if: # condition_not_master_or_dev_push
$CI_COMMIT_BRANCH != "master" &&
$CI_COMMIT_BRANCH != "development" &&
$CI_PIPELINE_SOURCE == "push"
exists:
- '{docs/**,pages/**}/*.md'
changes:
paths:
- '{docs/**,pages/**}/*.md'
compare_to: 'development'
when: on_success
- when: never
Unit Tests:
extends: .Pytest_template
needs: [ 'Website.Build' ]
resource_group: preperation
script:
- mv "$CI_PROJECT_DIR/artifacts/build/Website.Build/build" build
- pytest --verbose --junitxml=unit_test.junit.xml --tb=line test/unit
@ -192,44 +413,18 @@ Unit Tests:
# - echo "placeholder job for integration tests" > "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/DETEMEME.txt"
.Add_SSHKey: &Add_SSHKey_Before_Script |
mkdir -p ~/.ssh
chmod 700 ~/.ssh
eval $(ssh-agent -s)
SSH_KEY_NAME=SSH_PRIVATE_KEY_${ANSIBLE_USER}
echo "Debug SSH_KEY_NAME[$SSH_KEY_NAME]"
chmod 700 "${!SSH_KEY_NAME}"
ssh-add "${!SSH_KEY_NAME}"
#update next line so that ca key can be obtained. original source is ansible repo
#HOST_SSH_ID=$(cat roles/openssh-server/files/nww-nl/host_ca.pub)
HOST_SSH_ID=$(cat ${SSH_HOST_CA})
echo DEBUG HOST_SSH_ID[$HOST_SSH_ID]
echo "@cert-authority *.networkedweb.com $HOST_SSH_ID" > ~/.ssh/known_hosts
chmod 700 ~/.ssh/known_hosts
ls -la ~/.ssh
public_website:
stage: publish
image: debian:buster-slim
image: alpine
variables:
GIT_STRATEGY: none
before_script:
- if [ "0$ANSIBLE_USER" == "0" ]; then ANSIBLE_USER=deploy; fi
- echo Debug ANSIBLE_USER[$ANSIBLE_USER]
- apt update
- apt install --no-install-recommends -y ssh
- ls -la "$CI_PROJECT_DIR/artifacts/prepare/Assemble.Website.Prepare/build"
- mv "$CI_PROJECT_DIR/artifacts/prepare/Assemble.Website.Prepare/build" "$CI_PROJECT_DIR/public"
- rm -Rf "$CI_PROJECT_DIR/public/build"
- ls -la "$CI_PROJECT_DIR"
- ls -la "$CI_PROJECT_DIR/public"
- *Add_SSHKey_Before_Script
- ls -la /html
script:
- ssh ${ANSIBLE_USER}@${HOST_PUBLIC_WEBSITE} sudo rm -Rf ${PUBLIC_WEBSITE_PATH}/*
- scp -r public/* ${ANSIBLE_USER}@${HOST_PUBLIC_WEBSITE}:${PUBLIC_WEBSITE_PATH}
needs: [ 'Assemble.Website.Prepare', 'Unit Tests']
- rm -rf /html/*
- cp -r "$CI_PROJECT_DIR/artifacts/prepare/Merge.Project.Docs/build"/* /html/
- ls -laR /html/
needs: [ 'Merge Project Docs', 'Unit Tests']
resource_group: production
environment:
name: production
@ -238,12 +433,33 @@ public_website:
paths:
- public
rules:
- if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH == "master"'
- if: # condition_master_branch_push
$CI_COMMIT_BRANCH == "master" &&
$CI_PIPELINE_SOURCE == "push"
exists:
- '{docs/**,pages/**}/*.md'
when: on_success
- if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH == "development" && $CI_PIPELINE_SOURCE != "merge_request_event"'
when: manual
- if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != "development" && $CI_COMMIT_BRANCH != "master" && $CI_PIPELINE_SOURCE != "merge_request_event"'
when: manual
allow_failure: true
- when: never
- if: # condition_dev_branch_push
$CI_COMMIT_BRANCH == "development" &&
(
$CI_PIPELINE_SOURCE == "pipeline"
||
$CI_PIPELINE_SOURCE == "push"
||
$CI_PIPELINE_SOURCE == "schedule"
)
# See nofusscomputing/projects/gitlab-ci#34 for extra $CI_PIPELINE_SOURCE
exists:
- '{docs/**,pages/**}/*.md'
# No changes check # See nofusscomputing/projects/gitlab-ci#34
# changes:
# paths:
# - '{docs/**,pages/**}/*.md'
# compare_to: 'master'
allow_failure: true
when: manual
- when: never
tags:
- production
- website

View File

@ -0,0 +1,162 @@
---
# Variables required:
# ASSEMBLE_PROJECT_NAME: ''
# ASSEMBLE_PROJECT_ID: ''
# ASSEMBLE_PROJECT_PATH: ''
.fetch_project_docs:
stage: chores
needs: []
variables:
GIT_STRATEGY: none
before_script:
- mkdir -p "$CI_PROJECT_DIR/artifacts/project_docs"
script:
- echo "[DEBUG] Fetch Project ${ASSEMBLE_PROJECT_NAME}"
- 'HTTP_STATUS_FILE=$(curl --location -o /dev/null --silent --head --write-out "%{http_code}" --header "PRIVATE-TOKEN: ${GIT_COMMIT_TOKEN}" "https://gitlab.com/api/v4/projects/${ASSEMBLE_PROJECT_ID}/jobs/artifacts/development/download?job=Documentation%2EBuild")'
- echo "[DEBUG] HTTP_STATUS_FILE=$HTTP_STATUS_FILE"
- |
if [ "0$HTTP_STATUS_FILE" != "0200" ]; then
echo "[ERROR] Unable to fetch Job Artifacts due to HTTP status of $HTTP_STATUS_FILE";
# exit 1;
else
curl --location --output artifacts.zip --header "PRIVATE-TOKEN: ${GIT_COMMIT_TOKEN}" "https://gitlab.com/api/v4/projects/${ASSEMBLE_PROJECT_ID}/jobs/artifacts/development/download?job=Documentation%2EBuild";
unzip artifacts.zip;
# rm -Rf "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build/projects/gitlab-ci";
cp -rvf "$CI_PROJECT_DIR/artifacts/build/Documentation.Build/build/${ASSEMBLE_PROJECT_PATH}" "$CI_PROJECT_DIR/artifacts/project_docs/$(echo -n "${ASSEMBLE_PROJECT_PATH}" | sed -e "s/\//./g")/";
rm -Rf "$CI_PROJECT_DIR/artifacts/build/Documentation.Build";
fi
artifacts:
expire_in: 24 hrs
when: always
paths:
- "$CI_PROJECT_DIR/artifacts/"
rules:
# Docs must always be built for:
# - git tag
# - dev branch
# - master branch
- if: # condition_git_tag
(
$CI_COMMIT_TAG
)
||
(
(
$CI_COMMIT_BRANCH == "development"
||
$CI_COMMIT_BRANCH != "master"
)
&&
(
$CI_PIPELINE_SOURCE == "pipeline"
||
$CI_PIPELINE_SOURCE == "push"
||
$CI_PIPELINE_SOURCE == "schedule"
)
)
||
(
$CI_COMMIT_BRANCH == "master"
&&
$CI_PIPELINE_SOURCE == "push"
)
exists:
- '{docs/**,pages/**}/*.md'
when: always
- when: never
.merge_project_docs:
stage: prepare
variables:
GIT_STRATEGY: none
before_script:
- mkdir -p $CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/Merge.Project.Docs
- mv "$CI_PROJECT_DIR/artifacts/build/Website.Build/build" "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/Merge.Project.Docs/"
script:
- ls -l ${CI_PROJECT_DIR}/artifacts/project_docs/
- | # Merge Project docs to website
for i in `ls ${CI_PROJECT_DIR}/artifacts/project_docs/`; do
echo "Found Path - $i";
export JOIN_PROJECT_PATH=$(echo -n "${i}" | sed -e "s/\./\//g");
echo "set as project path [${JOIN_PROJECT_PATH}]";
rm -Rf $CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/Merge.Project.Docs/build/${JOIN_PROJECT_PATH};
cp -rvf $CI_PROJECT_DIR/artifacts/project_docs/${i} $CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/Merge.Project.Docs/build/${JOIN_PROJECT_PATH}/;
done
- | # Assemble website and project sources to build search index
echo "ToDo: build website and docs together to get the search index to add to the website";
- | # Join sitemaps together
echo "ToDo: Join all Sitemaps together into one";
artifacts:
expire_in: 24 hrs
when: always
paths:
- "$CI_PROJECT_DIR/artifacts/"
rules:
# Docs must always be built for:
# - git tag
# - dev branch
# - master branch
- if: # condition_git_tag
(
$CI_COMMIT_TAG
)
||
(
(
$CI_COMMIT_BRANCH == "development"
||
$CI_COMMIT_BRANCH != "master"
)
&&
(
$CI_PIPELINE_SOURCE == "pipeline"
||
$CI_PIPELINE_SOURCE == "push"
||
$CI_PIPELINE_SOURCE == "schedule"
)
)
||
(
$CI_COMMIT_BRANCH == "master"
&&
$CI_PIPELINE_SOURCE == "push"
)
exists:
- '{docs/**,pages/**}/*.md'
when: always
- when: never

View File

@ -2,7 +2,7 @@ INHERIT: website-template/mkdocs.yml
repo_name: Website
repo_url: https://gitlab.com/nofusscomputing/infrastructure/website
edit_uri: '/-/ide/project/nofusscomputing/projects/docker-mail/edit/development/-/pages/'
edit_uri: '/-/ide/project/nofusscomputing/projects/website/edit/development/-/pages/'
nav:
- Home: index.md
@ -11,6 +11,10 @@ nav:
- articles/index.md
- 2023:
- articles/2023/new_website.md
- 2015:
- articles/2015/choose_internet_service.md
@ -25,12 +29,94 @@ nav:
- projects/index.md
- Ansible Roles: projects/ansible-roles/README.md
- Ansible:
- Docker Mail: projects/docker-mail/index.md
- projects/ansible/index.md
- Ansible Execution Environment:
- projects/ansible/execution_environment/index.md
- Collections:
- projects/ansible/collection/index.md
- Centurion:
- projects/ansible/collection/centurion/index.md
- Firewall:
- projects/ansible/collection/firewall/index.md
- Kubernetes:
- projects/ansible/collection/kubernetes/index.md
- netbox:
- projects/ansible/collection/netbox/index.md
- phpIPAM Scan Agent:
- projects/ansible/collection/phpipam_scan_agent/index.md
- Playbooks:
- projects/ansible/playbooks/index.md
- Roles:
- projects/ansible/roles/index.md
- Common:
- projects/ansible/roles/common/index.md
- Git Configuration:
- projects/ansible/roles/git_configuration/index.md
- Home Assistant:
- projects/ansible/roles/homeassistant/index.md
- Testing:
- projects/ansible/roles/ansible_test/index.md
- Docker:
- projects/docker/index.md
- BIND DNS Server:
- projects/docker/bind/index.md
- Docker GLPI:
- projects/glpi/index.md
- Docker Mail:
- projects/docker-mail/index.md
- Centurion ERP:
- projects/centurion_erp/index.md
- Gitlab CI: projects/gitlab-ci/index.md
- ITIL:
- Runbooks:
- projects/itil/runbooks/index.md
- Kubernetes Monitoring: projects/kubernetes_monitoring/index.md
- LDAP Self Service: projects/ldap_self_service/index.md
- Python Gitlab Management: projects/python-gitlab-management/README.md
- Operations:

View File

@ -0,0 +1,29 @@
---
title: Site Refurbishment
description: it's an update.
date: 2023-08-01
template: article.html
type: blog
author: jon
copyrightHolder: jon
about: https://nofusscomputing.com
tags:
- Automation
- Website
- Update
---
It's been a while and for all intents and purposes; Prior to today you would not have been mistaken for thinking that our site was dead in the water. I could give reasons, but the reality is it's an excuse and we all know that *"they're like arseholes, everyones got one!!"* As it currently stands, I find myself with a little extra time on my hands so this site revamp is the start and first visibility of what I've been doing.
I've spent a good part of a few of a few decades working with computers. Whilst this has been an interesting journey, in the last few years I've discovered Configuration-as-Code. The concept itself wasn't exactly new to me, I just put off learning anything about it past the name. As creatures of habits, us humans, once we have found our way we tend to stick to that routine or better stated, with what we know.
Moving from the early days (norton ghost and clonezilla) with manually built images for every different type of machine. which became very monotonous to manually update the images with patches. The opportunity had presented itself resently where for the first time in over two decades, I'm required to rebuild my infrastructre from scratch. As daunting as this sounds, given the leaps and bounds that have occured in the last decade, even more in the last five years. Technologies have evolved to the point where now it takes a fraction of the time to do what used to take upwards of a week. Upgrades now are not rebuild the image from scratch, clone and redeploy. Now, I punch the keyboard and characters show on the screen, then I run a program, Ansible. It reads the jibberish (json/yaml) and presto, Bobs your uncle, a deploy has occured. Fresh deployment or updates, doesn't matter, run the same code again and Ansible ensures it's setup how it's supposed to be. Need to update a piece of software, too easy, change the version number in your config files.
Other things of note worthy mention:
- For Family and friends, free of course I host Password vault, <https://vault.nofusscomputing.com>. This enables you to install an app on your phone and within your web browser which lets you sync your passwords, identities and secrets-and using zero-trust full encryption. Best feature of all,you only have to remember your vault password, as everything else is stored in the vault.
- Helpdesk now deployed publicly, <https://helpdesk.nofusscomputing.com>. Along with automating everything else a Service Catalog is being extended to automate other tasks.
- Website updating now occurs automagically. We do this via Gitlab using CD/CI pipelines. Now I just edit a file, push the changes and the changes deploy my site on the interwebs.
- Our [projects](../../projects/index.md) from [GitHub](https://github.com/NoFussComputing) and [GitLab](https://gitlab.com/nofusscomputing) deploy their docs to our site, again automagically.

BIN
pages/assets/nfc_revamp.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

View File

@ -8,6 +8,7 @@ hide:
- toc
---
![No Fuss Computing](assets/nfc_header.png)
<div style="background: url(assets/nfc_revamp.png) no-repeat center top; background-size: 282px 90px; width: 100%; height: 120px; display: flex;">
<span style="align-self: flex-end; width: 100%; text-align: center; color: #009900; font-weight: bold; font-size: 14pt;">Using Technology to make life easier</span>
</div>
Home Page

View File

@ -1,5 +0,0 @@
# Ansible Roles
| :red_circle: This page is a placeholder for the ansible-roles repo's docs. |
|:---|
| _If you can see this page there has been an error, please report the issue on gitlab_ |

View File

@ -0,0 +1,9 @@
---
title: Ansible Collections
description: No Fuss Computings Ansible Collections
date: 2024-02-21
template: project.html
about: https://gitlab.com/nofusscomputing/projects/ansible
---
This section of the website contains Ansible Collection projects and the details of how to use said projects.

View File

@ -0,0 +1,510 @@
---
title: Ansible Projects
description: No Fuss Computings Ansible Projects
date: 2023-06-01
template: project.html
about: https://gitlab.com/nofusscomputing/projects/ansible
---
This section of the website contains Ansible projects and the details of how to use said projects. Across All of our Ansible projects we standardize as much as possible.
Any playbooks and roles we create are designed with the below ansible setup in mind. Whilst there are many ways ~~to skin a cat~~ setup ansible, If you deviate from below you will be required to test to ensure that if using our playbooks/roles, that they work as intended. If you find that there is a better way of setting up Ansible, raise an issue with your proposal and we'll discuss.
- [No Fuss Computing playbooks](playbooks/index.md)
- [No Fuss Computing roles](roles/index.md)
## Inventory Setup
The Inventory should be setup under an SCM, git in this case; So that a version history is maintained. This also fosters a full audit trail as part of the complete host lifecycle. Idealy the Inventory along with directories `files` and `templates.` should be contained in it's own git repository. Using this method provides that the git history only pertain to the inventory alone, and therefore any install/configuration of a host.
!!! tip
If you must include `playbooks` and `roles` wihin your inventory repository it's a good idea that these still be their own repositories with them added to the inventory repository as a git sub-module.
Ansible inventory directory structure.
``` bash
.
├── ansible.cfg
├── files
│   ├── all
│   │   ├──
│   │   ├──
│   ├── node1
│   │   ├──
│   │   ├──
│   ├── k3s-prod
│   │   ├── Ingress-manifest-AWX.yaml
│   │   └── deployment-manifest-test_web_server.yaml
│   ├── k3s-testing
│      └── deployment-manifest-test_web_server.yaml
|
├── .inventory_root
├── inventory
│   ├── development
│   │   ├── group_vars
│   │   │   ├── all.yaml
│   │   │   ├── debian.yaml
│   │   ├── hosts.yaml
│   │   └── host_vars
│   │   ├── laptop2.yaml
│   │   ├── node1.yaml
│   │   ├── node2.yaml
│   │   ├── node3.yaml
│   │   ├── node4.yaml
│   │   └── node5.yaml
│   └── production
│   ├── group_vars
│   │   ├── all
│   │   │   ├── main.yaml
│   │   │   ├── vault.yaml
│   │   │   └── versions_software.yaml
│   │   ├── awx.yaml
│   ├── hosts.yaml
│   └── host_vars
│   ├── node1.yaml
│   ├── k3s-prod
│   │   ├── backup.yaml
│   │   ├── kubernetes.yaml
│   │   ├── main.yaml
│   │   └── vault.yaml
│   ├── k3s-testing
│      ├── main.yaml
│      └── vault.yaml
├── playbooks
│   ├── all.yaml
├── README.md
└── templates
├── hosts
   │ └── k3s-prod
    └── HelmChart-manifest-NginX-ingress.yaml
└── groups
```
| name | Type | Description |
|:---|:---:|:---|
| ansible.cfg | _file_ | Ansible configuration file applicable to this inventory |
| files | _directory_ | Contain files that a host may require. Playbook task iterates over by hostname and group name. Sub-directories for hostname / group-name |
| .inventory_root | _file_ | This file is used by `nfc_common` role to determin the root directory of the inventory. |
| inventory | _directory_ | Ansible inventory. If multiple inventories exist can use sub folders. |
| playbooks | _directory_ | Should be a git submodule. _This keeps inventory and playbooks SCM related to each only._ |
| README.md | _file_ | Inventory readme with applicable info. |
| templates | _directory_ | This directory is the same as the `files` directory except contains jinja templates. |
### Inventory
Naming of host inventory files is to use the hostname portion of the FQDN only. i.e. for a host with a FQDN of `myhostname.domain.tld` it's `inventory_hostname` would be `myhostname`. This requirement is a must as many parts of our roles and playbooks depend upon this value matching the DNS system.
#### hosts file
The hosts file `host.yaml` contains all hosts and by which group they are part of.
### Variable Files
Preference for variable files is that there is one file per subject. i.e. for the variables for a keycloak deployment, all be in one variable file, and under a directory matching the host/group name.
### Playbooks
For playbook usage in AWX / Ansible Automation platform, the following changes are required to be made to **all** playbooks:
- variable `nfc_pb_host` is used for a template survey variable for a host selector for limiting hosts when running a play.
Example implementaion
``` yaml
- name: Desktops and Sub-groups
hosts: |-
{%- if
nfc_pb_host is defined
and
nfc_pb_host in groups.desktops
-%}
{{ nfc_pb_host }}
{%- else -%}
{{ groups.desktops }}
{%- endif %}
```
!!! warning "Important"
The building of the variable is dynamic and must check if the host is part of the group the playbook is for. this ensures that the playbook will only ever run for a host that is part of that group.
- variable `nfc_pb_kubernetes_cluster_name` is used for a template survey variable for the dynamic building of the cluster group name.
Example implementaion
``` yaml
- name: Kubernetes Group and sub-groups
hosts: |-
{%- if
nfc_pb_host is defined
and
nfc_pb_host in groups.kubernetes
-%}
{{ nfc_pb_host }}
{%- elseif nfc_pb_kubernetes_cluster_name is defined -%}
kubernetes_cluster_{{ nfc_pb_kubernetes_cluster_name }}
{%- else -%}
{{ groups.kubernetes }}
{%- endif %}
```
### Templates
Templates directory contains only two sub-deirectories `groups` and `hosts` under each of these folders are folders by group/host name that contain template files. Preferernece is leaning toards not using the `.j2` extension as the IDE may loose functionality by using.
Naming of template files is in format `{item-type}-{what-uses}-{friendly name that uses underscores not hyphon}.{file_extension}`
| Item Type | what uses | Notes
|:---|:---:|:---|
| config | bind | Configuration file for bind dns server |
| dnszone | bind | a bind server DNS zone |
| `{kubernetes kind}` | manifest | A kubernetes manifest |
#### Feature gates
Templates when added to the group folder should be setup with a feature gate. This eanbles simple yaml to be defined to allow the template to deploy.
example of yaml declaration that host/group would read.
``` yaml
feature_gates:
is_prime: false
monitoring: true
operator_awx: true
operator_grafana: true
operator_prometheus: true
postgres_cluster: true
rook_ceph: true
```
Seting a feature gate on a template is as simple as enclosing the entire contents of the file with a jinja if statement. i.e. `{% if path.feature_gates.monitoring | default(false) | bool %}the content here{% endif %}`
## Playbooks
Playbooks are used for grouping of hosts and/or groups for a task or set of tasks that are required to be run. All playbooks must return artifacts that exist to serve the purpose of having information on the play that can be used in further automations.
### Artifacts
The artificates returned are set using the `ansible.builtin.set_stats` module. Prior to setting these facts with the `stats` module they must be set as facts first using the `ansible.builtin.set_fact` module. the latter enables passing of the artifacts via cli and `stats` from within AWX / Ansible Automation Platform.
!!! tip
When setting the artifacts, ensure `per_host=false` is set so that artifacts work within AWX / Ansible Automation Platform.
Common artifacts structure. **ALL** playbooks must set these variables.
``` yaml
# 'nfc_automation', dict. Global Variable, This is set from within the first playbook
# ran and updated as required with the end time updated by the last playbook.
nfc_automation:
error: 0 # Boolean, 0=no Error, 1=Error occured
time:
start: "{{ '%Y-%m-%dT%H:%M:%S %z' | strftime }}" # String of date time, set at time of setting 'nfc_automation'
end: 0 # String of date time, set when play finished, and updated by subsequent plays
# Determin end time of play or duration of play when used with start time, even on error.
# 'nfc_task', list. every playbook creates its own task dict to add to this list.
nfc_task:
- name: "glpi"
start: "{{ '%Y-%m-%dT%H:%M:%S %z' | strftime }}"
tags: "{{ ansible_run_tags }}"
```
The above must be set from within every playbook regardless of what else is in the playbooks.
example playbook to set artifacts and variables
``` yaml
---
#
# Playbook Template
#
# This playbook template is the base template for All of our playbooks.
#
# No Fuss Computing <https://nofusscomputing.gitlab.io/projects/ansible/ansible_playbooks/projects/ansible/>
#
# Requirements:
# - ansible >= 2.8
#
- name: Playbook Template
hosts: localhost
become: false
pre_tasks:
# Play and task set time
- name: Set Start Time
ansible.builtin.set_fact:
nfc_task_starttime: "{{ ('%Y-%m-%dT%H:%M:%S %z' | strftime) | string }}"
no_log: "{{ nfc_pb_no_log_setup_facts | default(true) | bool }}"
tags:
- always
# Setup dictionary 'nfc_automation'
- name: Set Automation Facts
ansible.builtin.set_fact:
nfc_automation: {
"time": {
"start": "{{ nfc_task_starttime | string }}",
"end": 0
}
}
no_log: "{{ nfc_pb_no_log_setup_facts | default(true) | bool }}"
when: nfc_automation is not defined
tags:
- always
# Setup dictionary 'nfc_task'
- name: Set Automation Facts
ansible.builtin.set_fact:
nfc_task: {
"name": "{{ ansible_play_name | lower | string }}",
"error": 0,
"roles": "{{ ansible_play_role_names | string }}",
"skip_tags": "{{ ansible_skip_tags | list }}",
"start": "{{ nfc_task_starttime | string }}",
"tags": "{{ ansible_run_tags | list }}"
}
no_log: "{{ nfc_pb_no_log_setup_facts | default(true) | bool }}"
tags:
- always
- name: Block - pre_tasks
block:
########################################################################
#
# Your tasks here
#
########################################################################
rescue:
# there was an error, set error object
- name: Set error fact
ansible.builtin.set_fact:
nfc_task: "{{ nfc_task | combine({
'error': 1
}) }}"
no_log: "{{ nfc_pb_no_log_setup_facts | default(true) | bool }}"
tags:
- always
always:
# Check if error occured and fail task
- name: Error Check
ansible.builtin.assert:
that:
- nfc_task.error | int == 0
msg: Error occured, Fail the play run
tags:
- always
# Don't use the 'roles' section.
roles: []
# if the included role(s) do not contain a rescue block, the playbook may stop
# executing in this section (roles) with the post_tasks not running. This will
# cause the artifacts to be incomplete. It's recommended to include your roles
# in section(s) 'pre_tasks', 'tasks' or 'post_tasks' and from within a block with
# rescue so that the playbook can complete and ensure that all artifacts are set.
tasks:
- name: Block - tasks
block:
# Check for error and fail play on error
- name: Error Check
ansible.builtin.assert:
that:
- nfc_task.error | int == 0
msg: Error eccured, follow error path to fail play
########################################################################
#
# Your tasks here
#
########################################################################
rescue:
# there was an error, set error object
- name: Set error fact
ansible.builtin.set_fact:
nfc_task: "{{ nfc_task | combine({
'error': 1
}) }}"
no_log: "{{ nfc_pb_no_log_setup_facts | default(true) | bool }}"
tags:
- always
always:
# Check if error occured and fail task
- name: Error Check
ansible.builtin.assert:
that:
- nfc_task.error | int == 0
msg: Error occured, Fail the play run
tags:
- always
post_tasks:
- name: Tasks post_task
block:
# Check for error and fail play on error
- name: Error Check
ansible.builtin.assert:
that:
- nfc_task.error | int == 0
msg: Error occured, follow error path to fail play
tags:
- always
########################################################################
#
# Your tasks here
#
########################################################################
rescue:
# there was an error, set error object
- name: Set error fact
ansible.builtin.set_fact:
nfc_task: "{{ nfc_task | combine({
'error': 1
}) }}"
no_log: "{{ nfc_pb_no_log_setup_facts | default(true) | bool }}"
tags:
- always
always:
# Task and automation end time.
- name: Fetch End time
ansible.builtin.set_fact:
nfc_task_endtime: "{{ '%Y-%m-%dT%H:%M:%S %z' | strftime }}"
no_log: "{{ nfc_pb_no_log_setup_facts | default(true) | bool }}"
tags:
- always
# Set task end time
- name: Set task Facts
ansible.builtin.set_fact:
nfc_tasks: "{{ nfc_tasks | default([]) + [ nfc_task | combine({
'end': nfc_task_endtime | string
}) ] }}"
no_log: "{{ nfc_pb_no_log_setup_facts | default(true) | bool }}"
tags:
- always
# Set Automation end time.
# every playbook must set this variable so that the end time
# is equal to the fail time or the end of a group of playbooks.
- name: Set automation end time
ansible.builtin.set_fact:
nfc_automation: "{{ nfc_automation | combine({
'time': nfc_automation.time | combine({
'end': nfc_task_endtime | string
})
}) }}"
nfc_task_endtime: null
no_log: "{{ nfc_pb_no_log_setup_facts | default(true) | bool }}"
tags:
- always
# Set the artifacts as a fact for subsequent playbook useage
# Note: variable 'per_host' must be 'false' so that the artifacts
# work within AWX / Ansible Automation Platform.
- name: Create Automation Artifact
ansible.builtin.set_stats:
data:
nfc_automation: "{{ nfc_automation }}"
nfc_tasks: "{{ nfc_tasks }}"
per_host: false
tags:
- always
# Final error check to fail the entire play run on error
- name: Error Check
ansible.builtin.assert:
that:
- nfc_task.error | int == 0
msg: Error occured, Fail the play run
tags:
- always
vars: {}
```
The above template playbook is designed for post automation should it be required to run. `nfc_automation` is for the entire play/workflow with `nfc_tasks` being a list of `nfc_task` dictionary from each playbook. `nfc_task` is there for you to add your own artifacts to and without any additional effort from you, will be added to the global artifacts.
### Playbook Variables
Within any playbook that we create any variable that is set within the playbook is to be prefixed with `nfc_pb_`. Currently we have the following variables that are reserved and set as part of how we structure our playbooks.
- `nfc_automation` Details on the play/run. see artifacts above for details.
- `nfc_pb_no_log_setup_facts` Boolean value used as a feature gate on whether to log `set_fact` tasks that are for setting up the play. i.e. artifacts. setting this value to `false` will caused the tasks to be logged.
- `nfc_tasks` List of all `nfc_task` dictionaries of the play. see artifacts above for details.
## AWX / Tower / Automation Platform
### Prime host
If you use a system like AWX / Tower / Automation Platform the inventory should be designed in a way that you have a prime host. The prime host is a single host that once it exists, it's capable of rebuilding all of the infrastructure within the inventory. Using the prime host method, you only require the variable secrets (vault encrypted) of the prime host and only those pertinent to rebuilding the prime host. This should only be the backup decryption key (vault encrypted).
!!! warning Warning
Prime Host requires that the backup decryption key be updated within the inventory whenever it changes. There is also a requirement that the vault encryption key be available and not stored on infrastructure that without or that infrastructure not existing you cant access the vault key. i.e. password manager.
## ToDo
- Explain usage of file `.inventory_root` which must exist as nfc_common _(todo: see kubernetes playbook/master)_ _may no longer be required a project structure is known along with using variable `playbook_dir`_

View File

@ -0,0 +1,77 @@
---
title: Ansible Roles
description: No Fuss Computings Ansible Roles Projects
date: 2023-11-10
template: project.html
about: https://gitlab.com/nofusscomputing/projects/ansible
---
This section of the website contains Ansible roles and the details of how to use said projects. Across All of our Ansible roles we standardize as much as possible. This document will contain the details of said standardization.
Our roles:
- Common
- Docker Management
- Git Configuration
- [Home Assistant](homeassistant/index.md)
- SSH
## Role Requirements
This section covers what by default, be part of all ansible roles we create.
=== "ansible.builtin.set_stats"
As part of the role, setting of ansible stats with `ansible.builtin.set_stats` must be provided. This enables a single variable that can be used after the play has completed. Usage of a role that includes the usage of `ansible.builtin.set_stats` within AWX enables population of the artifacts and passing of the stats between workflows/job templates.
```yaml
- name: Stat Values
ansible.builtin.set_fact:
stat_values: |
{
"host_{{ inventory_hostname | replace('.', '_') | replace('-', '_') }}": {
"roles": {
role_name: {
"enabled": true,
"installed": false,
"empty_list": [],
"empty_dict": {}
}
},
playbooks: {
"{{ inventory_hostname }}": "here"
}
}
}
- name: Create Final Stats not Per Host
ansible.builtin.set_stats:
data: "{{ stat_values | from_yaml }}"
per_host: false
aggregate: true
- name: Clear Stat Values
ansible.builtin.set_fact:
stat_values: null
```
- `Stat Values` is only required if the variable names require expansion. _Can be omitted if no variable expansion required for variable name._
- `Create Final Stats not Per Host` sets the artifacts/stats.
- `Clear Stat Values` remove the stat fact. only required if using `Stat Values`.
!!! tip AWX Gotcha
AWX requires that `per_host` be set to `false` when setting stats for artifacts to work. Hence the structure of the artifacts above use hostname prefixed with `host_`. This method enables programatic checking if by host due to the presence of `host_` in the dictionary name.
=== "Variable naming"
- All Role Variables to be prefixed with the role name.

View File

View File

View File

View File

@ -0,0 +1,5 @@
# Docker GLPI
| :red_circle: This page is a placeholder for the python-gitlab-management repo's docs. |
|:---|
| _If you can see this page there has been an error, please report the issue on gitlab_ |

View File

@ -0,0 +1,5 @@
# ITIL Runbooks
| :red_circle: This page is a placeholder for the python-gitlab-management repo's docs. |
|:---|
| _If you can see this page there has been an error, please report the issue on gitlab_ |

View File

@ -0,0 +1,5 @@
# Docker GLPI
| :red_circle: This page is a placeholder for the python-gitlab-management repo's docs. |
|:---|
| _If you can see this page there has been an error, please report the issue on gitlab_ |

View File

@ -91,18 +91,20 @@ class Data:
if 'gitlab.com/-/ide/project' not in url: # ignore gitlab ide links
link = self.parse_url(url)
if 'nofusscomputing.com' not in url: # ignore gitlab ide links
hyperlink_source_file = {'name': source_file, 'location': link_location}
link = self.parse_url(url)
if link['url_id'] in data['hyperlinks']:
hyperlink_source_file = {'name': source_file, 'location': link_location}
data['hyperlinks'][link['url_id']]['source_files'].append(hyperlink_source_file)
if link['url_id'] in data['hyperlinks']:
else:
data['hyperlinks'][link['url_id']]['source_files'].append(hyperlink_source_file)
link['source_files'] = [ hyperlink_source_file ]
data['hyperlinks'][link['url_id']] = link
else:
link['source_files'] = [ hyperlink_source_file ]
data['hyperlinks'][link['url_id']] = link
events = [self.process_browser_log_entry(entry) for entry in self.driver.get_log('performance')]

View File

@ -13,7 +13,11 @@ class Test:
def setup_method(self):
pass
self.ignore_url_alive_check = {
'gitlab.com': [
'nofusscomputing/infrastructure/website/-/new/development'
]
}
@pytest.mark.parametrize(
@ -36,12 +40,29 @@ class Test:
packages.urllib3.disable_warnings(category=InsecureRequestWarning)
request = get(data['url'], verify=False)
skip_test = False
print(str(data) + str(request.status_code))
assert request.status_code == 200, (
f"Hyperlink [{data['url_id']}] to location [{data['url']}] failed,"
f"with status [{request.status_code}].")
if data['domain'] in self.ignore_url_alive_check:
if data['request_path'] in self.ignore_url_alive_check[data['domain']]:
skip_test = True
if not skip_test:
assert (
request.status_code == 200
or
request.status_code == 401
or
request.status_code == 403
), (
f"Hyperlink [{data['url_id']}] to location [{data['url']}] failed,"
f"with status [{request.status_code}].")
else:
assert True
@pytest.mark.parametrize(