Skip to content
This repository has been archived by the owner on Jul 14, 2021. It is now read-only.

Commit

Permalink
Merge pull request #64 from jaredledvina/feature/support-sensu-commun…
Browse files Browse the repository at this point in the history
…ity-repos

Support installing packages from Sensu Community Repos
  • Loading branch information
jaredledvina committed Mar 14, 2019
2 parents 1e4790e + ca442e4 commit 60bc270
Show file tree
Hide file tree
Showing 16 changed files with 375 additions and 150 deletions.
22 changes: 20 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,20 +109,38 @@ If you are using this role with Amazon Linux or Amazon Linux 2, you must
override the following variables on those host(s):

Amazon Linux:
```
```yaml
sensu_go_repos_overrides:
yum:
rpm: https://packagecloud.io/sensu/stable/el/6/x86_64
rpm-src: https://packagecloud.io/sensu/stable/el/6/SRPMS
sensu_go_community_repos_overrides:
yum:
rpm: https://packagecloud.io/sensu/community/el/6/x86_64
rpm-src: https://packagecloud.io/sensu/community/el/6/SRPMS
```
Amazon Linux 2:
```
```yaml
sensu_go_repos_overrides:
yum:
rpm: https://packagecloud.io/sensu/stable/el/7/x86_64
rpm-src: https://packagecloud.io/sensu/stable/el/7/SRPMS
sensu_go_community_repos_overrides:
yum:
rpm: https://packagecloud.io/sensu/community/el/7/x86_64
rpm-src: https://packagecloud.io/sensu/community/el/7/SRPMS
```

If you are using this rile with Debian 8 or 9 hosts, you must overide the
following variable:

```yaml
sensu_go_manage_community_repo: false
```

This is due to Debian packages not being updated to the community repos
pending the resolution of https://github.com/sensu/sensu-plugins-omnibus/issues/3


License
-------
Expand Down
33 changes: 31 additions & 2 deletions defaults/main.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
sensu_go_manage_repo: true
sensu_go_repo_packages:
sensu_go_repo_dependencies:
apt:
- curl
- gnupg
Expand All @@ -12,7 +12,6 @@ sensu_go_repo_packages:
dnf:
- python
- python-dnf
sensu_go_repos_overrides: {}
sensu_go_repos:
apt:
key_url: https://packagecloud.io/sensu/stable/gpgkey
Expand All @@ -35,7 +34,32 @@ sensu_go_repos:
gpgkey: https://packagecloud.io/sensu/stable/gpgkey
rpm: https://packagecloud.io/sensu/stable/el/7/$basearch
rpm-src: https://packagecloud.io/sensu/stable/el/7/SRPMS
sensu_go_repos_overrides: {}

sensu_go_manage_community_repo: true
sensu_go_community_repos:
apt:
key_url: https://packagecloud.io/sensu/community/gpgkey
key_id: 6A8D4DDAE50F9E23
deb: deb https://packagecloud.io/sensu/community/{{ ansible_distribution | lower }}/ {{ ansible_distribution_release | lower }} main
deb-src: deb-src https://packagecloud.io/sensu/community/{{ ansible_distribution | lower }}/ {{ ansible_distribution_release | lower }} main
yum:
gpgcheck: false
repo_gpgcheck: true
sslverify: true
metadata_expire: 300
gpgkey: https://packagecloud.io/sensu/community/gpgkey
rpm: https://packagecloud.io/sensu/community/el/$releasever/$basearch
rpm-src: https://packagecloud.io/sensu/community/el/$releasever/SRPMS
dnf:
gpgcheck: false
repo_gpgcheck: true
sslverify: true
metadata_expire: 300
gpgkey: https://packagecloud.io/sensu/community/gpgkey
rpm: https://packagecloud.io/sensu/community/el/7/$basearch
rpm-src: https://packagecloud.io/sensu/community/el/7/SRPMS
sensu_go_community_repos_overrides: {}

sensu_go_install_components: true
# List of specific Sensu Go components to install and manage
Expand All @@ -44,6 +68,11 @@ sensu_go_components:
- agent
- cli

# Simple opt-out boolean flag for installing Sensu Go Community packages
sensu_go_install_community_packages: true
# List of specific Sensu Go Community packages to install and manage
sensu_go_community_packages: []

sensu_go_config_dir:
path: /etc/sensu
owner: sensu
Expand Down
8 changes: 8 additions & 0 deletions molecule/amazonlinux/molecule.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,20 @@ provisioner:
yum:
rpm: https://packagecloud.io/sensu/stable/el/6/x86_64
rpm-src: https://packagecloud.io/sensu/stable/el/6/SRPMS
sensu_go_community_repos_overrides:
yum:
rpm: https://packagecloud.io/sensu/community/el/6/x86_64
rpm-src: https://packagecloud.io/sensu/community/el/6/SRPMS
inspec_version: el6
amazonlinux-2:
sensu_go_repos_overrides:
yum:
rpm: https://packagecloud.io/sensu/stable/el/7/x86_64
rpm-src: https://packagecloud.io/sensu/stable/el/7/SRPMS
sensu_go_community_repos_overrides:
yum:
rpm: https://packagecloud.io/sensu/community/el/7/x86_64
rpm-src: https://packagecloud.io/sensu/community/el/7/SRPMS
inspec_version: el7
verifier:
name: inspec
Expand Down
2 changes: 2 additions & 0 deletions molecule/debian/molecule.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,10 @@ provisioner:
host_vars:
debian-8:
inspec_version: ubuntu1604
sensu_go_manage_community_repo: false
debian-9:
inspec_version: ubuntu1604
sensu_go_manage_community_repo: false
verifier:
name: inspec
directory: ../shared/
Expand Down
17 changes: 17 additions & 0 deletions molecule/shared/tests/test_default.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,20 @@
it { should exist }
it { should be_enabled }
end
describe apt('https://packagecloud.io/sensu/community/debian/') do
it { should_not exist }
end
end

if os.name == 'ubuntu'
describe apt('https://packagecloud.io/sensu/stable/ubuntu/') do
it { should exist }
it { should be_enabled }
end
describe apt('https://packagecloud.io/sensu/community/ubuntu/') do
it { should exist }
it { should be_enabled }
end
end

if os.redhat?
Expand All @@ -52,6 +59,16 @@
it { should exist }
it { should be_enabled }
end

describe yum.repo('sensu_go_community') do
it { should exist }
it { should be_enabled }
end

describe yum.repo('sensu_go_community-source') do
it { should exist }
it { should be_enabled }
end
end

describe package('sensu-go-backend') do
Expand Down
20 changes: 10 additions & 10 deletions molecule/shared/verify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,20 @@
inspec_test_directory: "/tmp/molecule/inspec"
inspec_downloads:
el6:
url: https://packages.chef.io/files/stable/inspec/3.6.6/el/6/inspec-3.6.6-1.el6.x86_64.rpm
sha256: 69b05dd28304b7c915381b88f035b3239d1328d891faef18aa30954266fc4da2
url: https://packages.chef.io/files/stable/inspec/3.7.1/el/6/inspec-3.7.1-1.el6.x86_64.rpm
sha256: b976fdbf8ce8374a56a7b0a28912a2217124cc3b6b35912bcbf7f4e4a26d1aea
el7:
url: https://packages.chef.io/files/stable/inspec/3.6.6/el/7/inspec-3.6.6-1.el7.x86_64.rpm
sha256: 2a950a2aeecf2c26b16285a2fcec244da97c636d47d5928ee181620e80472cac
url: https://packages.chef.io/files/stable/inspec/3.7.1/el/7/inspec-3.7.1-1.el7.x86_64.rpm
sha256: 2f31bebb15e1fc9fc5134719dfa623661bcf3b0c7bf77c6f85b9779aabd38896
ubuntu1404:
url: https://packages.chef.io/files/stable/inspec/3.6.6/ubuntu/14.04/inspec_3.6.6-1_amd64.deb
sha256: 4294bdd3f8cd1aff3e6d912d2c48b345d0ec60ecefd92310cb3ae561b909cfec
url: https://packages.chef.io/files/stable/inspec/3.7.1/ubuntu/14.04/inspec_3.7.1-1_amd64.deb
sha256: 1c9ccb80ba39484115d4c1d7e2b1258615e9c56079f86963dee9fb2120b94dc3
ubuntu1604:
url: https://packages.chef.io/files/stable/inspec/3.6.6/ubuntu/16.04/inspec_3.6.6-1_amd64.deb
sha256: 4294bdd3f8cd1aff3e6d912d2c48b345d0ec60ecefd92310cb3ae561b909cfec
url: https://packages.chef.io/files/stable/inspec/3.7.1/ubuntu/16.04/inspec_3.7.1-1_amd64.deb
sha256: 1c9ccb80ba39484115d4c1d7e2b1258615e9c56079f86963dee9fb2120b94dc3
ubuntu1804:
url: https://packages.chef.io/files/stable/inspec/3.6.6/ubuntu/18.04/inspec_3.6.6-1_amd64.deb
sha256: 4294bdd3f8cd1aff3e6d912d2c48b345d0ec60ecefd92310cb3ae561b909cfec
url: https://packages.chef.io/files/stable/inspec/3.7.1/ubuntu/18.04/inspec_3.7.1-1_amd64.deb
sha256: 1c9ccb80ba39484115d4c1d7e2b1258615e9c56079f86963dee9fb2120b94dc3
inspec_package_deps:
- lsof
- net-tools
Expand Down
1 change: 0 additions & 1 deletion tasks/main.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
---
- include_tasks: repo/{{ ansible_pkg_mgr }}.yml
when: sensu_go_manage_repo

- include_tasks: install_component.yml
with_items: "{{ sensu_go_components }}"
Expand Down
39 changes: 8 additions & 31 deletions tasks/repo/apt.yml
Original file line number Diff line number Diff line change
@@ -1,39 +1,16 @@
---
- name: Merge sensu_go_configs_override w/ defaults
set_fact:
sensu_go_final_repos: "{{ sensu_go_repos | combine(sensu_go_repos_overrides, recursive=True) }}"

- name: Ensure packages for Sensu Go repos are installed
- name: Ensure dependencies for Sensu Go repos are installed
apt:
name: "{{ sensu_go_repo_packages[ansible_pkg_mgr] }}"
name: "{{ sensu_go_repo_dependencies[ansible_pkg_mgr] }}"
state: present
when: sensu_go_manage_repo or sensu_go_manage_community_repo

- name: Ensure Sensu Go repo key is configured
apt_key:
url: "{{ sensu_go_final_repos[ansible_pkg_mgr]['key_url'] }}"
id: "{{ sensu_go_final_repos[ansible_pkg_mgr]['key_id'] }}"

- name: Configure Sensu Go apt repos
apt_repository:
filename: sensu_go
repo: "{{ sensu_go_final_repos[ansible_pkg_mgr]['deb'] }}"
update_cache: false
when: sensu_go_final_repos[ansible_pkg_mgr]['deb'] is defined
notify: update apt cache

- name: Configure Sensu Go apt source repos
apt_repository:
filename: sensu_go
repo: "{{ sensu_go_final_repos[ansible_pkg_mgr]['deb-src'] }}"
update_cache: false
when: sensu_go_final_repos[ansible_pkg_mgr]['deb-src'] is defined
notify: update apt cache
- include_tasks: repo/sensu_go/{{ ansible_pkg_mgr }}.yml
when: sensu_go_manage_repo

- name: Cleanup - Remove old sensu_prerelease repo
file:
path: /etc/apt/sources.list.ld/sensu_prerelease
state: absent
notify: update apt cache
- include_tasks: repo/sensu_community/{{ ansible_pkg_mgr }}.yml
when: sensu_go_manage_community_repo

- name: Flush handlers
meta: flush_handlers
when: sensu_go_manage_repo or sensu_go_manage_community_repo
62 changes: 10 additions & 52 deletions tasks/repo/dnf.yml
Original file line number Diff line number Diff line change
@@ -1,58 +1,16 @@
---
- name: Merge sensu_go_configs_override w/ defaults
set_fact:
sensu_go_final_repos: "{{ sensu_go_repos | combine(sensu_go_repos_overrides, recursive=True) }}"

- name: Ensure packages for Sensu Go repos are installed
- name: Ensure dependencies for Sensu Go repos are installed
dnf:
name: "{{ sensu_go_repo_packages[ansible_pkg_mgr] }}"
state: present

- name: Configure Sensu Go GPG key in the RPM keyring
rpm_key:
key: "{{ sensu_go_final_repos[ansible_pkg_mgr]['gpgkey'] }}"
name: "{{ sensu_go_repo_dependencies[ansible_pkg_mgr] }}"
state: present
register: sensu_go_import_key

- name: Configure Sensu Go yum repos
yum_repository:
file: sensu_go
name: sensu_go
description: packagecloud.io mirrors for Sensu Go
baseurl: "{{ sensu_go_final_repos[ansible_pkg_mgr]['rpm'] }}"
gpgcheck: "{{ sensu_go_final_repos[ansible_pkg_mgr]['gpgcheck'] }}"
gpgkey: "{{ sensu_go_final_repos[ansible_pkg_mgr]['gpgkey'] }}"
repo_gpgcheck: "{{ sensu_go_final_repos[ansible_pkg_mgr]['repo_gpgcheck'] }}"
sslverify: "{{ sensu_go_final_repos[ansible_pkg_mgr]['sslverify'] }}"
metadata_expire: "{{ sensu_go_final_repos[ansible_pkg_mgr]['metadata_expire'] }}"
when: sensu_go_final_repos[ansible_pkg_mgr]['rpm'] is defined
when: sensu_go_manage_repo or sensu_go_manage_community_repo

- name: Configure Sensu Go yum source repos
yum_repository:
file: sensu_go
name: sensu_go-source
description: packagecloud.io mirrors for Sensu Go Source RPMS
baseurl: "{{ sensu_go_final_repos[ansible_pkg_mgr]['rpm-src'] }}"
gpgkey: "{{ sensu_go_final_repos[ansible_pkg_mgr]['gpgkey'] }}"
gpgcheck: "{{ sensu_go_final_repos[ansible_pkg_mgr]['gpgcheck'] }}"
repo_gpgcheck: "{{ sensu_go_final_repos[ansible_pkg_mgr]['repo_gpgcheck'] }}"
sslverify: "{{ sensu_go_final_repos[ansible_pkg_mgr]['sslverify'] }}"
metadata_expire: "{{ sensu_go_final_repos[ansible_pkg_mgr]['metadata_expire'] }}"
when: sensu_go_final_repos[ansible_pkg_mgr]['rpm-src'] is defined
- include_tasks: repo/sensu_go/{{ ansible_pkg_mgr }}.yml
when: sensu_go_manage_repo

- name: Cleanup - Remove old Sensu prerelease repos
file:
path: /etc/yum.repos.d/sensu_prerelease
state: absent
notify: yum-clean-metadata
- include_tasks: repo/sensu_community/{{ ansible_pkg_mgr }}.yml
when: sensu_go_manage_community_repo

# HACK: https://github.com/ansible/ansible/issues/20711#issuecomment-306260869
# Can be removed once we're running w/ a version of Ansible that has https://github.com/ansible/ansible/pull/35989
- name: Make yum cache to import GPG keys
command: "yum -q makecache -y --disablerepo='*' --enablerepo='{{ item }}'"
args:
warn: false
when: sensu_go_import_key.changed
with_items:
- sensu_go
- sensu_go-source
- name: Flush handlers
meta: flush_handlers
when: sensu_go_manage_repo or sensu_go_manage_community_repo
25 changes: 25 additions & 0 deletions tasks/repo/sensu_community/apt.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
- name: Merge sensu_go_community_repos_overrides w/ defaults
set_fact:
sensu_go_final_community_repos: "{{ sensu_go_community_repos | combine(sensu_go_community_repos_overrides, recursive=True) }}"

- name: Ensure Sensu Go Community repo key is configured
apt_key:
url: "{{ sensu_go_final_community_repos[ansible_pkg_mgr]['key_url'] }}"
id: "{{ sensu_go_final_community_repos[ansible_pkg_mgr]['key_id'] }}"

- name: Configure Sensu Go Community apt repos
apt_repository:
filename: sensu_go
repo: "{{ sensu_go_final_community_repos[ansible_pkg_mgr]['deb'] }}"
update_cache: false
when: sensu_go_final_community_repos[ansible_pkg_mgr]['deb'] is defined
notify: update apt cache

- name: Configure Sensu Go Community apt source repos
apt_repository:
filename: sensu_go
repo: "{{ sensu_go_final_community_repos[ansible_pkg_mgr]['deb-src'] }}"
update_cache: false
when: sensu_go_final_community_repos[ansible_pkg_mgr]['deb-src'] is defined
notify: update apt cache

0 comments on commit 60bc270

Please sign in to comment.