From 2d087767089685b5740fdecde462121bfad69d3a Mon Sep 17 00:00:00 2001 From: Adam Miller Date: Wed, 15 Feb 2017 22:00:13 +0000 Subject: [PATCH] loopabull roles added and loopabull playbook updated Signed-off-by: Adam Miller --- playbooks/groups/loopabull.yml | 23 +++ roles/loopabull/README.md | 39 ++++ roles/loopabull/defaults/main.yml | 39 ++++ roles/loopabull/handlers/main.yml | 2 + roles/loopabull/meta/main.yml | 222 +++++++++++++++++++++ roles/loopabull/tasks/main.yml | 27 +++ roles/loopabull/templates/loopabull.yml.j2 | 40 ++++ roles/loopabull/vars/main.yml | 2 + 8 files changed, 394 insertions(+) create mode 100644 roles/loopabull/README.md create mode 100644 roles/loopabull/defaults/main.yml create mode 100644 roles/loopabull/handlers/main.yml create mode 100644 roles/loopabull/meta/main.yml create mode 100644 roles/loopabull/tasks/main.yml create mode 100644 roles/loopabull/templates/loopabull.yml.j2 create mode 100644 roles/loopabull/vars/main.yml diff --git a/playbooks/groups/loopabull.yml b/playbooks/groups/loopabull.yml index d5e0dd3709..2d38a0f38a 100644 --- a/playbooks/groups/loopabull.yml +++ b/playbooks/groups/loopabull.yml @@ -29,3 +29,26 @@ handlers: - include: "{{ handlers }}/restart_services.yml" + +- name: Deploy and configure loopabull + hosts: loopabull-stg + user: root + gather_facts: True + + vars_files: + - /srv/web/infra/ansible/vars/global.yml + - "/srv/private/ansible/vars.yml" + - /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml + + roles: + - { + role: loopabull, + plugin: fedmsg, + routing_keys: [ + "org.fedoraproject.prod.buildsys.build.state.change" + ], + playbooks_dir: /usr/local/loopabull-playbooks/, + ansible_cfg_path: /etc/ansible/ansible.cfg, + playbook_cmd: /usr/bin/ansible-playbook + } + diff --git a/roles/loopabull/README.md b/roles/loopabull/README.md new file mode 100644 index 0000000000..45bcb022c7 --- /dev/null +++ b/roles/loopabull/README.md @@ -0,0 +1,39 @@ +Loopabull +========= + +Fedora's deployment of [loopabull](https://github.com/maxamillion/loopabull) + +Role Variables +-------------- + +See defaults/main.yml for full docs on role variables + +Example Playbook +---------------- + +Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too: + + - hosts: servers + roles: + - { + role: loopabull, + plugin: fedmsg, + routing_keys: [ + "org.fedoraproject.prod.buildsys.build.state.change" + ], + playbooks_dir: /usr/local/loopabull-playbooks/, + ansible_cfg_path: /etc/ansible/ansible.cfg, + playbook_cmd: /usr/bin/ansible-playbook + + } + +License +------- + +GPLv3+ + +Author Information +------------------ + +Adam Miller (maxamillion@fedoraproject.org) + diff --git a/roles/loopabull/defaults/main.yml b/roles/loopabull/defaults/main.yml new file mode 100644 index 0000000000..4da229d562 --- /dev/null +++ b/roles/loopabull/defaults/main.yml @@ -0,0 +1,39 @@ +--- +# defaults file for loopabull +# + +# playbooks git repo +# +# URL to the git repo to clone that contains loopabull playbooks +playbooks_repo: "https://pagure.io/releng-automation.git" + +# plugin +# +# This is the selected plugin that will interface with your prefered origin of +# events (message bus or otherwise). +plugin: fedmsg + +# routing_keys +# +# This is a list of routing keys that will be yielded by your selected plugin +# that should be acted upon (i.e. - these keys should trigger an ansible +# playbook by the same name). +routing_keys: + - org.fedoraproject.prod.buildsys.build.state.change + +# playbooks_dir +# +# The full path location of the directory containing your playbooks that +# coorelate to the routing_keys +playbooks_dir: /usr/share/doc/loopabull/examples/playbooks/ + +# ansible_cfg_path +# +# Full path location of the ansible configuration to use +ansible_cfg_path: /etc/ansible/ansible.cfg + +# playbook_cmd +# +# Command to use in place of ansible-playbook (for those that want to use +# Ansible Tower commands or custom wrappers of their own) +playbook_cmd: /usr/bin/rbac-playbook diff --git a/roles/loopabull/handlers/main.yml b/roles/loopabull/handlers/main.yml new file mode 100644 index 0000000000..e222efcc5d --- /dev/null +++ b/roles/loopabull/handlers/main.yml @@ -0,0 +1,2 @@ +--- +# handlers file for loopabull diff --git a/roles/loopabull/meta/main.yml b/roles/loopabull/meta/main.yml new file mode 100644 index 0000000000..2e1a91444d --- /dev/null +++ b/roles/loopabull/meta/main.yml @@ -0,0 +1,222 @@ +galaxy_info: + author: your name + description: your description + company: your company (optional) + + # If the issue tracker for your role is not on github, uncomment the + # next line and provide a value + # issue_tracker_url: http://example.com/issue/tracker + + # Some suggested licenses: + # - BSD (default) + # - MIT + # - GPLv2 + # - GPLv3 + # - Apache + # - CC-BY + license: license (GPLv2, CC-BY, etc) + + min_ansible_version: 1.2 + + # Optionally specify the branch Galaxy will use when accessing the GitHub + # repo for this role. During role install, if no tags are available, + # Galaxy will use this branch. During import Galaxy will access files on + # this branch. If travis integration is cofigured, only notification for this + # branch will be accepted. Otherwise, in all cases, the repo's default branch + # (usually master) will be used. + #github_branch: + + # + # Below are all platforms currently available. Just uncomment + # the ones that apply to your role. If you don't see your + # platform on this list, let us know and we'll get it added! + # + #platforms: + #- name: OpenBSD + # versions: + # - all + # - 5.6 + # - 5.7 + # - 5.8 + # - 5.9 + # - 6.0 + #- name: Fedora + # versions: + # - all + # - 16 + # - 17 + # - 18 + # - 19 + # - 20 + # - 21 + # - 22 + # - 23 + # - 24 + # - 25 + #- name: DellOS + # versions: + # - all + # - 10 + # - 6 + # - 9 + #- name: MacOSX + # versions: + # - all + # - 10.10 + # - 10.11 + # - 10.12 + # - 10.7 + # - 10.8 + # - 10.9 + #- name: Synology + # versions: + # - all + # - any + #- name: Junos + # versions: + # - all + # - any + #- name: GenericBSD + # versions: + # - all + # - any + #- name: Void Linux + # versions: + # - all + # - any + #- name: GenericLinux + # versions: + # - all + # - any + #- name: NXOS + # versions: + # - all + # - any + #- name: IOS + # versions: + # - all + # - any + #- name: Amazon + # versions: + # - all + # - 2013.03 + # - 2013.09 + # - 2016.03 + # - 2016.09 + #- name: ArchLinux + # versions: + # - all + # - any + #- name: FreeBSD + # versions: + # - all + # - 10.0 + # - 10.1 + # - 10.2 + # - 10.3 + # - 11.0 + # - 8.0 + # - 8.1 + # - 8.2 + # - 8.3 + # - 8.4 + # - 9.0 + # - 9.1 + # - 9.1 + # - 9.2 + # - 9.3 + #- name: Ubuntu + # versions: + # - all + # - lucid + # - maverick + # - natty + # - oneiric + # - precise + # - quantal + # - raring + # - saucy + # - trusty + # - utopic + # - vivid + # - wily + # - xenial + # - yakkety + #- name: Debian + # versions: + # - all + # - etch + # - jessie + # - lenny + # - sid + # - squeeze + # - stretch + # - wheezy + #- name: Alpine + # versions: + # - all + # - any + #- name: EL + # versions: + # - all + # - 5 + # - 6 + # - 7 + #- name: Windows + # versions: + # - all + # - 2012R2 + #- name: SmartOS + # versions: + # - all + # - any + #- name: opensuse + # versions: + # - all + # - 12.1 + # - 12.2 + # - 12.3 + # - 13.1 + # - 13.2 + #- name: SLES + # versions: + # - all + # - 10SP3 + # - 10SP4 + # - 11 + # - 11SP1 + # - 11SP2 + # - 11SP3 + # - 11SP4 + # - 12 + # - 12SP1 + #- name: GenericUNIX + # versions: + # - all + # - any + #- name: Solaris + # versions: + # - all + # - 10 + # - 11.0 + # - 11.1 + # - 11.2 + # - 11.3 + #- name: eos + # versions: + # - all + # - Any + + galaxy_tags: [] + # List tags for your role here, one per line. A tag is + # a keyword that describes and categorizes the role. + # Users find roles by searching for tags. Be sure to + # remove the '[]' above if you add tags to this list. + # + # NOTE: A tag is limited to a single word comprised of + # alphanumeric characters. Maximum 20 tags per role. + +dependencies: [] + # List your role dependencies here, one per line. + # Be sure to remove the '[]' above if you add dependencies + # to this list. \ No newline at end of file diff --git a/roles/loopabull/tasks/main.yml b/roles/loopabull/tasks/main.yml new file mode 100644 index 0000000000..946430a91b --- /dev/null +++ b/roles/loopabull/tasks/main.yml @@ -0,0 +1,27 @@ +--- +# tasks file for loopabull + +- name: Install required packages + package: name="{{ item }}" state=installed + with_items: + - git + +- name: install loopabull + dnf: name=loopabull state=latest + +- name: configure loopabull + template: + src: loopabull.yml.j2 + dest: {{ansible_cfg_path}} + +- name: clone the playbooks repo into playbooks dir + git: + repo: "https://pagure.io/releng-automation.git" + dest: {{playbooks_dir}} + +- name: start and enable loopabull + service: + name: loopabull + state: started + enabled: yes + diff --git a/roles/loopabull/templates/loopabull.yml.j2 b/roles/loopabull/templates/loopabull.yml.j2 new file mode 100644 index 0000000000..84fb9059b7 --- /dev/null +++ b/roles/loopabull/templates/loopabull.yml.j2 @@ -0,0 +1,40 @@ +# Loopabull (https://github.com/maxamillion/loopabull) config file +# +# There are three main definitions: ansible, routing_keys, plugin. These will be +# explained in comments above each section below. + +# plugin +# +# This is the selected plugin that will interface with your prefered origin of +# events (message bus or otherwise). +plugin: {{plugin}} + +# routing_keys +# +# This is a list of routing keys that will be yielded by your selected plugin +# that should be acted upon (i.e. - these keys should trigger an ansible +# playbook by the same name). +routing_keys: +{% for rkey in routing_keys %} + - {{ rkey }} +{% endfor %} + +# ansible +# +# This section will tell Loopabull about information to pass to the +# ansible-playbook command. +# +# playbooks_dir +# The full path location of the directory containing your playbooks that +# coorelate to the routing_keys +# +# cfg_file_path +# Full path location of the ansible configuration to use +# +# playbook_cmd +# Command to use in place of ansible-playbook (for those that want to use +# Ansible Tower commands or custom wrappers of their own) +ansible: + playbooks_dir: {{ playbooks_dir }} + cfg_file_path: {{ cfg_file_path }} + playbook_cmd: {{ playbook_cmd }} \ No newline at end of file diff --git a/roles/loopabull/vars/main.yml b/roles/loopabull/vars/main.yml new file mode 100644 index 0000000000..f9bf0003df --- /dev/null +++ b/roles/loopabull/vars/main.yml @@ -0,0 +1,2 @@ +--- +# vars file for loopabull