init commit
commit
54eac27388
@ -0,0 +1,22 @@
|
|||||||
|
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2022 shnee
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
@ -0,0 +1,93 @@
|
|||||||
|
Ansible Role: Third Party Apt Repo
|
||||||
|
================================================================================
|
||||||
|
|
||||||
|
An ansible role that will add a third party apt repo to and Debian like distro.
|
||||||
|
It can optionally install packages after adding the repo.
|
||||||
|
|
||||||
|
This role has only been tested on Ubuntu 20.04.
|
||||||
|
|
||||||
|
Role Variables
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
A string in apt source list format. This string will be passed to
|
||||||
|
`ansible.builtin.apt_repository.repo`.
|
||||||
|
```yml
|
||||||
|
third_party_repo: deb [arch=amd64] https://apt.releases.hashicorp.com focal main
|
||||||
|
```
|
||||||
|
|
||||||
|
A URL to the key that signed packages from the 3rd party repo. This string will
|
||||||
|
be passed to `ansible.builtin.apt_key.url`.
|
||||||
|
```yml
|
||||||
|
third_party_repo_key_url: https://apt.releases.hashicorp.com/gpg
|
||||||
|
```
|
||||||
|
|
||||||
|
The fingerprint of the key pointed to by `third_party_repo_key_url`. This string
|
||||||
|
will be passed to `ansible.builtin.apt_key.id`. See section below on how to find
|
||||||
|
this key.
|
||||||
|
```yml
|
||||||
|
third_party_repo_key_fingerprint: E8A032E094D8EB4EA189D270DA418C88A3219F7B
|
||||||
|
```
|
||||||
|
|
||||||
|
A list of packages to install after the third party repo has been added. These
|
||||||
|
can be packages from the third party repo or from the default repos.
|
||||||
|
```yml
|
||||||
|
packages: [terraform]
|
||||||
|
```
|
||||||
|
|
||||||
|
Install Role
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
Create a yaml file with the following content.
|
||||||
|
```yml
|
||||||
|
---
|
||||||
|
- src: "git+https://gitlab.mss.com/ANDSAS/ops/ansible/\
|
||||||
|
third_party_apt_repo_ansible_role.git"
|
||||||
|
name: third_party_apt_repo
|
||||||
|
version: master
|
||||||
|
```
|
||||||
|
|
||||||
|
Then run:
|
||||||
|
```shell
|
||||||
|
ansible-galaxy install -r <requirement yaml file>
|
||||||
|
```
|
||||||
|
|
||||||
|
Example Playbook
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
```yml
|
||||||
|
- roles:
|
||||||
|
- role: install_via_3rd_party_apt_repo
|
||||||
|
third_party_repo: |
|
||||||
|
deb [arch=amd64] https://apt.releases.hashicorp.com focal main
|
||||||
|
third_party_repo_key_url: https://apt.releases.hashicorp.com/gpg
|
||||||
|
third_party_repo_key_fingerprint: E8A032E094D8EB4EA189D270DA418C88A3219F7B
|
||||||
|
packages: [terraform]
|
||||||
|
```
|
||||||
|
|
||||||
|
GPG Key Fingerprint
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
Here is a way to get a fingerprint for a key via gpg. This method will not
|
||||||
|
import the key. The command uses the `-n` flag which tells gpg that this is a
|
||||||
|
dry run and to not import the key.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ > gpg2 -n -q --import --import-options import-show <gpg key>
|
||||||
|
pub rsa4096 2020-05-07 [SC]
|
||||||
|
E8A032E094D8EB4EA189D270DA418C88A3219F7B
|
||||||
|
uid HashiCorp Security (HashiCorp Package Signing) <security+packaging@hashicorp.com>
|
||||||
|
sub rsa4096 2020-05-07 [E]
|
||||||
|
```
|
||||||
|
|
||||||
|
In this example the hex string `E8A032E094D8EB4EA189D270DA418C88A3219F7B` is the
|
||||||
|
fingerprint.
|
||||||
|
|
||||||
|
License
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
MIT
|
||||||
|
|
||||||
|
Author Information
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
This role was created by [shnee](https://github.com/shnee).
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
---
|
||||||
|
packages: []
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
dependencies: []
|
||||||
|
|
||||||
|
galaxy_info:
|
||||||
|
author: shnee
|
||||||
|
description: Install a third party packages from third party apt repos.
|
||||||
|
|
||||||
|
license: MIT
|
||||||
|
|
||||||
|
min_ansible_version: 2.1
|
||||||
|
|
||||||
|
platforms:
|
||||||
|
- name: Ubuntu
|
||||||
|
versions: [focal]
|
||||||
|
|
||||||
|
galaxy_tags:
|
||||||
|
- debian
|
||||||
|
- ubuntu
|
||||||
|
- packages
|
||||||
|
- apt
|
||||||
@ -0,0 +1,31 @@
|
|||||||
|
---
|
||||||
|
- name: Add 3rd party apt repo and install 3rd party packages.
|
||||||
|
become: true
|
||||||
|
when: ansible_os_family == "Debian"
|
||||||
|
block:
|
||||||
|
- name: Install https apt dependencies.
|
||||||
|
ansible.builtin.package:
|
||||||
|
name:
|
||||||
|
- apt-transport-https
|
||||||
|
- ca-certificates
|
||||||
|
- curl
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Add GPG key to apt.
|
||||||
|
ansible.builtin.apt_key:
|
||||||
|
url: "{{ third_party_repo_key_url }}"
|
||||||
|
id: "{{ third_party_repo_key_fingerprint }}"
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Add third party repo to apt.
|
||||||
|
ansible.builtin.apt_repository:
|
||||||
|
repo: "{{ third_party_repo }}"
|
||||||
|
state: present
|
||||||
|
update_cache: true
|
||||||
|
|
||||||
|
# TODO add a step to pin versions.
|
||||||
|
|
||||||
|
- name: Install third party packages.
|
||||||
|
ansible.builtin.package:
|
||||||
|
name: "{{ packages }}"
|
||||||
|
state: present
|
||||||
Loading…
Reference in New Issue