blob: d5df01d14768fdced9078c3a88210b0705d4671c (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
|
This repository contains infrastructure-as-code ansible configurations
for various pieces of the EmacsConf infrastructure.
ansible-galaxy collection install community.general
Production: needs prod-vars.yml, see prod-vars.yml.sample
Docker: needs docker-vars.yml, see docker-vars.yml.sample
* Wiki
** Ikiwiki
*** Prod
When you update htmlscrubber.pm in wiki/templates:
ansible-playbook -i inventory.yml prod-playbook.yml --tags wiki-plugins
ansible-playbook -i docker-inventory.yml docker-reuse-playbook.yml --tags wiki-plugins
ansible-playbook -i inventory.yml prod-playbook.yml --tags wiki
*** Docker
Goal:
- [X] Load the wiki at http://localhost:28080
- [X] Add SSH key
- [X] Add as remote
- [X] Push to the wiki
- [ ] Have the changes show up automatically
- [X] Have ansible copy the SSH key
file:/docker:emacsconf-front:/home/ikiwiki/emacsconf.setup
Creating:
ansible-playbook -i docker-inventory.yml docker-playbook.yml --tags wiki
Reusing:
ansible-playbook -i docker-inventory.yml docker-reuse-playbook.yml --tags wiki
Copying your SSH key:
set the docker_ssh_key Ansible variable to the path of your public key
or
docker cp ~/.ssh/id_rsa.pub emacsconf-front:/home/ikiwiki/.ssh/authorized_keys2
docker exec emacsconf-front chown ikiwiki:ikiwiki /home/ikiwiki/.ssh/authorized_keys2
docker exec emacsconf-front chmod 600 /home/ikiwiki/.ssh/authorized_keys2
http://localhost:28080/
ssh localhost -p 2022
docker exec -it emacsconf-front /bin/bash
git remote add docker ssh://ikiwiki@127.0.0.1:2222/var/www/wiki.git
Debugging
ssh wiki 'cd /var/www/wiki.git; git update-ref refs/heads/master HEAD^' && git push docker 2022-pages
** Publishing
*** Prod
To run the playbook and publish the main schedule:
#+begin_src sh
ansible-playbook -i inventory.yml prod-playbook.yml --tags wiki-publish --extra-vars='{"force_publish": true}'
#+end_src
#+RESULTS:
:results:
:end:
Update a specific talk's before/nav and the main schedule: (ex: wayland)
ansible-playbook playbook.yml -e '{"slug": "wayland"}' -i inventory.yml --tags publish
Force-publish the schedule:
ansible-playbook -i inventory.yml prod-playbook.yml --tags publish -e force_publish=true
*** Docker
Creating:
ansible-playbook -i docker-inventory.yml docker-playbook.yml --tags wiki,publish
Reusing:
ansible-playbook -i docker-inventory.yml docker-reuse-playbook.yml --tags publish
With docker:
https://stackoverflow.com/questions/24738264/how-to-test-ansible-playbook-using-docker
* Pad
** Production
ansible-playbook -i inventory.yml prod-playbook.yml --tags pad,proxy
To fall back to wikimedia rewrite:
ansible-playbook -i inventory.yml prod-playbook.yml --tags proxy --extra-vars='{"use_wikimedia": true}'
You can still access pads directly with direct/p like this:
https://pad.emacsconf.org/direct/p/2022-journalism
To undo wikimedia rewrite:
ansible-playbook -i inventory.yml prod-playbook.yml --tags proxy
To prepare for a load test:
ansible-playbook -i inventory.yml prod-playbook.yml --tags pad --extra-vars='{"etherpad_load_test": true}'
** Docker
Creating:
ansible-playbook -i docker-inventory.yml docker-playbook.yml --tags pad
Reusing an existing container:
ansible-playbook -i docker-inventory.yml docker-reuse-playbook.yml --tags pad
Connecting:
docker exec -it emacsconf-pad /bin/bash
Creating pads
ansible-playbook -i docker-inventory.yml docker-reuse-playbook.yml --tags create-pads
file:/docker:emacsconf-pad:/home/etherpad/etherpad/
Getting the API key
#+NAME: pad-key
#+begin_src sh
docker exec emacsconf-pad cat /home/etherpad/etherpad/APIKEY.txt
#+end_src
#+RESULTS: pad-key
:results:
b7a15dc34cc7f6917cca6cd9a2b4b92145af7c7cd9b341af34869ab8cd3568be
:end:
#+begin_src sh :var padkey=pad-key
echo curl "http://localhost:9001/api/1/createPad?apikey=$padkey&padID=emacsconf-2022"
curl "http://localhost:9001/api/1/createPad?apikey=$padkey&padID=emacsconf-2022"
#+end_src
#+RESULTS:
:results:
curl http://localhost:9001/api/1/createPad?apikey=b7a15dc34cc7f6917cca6cd9a2b4b92145af7c7cd9b341af34869ab8cd3568be&padID=emacsconf-2022
{"code":0,"message":"ok","data":null}
:end:
** Useful
https://github.com/systemli/ansible-role-etherpad
https://gist.github.com/aaronpk/7307172
* Pad proxy
ansible-playbook -i inventory.yml prod-playbook.yml --tags proxy --extra-vars='{"use_wikimedia": false}'
ansible-playbook -i inventory.yml prod-playbook.yml --tags proxy --extra-vars='{"use_wikimedia": true}'
* Upload
/ssh:media|sudo:upload@media:~upload
/ssh:media|sudo::/etc/nginx/sites-available
* Stream
Setting up icecast:
ansible-playbook -i inventory.yml prod-playbook.yml --tags stream
Test with a file:
ansible-playbook -i inventory.yml prod-playbook.yml --tags test-stream-file -e icecast_test=~/code/emacsconf-2021-emacs-news-highlights/full.webm -e icecast_test_track=dev
Play the stream with MPV:
ansible-playbook -i inventory.yml prod-playbook.yml --tags test-stream-mpv -e icecast_test_track=dev -e test=mpv
ansible-playbook -i inventory.yml prod-playbook.yml --tags test-stream-pattern -e icecast_test_track=dev -e test=pattern
* Captioning
Set up whisper
ansible-playbook -i inventory.yml prod-playbook.yml --tags caption
ffmpeg -y -i handwritten/reencode.webm -t 60 -vcodec copy -acodec copy test.webm
|