From 62e30e52de6497768eb1a817d2ddb35335eba8eb Mon Sep 17 00:00:00 2001 From: Kendall Nelson Date: Mon, 2 Aug 2021 03:43:25 -0700 Subject: [PATCH] Setting Up Ansible For ptgbot Heavily taken from statusbot, but removed wiki and twitter defaults. Change-Id: I7b1958dbe37e5d25b8fde746235c88a4d6763ffd --- playbooks/roles/ptgbot/README.rst | 1 + playbooks/roles/ptgbot/defaults/main.yaml | 10 ++++ .../roles/ptgbot/files/docker-compose.yaml | 18 +++++++ playbooks/roles/ptgbot/files/logging.config | 44 ++++++++++++++++ playbooks/roles/ptgbot/tasks/main.yaml | 52 +++++++++++++++++++ .../roles/ptgbot/templates/ptgbot.config.j2 | 9 ++++ playbooks/service-eavesdrop.yaml | 1 + zuul.d/infra-prod.yaml | 1 + zuul.d/system-config-run.yaml | 2 + 9 files changed, 138 insertions(+) create mode 100644 playbooks/roles/ptgbot/README.rst create mode 100644 playbooks/roles/ptgbot/defaults/main.yaml create mode 100644 playbooks/roles/ptgbot/files/docker-compose.yaml create mode 100644 playbooks/roles/ptgbot/files/logging.config create mode 100644 playbooks/roles/ptgbot/tasks/main.yaml create mode 100644 playbooks/roles/ptgbot/templates/ptgbot.config.j2 diff --git a/playbooks/roles/ptgbot/README.rst b/playbooks/roles/ptgbot/README.rst new file mode 100644 index 0000000000..d203301d24 --- /dev/null +++ b/playbooks/roles/ptgbot/README.rst @@ -0,0 +1 @@ +Deploy ptgbot diff --git a/playbooks/roles/ptgbot/defaults/main.yaml b/playbooks/roles/ptgbot/defaults/main.yaml new file mode 100644 index 0000000000..ea4623b805 --- /dev/null +++ b/playbooks/roles/ptgbot/defaults/main.yaml @@ -0,0 +1,10 @@ +ptgbot_nick: 'opendevptg_{{ 100 | random }}' +ptgbot_pass: '' +ptgbot_server: 'irc.oftc.net' + +ptgbot_auth_nicks: + - testonly +ptgbot_channels: + - opendev-sandbox + +ptgbot_irclogs_url : 'https://meetings.opendev.org/' diff --git a/playbooks/roles/ptgbot/files/docker-compose.yaml b/playbooks/roles/ptgbot/files/docker-compose.yaml new file mode 100644 index 0000000000..f819fb372e --- /dev/null +++ b/playbooks/roles/ptgbot/files/docker-compose.yaml @@ -0,0 +1,18 @@ +# Version 2 is the latest that is supported by docker-compose in +# Ubuntu Xenial. +version: '2' + +services: + ptgbot: + image: docker.io/opendevorg/ptgbot:latest + network_mode: host + restart: always + logging: + driver: syslog + options: + tag: "docker-ptgbot" + volumes: + # This contains the main config, channel config, and ssh key + - /etc/ptgbot:/etc/ptgbot + - /var/lib/ptgbot:/var/lib/ptgbot + - /var/log/ptgbot:/var/log/ptgbot diff --git a/playbooks/roles/ptgbot/files/logging.config b/playbooks/roles/ptgbot/files/logging.config new file mode 100644 index 0000000000..167aace3ab --- /dev/null +++ b/playbooks/roles/ptgbot/files/logging.config @@ -0,0 +1,44 @@ +[loggers] +keys=root,ptgbot,irc + +[handlers] +keys=console,debug,normal + +[formatters] +keys=simple + +[logger_root] +level=WARNING +handlers=console + +[logger_ptgbot] +level=DEBUG +handlers=debug,normal +qualname=ptgbot + +[logger_irc] +level=DEBUG +handlers=debug,normal +qualname=irc + +[handler_console] +level=WARNING +class=StreamHandler +formatter=simple +args=(sys.stdout,) + +[handler_debug] +level=DEBUG +class=logging.handlers.TimedRotatingFileHandler +formatter=simple +args=('/var/log/ptgbot/ptgbot_debug.log', 'midnight', 1, 30,) + +[handler_normal] +level=INFO +class=logging.handlers.TimedRotatingFileHandler +formatter=simple +args=('/var/log/ptgbot/ptgbot.log', 'midnight', 1, 30,) + +[formatter_simple] +format=%(asctime)s %(levelname)s %(name)s: %(message)s +datefmt= diff --git a/playbooks/roles/ptgbot/tasks/main.yaml b/playbooks/roles/ptgbot/tasks/main.yaml new file mode 100644 index 0000000000..26a909aa0b --- /dev/null +++ b/playbooks/roles/ptgbot/tasks/main.yaml @@ -0,0 +1,52 @@ +- name: Ensure ptgbot directories + file: + state: directory + path: '{{ item }}' + owner: root + group: root + mode: 0755 + loop: + - /etc/ptgbot + - /etc/ptgbot-docker + - /var/log/ptgbot + - /var/lib/ptgbot + - /var/lib/ptgbot/www + +- name: Put ptgbot config in place + template: + src: ptgbot.config.j2 + dest: /etc/ptgbot/ptgbot.config + owner: root + group: root + mode: 0600 + register: ptgbot_config_copied + +- name: Put ptgbot logging config in place + copy: + src: logging.config + dest: /etc/ptgbot/logging.config + owner: root + group: root + mode: 0644 + +- name: Put docker-compose file in place + copy: + src: docker-compose.yaml + dest: /etc/ptgbot-docker/docker-compose.yaml + owner: root + group: root + mode: 0644 + +- name: Run docker-compose pull + shell: + cmd: docker-compose pull + chdir: /etc/ptgbot-docker/ + +- name: Run docker-compose up + shell: + cmd: "docker-compose up -d {{ ptgbot_config_copied is changed | ternary('--force-recreate', '') }}" + chdir: /etc/ptgbot-docker/ + +- name: Run docker prune to cleanup unneeded images + shell: + cmd: docker image prune -f diff --git a/playbooks/roles/ptgbot/templates/ptgbot.config.j2 b/playbooks/roles/ptgbot/templates/ptgbot.config.j2 new file mode 100644 index 0000000000..1f27c4d4c2 --- /dev/null +++ b/playbooks/roles/ptgbot/templates/ptgbot.config.j2 @@ -0,0 +1,9 @@ +{ + "irc_nick": "{{ ptgbot_nick }}", + "irc_pass": "{{ ptgbot_pass }}", + "irc_server": "{{ ptgbot_server }}", + "irc_port": 6697, + "irc_channel": "{{ ptgbot_channels | join(',') }}", + "db_filename": "/var/lib/ptgbot/www/ptg.json", + "log_config": "/etc/ptgbot/logging.config" +} diff --git a/playbooks/service-eavesdrop.yaml b/playbooks/service-eavesdrop.yaml index ca230c3cd0..11b31dddd4 100644 --- a/playbooks/service-eavesdrop.yaml +++ b/playbooks/service-eavesdrop.yaml @@ -7,6 +7,7 @@ - sync-project-config - accessbot - gerritbot + - ptgbot - statusbot - limnoria - matrix-eavesdrop diff --git a/zuul.d/infra-prod.yaml b/zuul.d/infra-prod.yaml index ceff5edcdb..bbc805086e 100644 --- a/zuul.d/infra-prod.yaml +++ b/zuul.d/infra-prod.yaml @@ -488,6 +488,7 @@ - playbooks/roles/iptables/ - playbooks/roles/accessbot - playbooks/roles/limnoria + - playbooks/roles/ptgbot - playbooks/roles/statusbot - playbooks/roles/logrotate - playbooks/roles/matrix-eavesdrop diff --git a/zuul.d/system-config-run.yaml b/zuul.d/system-config-run.yaml index 2aa572ab17..bc4db9d60d 100644 --- a/zuul.d/system-config-run.yaml +++ b/zuul.d/system-config-run.yaml @@ -132,6 +132,7 @@ - statusbot-container-image - ircbot-container-image - matrix-eavesdrop-container-image + - ptgbot-container-image nodeset: nodes: - name: bridge.openstack.org @@ -162,6 +163,7 @@ - playbooks/roles/matrix-eavesdrop - playbooks/roles/matrix-gerritbot - playbooks/roles/statusbot + - playbooks/roles/ptgbot - playbooks/zuul/templates/group_vars/eavesdrop.yaml.j2 - docker/accessbot/ - docker/ircbot