mirror of
https://github.com/unman/shaker.git
synced 2024-10-01 01:25:41 -04:00
Doc - states to produce documentataion builder
This commit is contained in:
parent
87f4b244b9
commit
740097264e
46
qubes-doc/README.md
Normal file
46
qubes-doc/README.md
Normal file
@ -0,0 +1,46 @@
|
||||
# Introduction
|
||||
These salt files can be used to set-up a template for building the Qubes website and documentation.
|
||||
The template is a clone of the fedora-40 template.
|
||||
A qubes-doc qube is created and configured to use git and split-gpg.
|
||||
|
||||
# Installation
|
||||
Copy the qubes-doc directory to /srv/salt, then run:
|
||||
```
|
||||
sudo qubesctl state.apply qubes-doc.create
|
||||
sudo qubesctl --skip-dom0 --targets=template-qubes-doc state.apply qubes-doc.install
|
||||
sudo qubesctl --skip-dom0 --targets=qubes-doc state.apply qubes-doc.config
|
||||
```
|
||||
|
||||
If you want to use git, a boilerplate `~.gitconfig` is included in qubes-doc.
|
||||
Remember to edit this file with your details.
|
||||
split-gpg is automatically configured to use sys-gpg as the backend qube holding the PGP key.
|
||||
Edit the policy if you want to use a different backend qube to store your gpg key.
|
||||
|
||||
## Building the site
|
||||
```
|
||||
cd qubesos.github.io
|
||||
bundle exec jekyll serve
|
||||
```
|
||||
You may need to edit `Gemfile` to include `gem webrick`
|
||||
|
||||
## Notes
|
||||
|
||||
`create.sls` uses *include* to call `clone.sls`. This state ensures that a fedora-40 template is installed, and will install it if not: the template is cloned to create a template for qubes-doc. The remainder of the state creates the qubes-doc qube, and creates the split-gpg policy.
|
||||
|
||||
`install.sls` configures qubes-doc repositories to use the caching proxy if present. (Look at the use of the *if* statement checking for the existence of the relevant pillar.)
|
||||
`pkg.installed` is used to install the needed packages.
|
||||
|
||||
`config.sls` is applied to the new *qubes-doc* qube.
|
||||
`file.managed` is used to transfer configuration files for split-gpg to the qube.
|
||||
`git.latest` is used to clone the git repository - `submodules: True` is used to pull in all submodules.
|
||||
|
||||
There *is* a salt gem state, which could be used to install gems:
|
||||
```
|
||||
qubes_doc_gems:
|
||||
gem.installed:
|
||||
- names:
|
||||
- jekyll
|
||||
```
|
||||
But the results are variable, and some gems cannot be installed by this method.
|
||||
So we fall back to using `cmd.run` again to get gems installed.
|
||||
|
8
qubes-doc/clone.sls
Normal file
8
qubes-doc/clone.sls
Normal file
@ -0,0 +1,8 @@
|
||||
qubes-doc_requisite:
|
||||
qvm.template_installed:
|
||||
- name: fedora-40
|
||||
|
||||
qvm-qubes-doc-clone-id:
|
||||
qvm.clone:
|
||||
- name: template-qubes-doc
|
||||
- source: fedora-40
|
4
qubes-doc/clone.top
Normal file
4
qubes-doc/clone.top
Normal file
@ -0,0 +1,4 @@
|
||||
base:
|
||||
dom0:
|
||||
- match: nodegroup
|
||||
- qubes-doc.clone
|
41
qubes-doc/config.sls
Normal file
41
qubes-doc/config.sls
Normal file
@ -0,0 +1,41 @@
|
||||
/home/user/.gitconfig:
|
||||
file.managed:
|
||||
- source:
|
||||
- salt://qubes-doc/doc-gitconfig
|
||||
- user: user
|
||||
- group: user
|
||||
|
||||
/rw/config/gpg-split-domain:
|
||||
file.managed:
|
||||
- source:
|
||||
- salt://qubes-doc/split-gpg-config
|
||||
- user: root
|
||||
- group: root
|
||||
|
||||
https://github.com/QubesOS/qubesos.github.io.git:
|
||||
git.latest:
|
||||
- name: https://github.com/QubesOS/qubesos.github.io.git
|
||||
- target: /home/user/qubesos.github.io
|
||||
- user: user
|
||||
- submodules: True
|
||||
|
||||
'gem update --system':
|
||||
cmd.run:
|
||||
- user: root
|
||||
|
||||
'gem install jekyll bundler':
|
||||
cmd.run:
|
||||
- user: user
|
||||
|
||||
'gem install sass --force':
|
||||
cmd.run:
|
||||
- user: user
|
||||
|
||||
'gem install github-pages':
|
||||
cmd.run:
|
||||
- user: user
|
||||
|
||||
add_webrick:
|
||||
file.append:
|
||||
- name: /home/user/qubesos.github.io/Gemfile
|
||||
- text: 'gem: webrick'
|
3
qubes-doc/config.top
Normal file
3
qubes-doc/config.top
Normal file
@ -0,0 +1,3 @@
|
||||
base:
|
||||
qubes-doc:
|
||||
- qubes-doc.config
|
34
qubes-doc/create.sls
Normal file
34
qubes-doc/create.sls
Normal file
@ -0,0 +1,34 @@
|
||||
include:
|
||||
- qubes-doc.clone
|
||||
|
||||
qubes-doc-present-id:
|
||||
qvm.present:
|
||||
- name: qubes-doc
|
||||
- template: template-qubes-doc
|
||||
- label: gray
|
||||
|
||||
qubes-doc-prefs-id:
|
||||
qvm.prefs:
|
||||
- name: qubes-doc
|
||||
- memory: 800
|
||||
- maxmem: 8000
|
||||
- vcpus: 4
|
||||
|
||||
qubes-doc-features-id:
|
||||
qvm.features:
|
||||
- name: qubes-doc
|
||||
- disable:
|
||||
- service.cups
|
||||
|
||||
'qvm-volume extend qubes-doc:private 50G' :
|
||||
cmd.run
|
||||
|
||||
qubes-doc_update_policy_file:
|
||||
file.blockreplace:
|
||||
- name: /etc/qubes/policy.d/50-config-splitgpg.policy
|
||||
- marker_start: '# Start zone for qubes-doc'
|
||||
- marker_end: '# End zone for qubes-doc'
|
||||
- insert_after_match: '# Any changes made manually may be overwritten by Qubes Configuration Tools.'
|
||||
- content: |
|
||||
qubes.Gpg * qubes-doc @default allow target=sys-gpg
|
||||
qubes.Gpg * qubes-doc sys-gpg allow
|
4
qubes-doc/create.top
Normal file
4
qubes-doc/create.top
Normal file
@ -0,0 +1,4 @@
|
||||
base:
|
||||
dom0:
|
||||
- match: nodegroup
|
||||
- qubes-doc.create
|
17
qubes-doc/doc-gitconfig
Normal file
17
qubes-doc/doc-gitconfig
Normal file
@ -0,0 +1,17 @@
|
||||
[user]
|
||||
name = NAME
|
||||
email = EMAIL
|
||||
signingkey = KEY
|
||||
|
||||
[credential]
|
||||
helper = cache
|
||||
|
||||
[commit]
|
||||
gpgsign = true
|
||||
|
||||
[gpg]
|
||||
program = qubes-gpg-client-wrapper
|
||||
|
||||
[alias]
|
||||
hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
|
||||
|
38
qubes-doc/install.sls
Normal file
38
qubes-doc/install.sls
Normal file
@ -0,0 +1,38 @@
|
||||
# vim: set syntax=yaml ts=2 sw=2 sts=2 et :
|
||||
|
||||
{% if salt['pillar.get']('update_proxy:caching') %}
|
||||
|
||||
{% for repo in salt['file.find']('/etc/yum.repos.d/', name='*repo*') %}
|
||||
{{ repo }}_baseurl:
|
||||
file.replace:
|
||||
- name: {{ repo }}
|
||||
- pattern: 'baseurl.*=.*https://'
|
||||
- repl: 'baseurl=http://HTTPS///'
|
||||
- flags: [ 'IGNORECASE', 'MULTILINE' ]
|
||||
- backup: False
|
||||
{{ repo }}_metalink:
|
||||
file.replace:
|
||||
- name: {{ repo }}
|
||||
- pattern: 'metalink.*=.*https://(.*)basearch'
|
||||
- repl: 'metalink=http://HTTPS///\1basearch&protocol=http'
|
||||
- flags: [ 'IGNORECASE', 'MULTILINE' ]
|
||||
- backup: False
|
||||
|
||||
{% endfor %}
|
||||
|
||||
|
||||
{% endif %}
|
||||
|
||||
qubes-doc_install:
|
||||
pkg.installed:
|
||||
- pkgs:
|
||||
- qubes-core-agent-networking
|
||||
- qubes-core-agent-passwordless-root
|
||||
- qubes-gpg-split
|
||||
- podman
|
||||
- podman-compose
|
||||
- redhat-rpm-config
|
||||
- ruby
|
||||
- ruby-devel
|
||||
- zlib-ng-compat-devel
|
||||
- nodejs
|
5
qubes-doc/install.top
Normal file
5
qubes-doc/install.top
Normal file
@ -0,0 +1,5 @@
|
||||
# vim: set syntax=yaml ts=2 sw=2 sts=2 et :
|
||||
|
||||
base:
|
||||
template-qubes-doc:
|
||||
- qubes-doc.install
|
1
qubes-doc/split-gpg-config
Normal file
1
qubes-doc/split-gpg-config
Normal file
@ -0,0 +1 @@
|
||||
sys-gpg
|
Loading…
Reference in New Issue
Block a user