infra/alain.yml

190 lines
6.3 KiB
YAML

---
- hosts: alains
vars:
alain_twitter_key: !vault |
$ANSIBLE_VAULT;1.1;AES256
39633966646630383235343735343336376637363230336163313664356630383736613730613037
3232626236316132653832333033613934353130376636660a616461326532616364333764656333
36363632656333353539396239663232333938633161323938623061316131613434343632396139
3339376261303962610a363436366136626238623632363166623463363137666261376666613733
64613961363332336365623035336664643436303739666135303037613232353765
alain_twitter_secret: !vault |
$ANSIBLE_VAULT;1.1;AES256
66303530396633333961656662613038306361316635343239613739383933396261353531376161
3561316336633964313063303863386235653637623966630a636131653761646430303038386636
39623364373131636338386466643237383063623239316138316463396565393031386635353633
3738636130363236640a383866393066336265356230393762663830633139623532343839396632
35633466646235636335353163356462656161653734643734663537373763653531376133373035
38396362393961383930383932343334363961663263313932333539386332666361643537633738
646666613437653163613537643034346163
alain_twitter_token: !vault |
$ANSIBLE_VAULT;1.1;AES256
32366631626565633965643530306238333434366563343736613936303631643430653361373764
3736306665643331366439633638386236633165303631650a346339373564623562313938323966
30333431346437656134373135303339633635373465383561653830636634363538393931633966
6434333933396466620a313832323336643464373166353161376234646261653631353938613731
37323363353236626631363862383232316332316633363466383531346635663339363063653663
37656563383163353565396461343565333930343264366535623137373265663337356139343531
663737653935393866633063383239326661
alain_twitter_token_secret: !vault |
$ANSIBLE_VAULT;1.1;AES256
30383237616136316130626638303734386137306434373535356136636164643139343932323263
6333396635336533366434356131326230653532613535340a303962343263313937396434373839
64663833316134343434613430316465353335356462366137633163646632363161353535303238
3363363962393533620a303864633134643565346431363262663535336433613534333662663461
61303635656164376238303432353738393839383533316630383339613663303531363637336665
3661623038613335313234393364326564663333353936316462
tasks:
- name: La naissance d'Alain
user:
name: alain
system: true
- name: Le cerveau d'Alain
become: true
become_user: alain
git:
repo: https://github.com/afpy/alain/
dest: ~alain/src/
notify: restart alain
- name: Setup or upgrade venv
become: true
become_user: alain
command: python3 -m venv --upgrade-deps /home/alain/venv
changed_when: False
- name: Alain s'installe dans sa maison
become: true
become_user: alain
pip:
name: /home/alain/src/
virtualenv_command: /usr/bin/python3 -m venv
virtualenv: "/home/alain/venv/"
- name: Le bazar d'Alain
file:
state: directory
path: /home/alain/log/
owner: alain
group: alain
mode: 0755
- name: Alain découvre les internets
notify: restart alain
copy:
dest: /etc/systemd/system/alain.service
content: |
[Unit]
Description=Alain
After=network.target
[Service]
Type=simple
ExecStart=/home/alain/venv/bin/irc3 --logdir=/home/alain/log alain.ini
User=alain
Group=alain
WorkingDirectory=/home/alain/src/
Restart=on-failure
[Install]
WantedBy=multi-user.target
- name: Les petits secrets d'Alain
copy:
dest: /home/alain/src/alain.ini
owner: alain
group: alain
mode: 0660
content: |
[bot]
nick = alain_afpy
username = alain
realname = I'm the AFPy mascot
host = irc.libera.chat
port = 7000
ssl = true
includes =
irc3.plugins.core
irc3.plugins.ctcp
irc3.plugins.feeds
irc3.plugins.human
irc3.plugins.logger
irc3.plugins.uptime
alain.alain3
channel = afpy
autojoins =
afpy
[twitter]
key = {{ alain_twitter_key }}
secret = {{ alain_twitter_secret }}
token = {{ alain_twitter_token }}
token_secret = {{ alain_twitter_token_secret }}
[irc3.plugins.command]
cmd = !
guard = irc3.plugins.command.mask_based_policy
[irc3.plugins.logger]
filename = /var/www/logs.afpy.org/log-{date:%Y-%m-%d}.txt
[irc3.plugins.logger.formatters]
privmsg = {date:%H:%M} <{mask.nick}> {data}
[irc3.plugins.command.masks]
gawel!~gael@amandine.bearstech.com = all_permissions
jpcw!jpcw@*.camguilhem.net = all_permissions
mdk!~mdk@python/psf/mdk = all_permissions
feth!*@*.tutu.info = all_permissions
* = view
[irc3.plugins.feeds]
delay = 20
directory = ~/.irc3/feeds/
dispatcher = alain.alain3.feed_dispatcher
channels = afpy
planet = https://planet.afpy.org/atom.xml
planet.fmt = {entry.title} - {entry.link}
planet.delay = 20
notify: restart alain
- service: name=alain enabled=yes state=started daemon_reload=yes
- name: La serrure de la maison d'Alain
file:
state: directory
path: /home/alain/.ssh/
owner: alain
group: alain
mode: 0755
- name: La clef de la maison d'Alain
copy:
content: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMx6KkjC7HAId4/nFnkiHxUb8d7ybJlfLbFu2NFKXpqI github-ci"
dest: /home/alain/.ssh/authorized_keys
owner: alain
group: alain
mode: 0644
- name: Alain peut se redémarrer tout seul
lineinfile:
path: /etc/sudoers
state: present
regexp: '^alain '
line: "alain ALL = NOPASSWD: /bin/systemctl restart alain.service"
validate: /usr/sbin/visudo -cf %s
handlers:
- name: restart alain
systemd:
daemon_reload: true
state: restarted
name: alain