* Common Packages angepasst

* rclone entfernt
This commit is contained in:
Quotengrote 2020-09-05 13:26:45 +02:00 committed by GitHub
parent 009e753f29
commit 6cbf055517
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
27 changed files with 0 additions and 559 deletions

View File

@ -1,31 +0,0 @@
---
language: python
services: docker
env:
global:
- ROLE_NAME: ansible-rclone
matrix:
- MOLECULE_DISTRO: centos7
- MOLECULE_DISTRO: centos8
- MOLECULE_DISTRO: debian10
- MOLECULE_DISTRO: debian9
- MOLECULE_DISTRO: fedora32
- MOLECULE_DISTRO: fedora31
- MOLECULE_DISTRO: fedora30
- MOLECULE_DISTRO: ubuntu2004
- MOLECULE_DISTRO: ubuntu1804
- MOLECULE_DISTRO: ubuntu1604
install:
# Install test dependencies.
- pip install molecule docker yamllint ansible-lint
script:
- molecule --version
- ansible --version
# Run tests.
- molecule test -s travis
notifications:
webhooks: https://galaxy.ansible.com/api/v1/notifications/

View File

@ -1,8 +0,0 @@
---
extends: default
rules:
line-length:
max: 140
level: warning

View File

@ -1,142 +0,0 @@
# ansible-rclone
AKA `ansible_rclone` and formerly `rclone`
[![Build Status](https://travis-ci.org/stefangweichinger/ansible-rclone.svg?branch=master)](https://travis-ci.org/stefangweichinger/ansible-rclone)
[![GitHub Open Issues](https://img.shields.io/github/issues/stefangweichinger/ansible-rclone.svg)](https://github.com/stefangweichinger/ansible-rclone/issues)
[![GitHub Stars](https://img.shields.io/github/stars/stefangweichinger/ansible-rclone.svg)](https://github.com/stefangweichinger/ansible-rclone)
[![GitHub Forks](https://img.shields.io/github/forks/stefangweichinger/ansible-rclone.svg)](https://github.com/stefangweichinger/ansible-rclone)
[![Ansible Role](https://img.shields.io/ansible/role/46861.svg)](https://galaxy.ansible.com/stefangweichinger/ansible_rclone)
[![Ansible Role Downloads](https://img.shields.io/ansible/role/d/46861.svg)](https://galaxy.ansible.com/stefangweichinger/ansible_rclone)
An Ansible role to install [rclone](https://github.com/ncw/rclone)
Please note that this role installs rclone from the upstream repository and not from the OS repositories!
## Usage
1. Clone this repo into your local roles-directory or install via `ansible-galaxy install stefangweichinger.ansible_rclone`
2. Add role to the hosts you want rclone installed to.
## Supported Platforms
(2020-may-25)
* CentOS 7,8
* Debian 8,9,10
* Fedora 30,31,32
* Ubuntu 1604,1804,2004
* Ubuntu derivated distros: Linux Mint, Pop!\_OS
Some older releases also work with this role, but I decided to remove some of them from `galaxy_info`.
PRs welcome, but we can't test on every platform.
## Role Variables
Available variables are listed below, along with default values (see `defaults/main.yml`):
install_manpages: "true"
This can be used to toggle the installation of manpages.
rclone_arch: "amd64"
This variable chooses the target architecture (for example 'amd64').
rclone_version: ""
The version of rclone to install. `rclone_version` is no longer set as a default, but if provided as a variable, can be set to a specific version number or "beta" to install the latest beta version.
rclone_config_location: "/root/.config/rclone/rclone.conf"
The location to install the rclone config file if you provide `rclone_configs`
rclone_configs: ""
This variable allows for predefined remote configs to be loaded. `rclone_configs` must be a YAML list with a name variable and a properties variable which is another list of arbitrary key value pairs. See the example below which would configure a Google Drive remote:
```
rclone_configs:
- name: ExampleGoogleDriveRemote
properties:
type: drive
client_id: 12345
client_secret: 67890
token: {"access_token":"","token_type":"","refresh_token":"","expiry":""}
```
### rclone_configs detailed example
The `rclone_configs` variable is used to recreate the `rclone.conf` file. This config file stores the rclone remotes that have been defined and are usable. This is an alternative to simply copying a stored `rclone.conf` file directly.
The `rclone_configs` simply takes a list of YAML objects which must have a `name` which will map to the name of the remote, and a `properties` which can be any key, value pairs which will map to the variables stored under that remote. These should be the ones expected by the `rclone.conf` file for the remote type you're configuring.
For example, to recreate a standard encrypted Google Drive mount setup, the `rclone.conf` will look similar to below, assuming you have your encypted files stored in the "media" folder on Google Drive:
```
[google-drive]
type = drive
client_id = <CLIENT_ID>
client_secret = <CLIENT_SECRET>
token = {"access_token":"<ACCESS_TOKEN>","token_type":"Bearer","refresh_token":"<REFRESH_TOKEN>","expiry":"<DATETIME>"}
root_folder_id = <ROOT_FOLDER_ID>
[encrypted-media]
type = crypt
remote = google-drive:media
filename_encryption = standard
password = <PASSWORD>
password2 = <PASSWORD2>
```
To enable ansible-rclone to recreate that config file, you can provide an `rclone_configs` variable as follows.
Note that this should always be encrypted if stored publicly as it gives access to your remotes:
```
rclone_configs:
- name: google-drive
properties:
type: drive
client_id: <CLIENT_ID>
client_secret: <CLIENT_SECRET>
token: {"access_token":"<ACCESS_TOKEN>","token_type":"Bearer","refresh_token":"<REFRESH_TOKEN>","expiry":"<DATETIME>"}
root_folder_id = <ROOT_FOLDER_ID>
- name: encrypted-media
properties:
type: crypt
remote: google-drive:media
filename_encryption: standard
password: <PASSWORD>
password2: <PASSWORD2>
```
## Dependencies
None.
## Example Playbook
- hosts: rclone-hosts
roles:
- rclone
## Troubleshooting
**Module Name Issue**:
```
[WARNING]: - stefangweichinger.rclone was NOT installed successfully: - sorry, stefangweichinger.rclone was not found on https://galaxy.ansible.com/api/
```
Note that this module has undergone a name change. It was previously known as `stefangweichinger.rclone`, however Galaxy changed it's naming methods. We are working on a change that will put move it back to this name for simplicity. Ansible Galaxy substitutes `-` to `_` and used to strip a prefix or `ansible`. For more information, see the [this issue](https://github.com/stefangweichinger/ansible-rclone/issues/48).
## Tests
New tests using [molecule](https://molecule.readthedocs.io/en/latest/index.html)
pls feel free to review my first steps into testing the role with molecule
additional distros might be added/tested soon
Check the travis logs at https://travis-ci.org/github/stefangweichinger/ansible-rclone

View File

@ -1,18 +0,0 @@
---
# rclone_arch can be defined as an architecture (e.g. arm, mips, 386) listed at https://github.com/ncw/rclone/releases
rclone_arch: amd64
install_manpages: true
# Defaults in case no variables for OS are chosen
rclone_setup_tmp_dir: "/tmp/rclone_setup"
# The location to install the config file if configured
rclone_config_location: "/root/.config/rclone/rclone.conf"
PACKAGES:
- unzip
MAN_PAGES:
OWNER: root
GROUP: root

View File

@ -1,32 +0,0 @@
---
dependencies: []
galaxy_info:
author: 'Stefan G. Weichinger'
description: 'Install rclone'
company: 'oops'
license: 'GNU General Public License v3'
min_ansible_version: '2.0'
platforms:
- name: EL
versions:
- 7
- 8
- name: Debian
versions:
- buster
- stretch
- name: Fedora
versions:
- 32
- 31
- 30
- name: Ubuntu
versions:
- focal
- bionic
- xenial
galaxy_tags:
- networking
- system

View File

@ -1,22 +0,0 @@
---
- name: Converge
hosts: all
become: true
pre_tasks:
- name: Update apt cache.
apt: update_cache=true cache_valid_time=600
when: ansible_os_family == 'Debian'
- name: Wait for systemd to complete initialization. # noqa 303
command: systemctl is-system-running
register: systemctl_status
until: >
'running' in systemctl_status.stdout or
'degraded' in systemctl_status.stdout
retries: 30
delay: 5
when: ansible_distribution == 'Fedora'
changed_when: false
roles:
- role: ansible-rclone

View File

@ -1,23 +0,0 @@
---
dependency:
name: galaxy
driver:
name: docker
lint: |
set -e
yamllint .
ansible-lint
platforms:
- name: instance
image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest"
command: ${MOLECULE_DOCKER_COMMAND:-""}
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
privileged: false
pre_build_image: true
provisioner:
name: ansible
playbooks:
converge: ${MOLECULE_PLAYBOOK:-converge.yml}
lint:
name: ansible-lint

View File

@ -1,5 +0,0 @@
---
- name: Converge
hosts: all
roles:
- role: ansible-rclone

View File

@ -1,14 +0,0 @@
import os
import testinfra.utils.ansible_runner
testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all')
def test_hosts_file(host):
f = host.file('/usr/bin/rclone')
assert f.exists
assert f.user == 'root'
assert f.group == 'root'

View File

@ -1,22 +0,0 @@
---
- name: Converge
hosts: all
become: true
pre_tasks:
- name: Update apt cache.
apt: update_cache=true cache_valid_time=600
when: ansible_os_family == 'Debian'
- name: Wait for systemd to complete initialization. # noqa 303
command: systemctl is-system-running
register: systemctl_status
until: >
'running' in systemctl_status.stdout or
'degraded' in systemctl_status.stdout
retries: 30
delay: 5
when: ansible_distribution == 'Fedora'
changed_when: false
roles:
- role: ansible-rclone

View File

@ -1,23 +0,0 @@
---
dependency:
name: galaxy
driver:
name: docker
lint: |
set -e
yamllint .
ansible-lint
platforms:
- name: instance
image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest"
command: ${MOLECULE_DOCKER_COMMAND:-""}
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
privileged: true
pre_build_image: true
provisioner:
name: ansible
playbooks:
converge: ${MOLECULE_PLAYBOOK:-converge.yml}
lint:
name: ansible-lint

View File

@ -1,18 +0,0 @@
---
- block:
- name: Check latest beta rclone version number
uri:
url: https://beta.rclone.org/version.txt
return_content: true
register:
rclone_latest_beta_version
- name: Set variable for beta version
set_fact:
rclone_version: "{{ rclone_latest_beta_version.content | replace ('rclone v', '', 1) | trim }}"
- name: Get rclone latest beta version
unarchive:
src: https://beta.rclone.org/rclone-beta-latest-linux-{{ rclone_arch }}.zip
dest: "{{ rclone_setup_tmp_dir }}"
remote_src: true
creates: "{{ rclone_setup_tmp_dir }}/rclone-v{{ rclone_version }}-linux-{{ rclone_arch }}"

View File

@ -1,86 +0,0 @@
---
- name: Gather OS specific variables
include_vars: "{{ item }}"
with_first_found:
- '{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml'
- '{{ ansible_distribution }}.yml'
- '{{ ansible_os_family }}.yml'
tags:
- vars
- name: Update repositories cache on Ubuntu
apt:
update_cache: true
become: true
when: ansible_distribution == 'Ubuntu'
- name: Install required packages
package:
name: '{{ item }}'
state: present
become: true
with_items: '{{ PACKAGES }}'
- name: Create temporary working directory
file:
path: "{{ rclone_setup_tmp_dir }}"
state: directory
mode: '0775'
- name: Do stable install
include_tasks: stable.yml
when: rclone_version is undefined or rclone_version != 'beta'
- name: Do beta install
include_tasks: beta.yml
when: rclone_version == 'beta'
- name: Copy rclone binary
copy:
src: "{{ rclone_setup_tmp_dir }}/rclone-v{{ rclone_version }}-linux-{{ rclone_arch }}/rclone"
dest: "/usr/local/bin/rclone"
mode: '0755'
owner: root
group: root
remote_src: true
become: true
- name: Create config directory
file:
path: '{{ rclone_config_location | dirname }}'
state: directory
mode: '0700'
when: rclone_configs is defined
- name: Set up rclone config
template:
src: rclone.conf.j2
dest: '{{ rclone_config_location }}'
when: rclone_configs is defined
- name: Make dir for local manpages
file:
path: '{{ MAN_PAGES.PATH }}'
state: directory
mode: '0775'
owner: '{{ MAN_PAGES.OWNER }}'
group: '{{ MAN_PAGES.GROUP }}'
become: true
when: install_manpages
- name: Copy rclone manpage
copy:
src: "{{ rclone_setup_tmp_dir }}/rclone-v{{ rclone_version }}-linux-{{ rclone_arch }}/rclone.1"
dest: "{{ MAN_PAGES.PATH }}/rclone.1"
mode: '0644'
owner: root
group: root
remote_src: true
become: true
when: install_manpages
- name: Update mandb
command: mandb
become: true
changed_when: false
when: install_manpages

View File

@ -1,20 +0,0 @@
---
- block:
- name: Check latest stable rclone version number
uri:
url: https://downloads.rclone.org/version.txt
return_content: true
register:
rclone_latest_version
check_mode: false
- name: Set variable to latest stable version number
set_fact:
rclone_version: "{{ rclone_latest_version.content | replace ('rclone v', '', 1) | trim }}"
when: rclone_version is undefined
- name: Get rclone stable version {{ rclone_version }}
unarchive:
src: https://downloads.rclone.org/v{{ rclone_version }}/rclone-v{{ rclone_version }}-linux-{{ rclone_arch }}.zip
dest: "{{ rclone_setup_tmp_dir }}"
remote_src: true
creates: "{{ rclone_setup_tmp_dir }}/rclone-v{{ rclone_version }}-linux-{{ rclone_arch }}"

View File

@ -1,7 +0,0 @@
{% for config in rclone_configs %}
[{{ config.name }}]
{% for key, value in config.properties.items() %}
{{ key }} = {{ value }}
{% endfor %}
{% endfor %}

View File

@ -1 +0,0 @@
localhost

View File

@ -1,5 +0,0 @@
---
- hosts: localhost
remote_user: root
roles:
- ansible-rclone

View File

@ -1,10 +0,0 @@
---
PACKAGES:
- unzip
- man
MAN_PAGES:
OWNER: root
GROUP: root
PATH: '/usr/local/share/man/man1'

View File

@ -1,10 +0,0 @@
---
PACKAGES:
- unzip
- man-db
MAN_PAGES:
OWNER: root
GROUP: root
PATH: '/usr/local/share/man/man1'

View File

@ -1,10 +0,0 @@
---
PACKAGES:
- unzip
- man-db
MAN_PAGES:
OWNER: root
GROUP: root
PATH: '/usr/share/man/man1'

View File

@ -1,11 +0,0 @@
---
PACKAGES:
- unzip
- man
- file
MAN_PAGES:
OWNER: root
GROUP: root
PATH: '/usr/local/share/man/man1'

View File

@ -1,10 +0,0 @@
---
PACKAGES:
- unzip
- man-db
MAN_PAGES:
OWNER: root
GROUP: root
PATH: '/usr/local/share/man/man1'

View File

@ -1,10 +0,0 @@
---
PACKAGES:
- unzip
- man-db
MAN_PAGES:
OWNER: root
GROUP: root
PATH: '/usr/local/share/man/man1'

View File

@ -1,11 +0,0 @@
---
PACKAGES:
- unzip
- man
- file
MAN_PAGES:
OWNER: root
GROUP: root
PATH: '/usr/local/share/man/man1'

View File

@ -1,10 +0,0 @@
---
PACKAGES:
- unzip
- man-db
MAN_PAGES:
OWNER: root
GROUP: root
PATH: '/usr/local/share/man/man1'