mirror of
https://github.com/geerlingguy/ansible-role-pip.git
synced 2024-09-28 04:09:25 +02:00
Compare commits
54 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
9246878ea2 | ||
|
d5d1d2e4dd | ||
|
105436e80f | ||
|
59700c8f1f | ||
|
69ce0d8149 | ||
|
f120430ad6 | ||
|
adac76a28c | ||
|
fcc23775fe | ||
|
832e5ce6ed | ||
|
6c927a7881 | ||
|
13c187c5f8 | ||
|
160021b3d5 | ||
|
7886617de5 | ||
|
9de8ba5c86 | ||
|
12de34e3a9 | ||
|
088273d11b | ||
|
2aef145841 | ||
|
65c354cc65 | ||
|
641cee6b62 | ||
|
2cd2805307 | ||
|
456566abab | ||
|
0360ca42ee | ||
|
21455b6dba | ||
|
248ac65fbb | ||
|
3dea9f6772 | ||
|
6e819c0e97 | ||
|
eab20180c2 | ||
|
c935c92c04 | ||
|
5f4ab60283 | ||
|
24aff0960e | ||
|
c44d7cd4da | ||
|
04add7b4c5 | ||
|
f5212246e6 | ||
|
fd6d58a571 | ||
|
8bafb13646 | ||
|
5ec66573d5 | ||
|
a2c8e54a56 | ||
|
81ac0c6238 | ||
|
f748c258b6 | ||
|
87d185606e | ||
|
212fff0df3 | ||
|
080746e32a | ||
|
b348af1dcb | ||
|
ca07424814 | ||
|
56f900dbb6 | ||
|
cee6952975 | ||
|
bf2faee13d | ||
|
210c71981b | ||
|
020cbad256 | ||
|
01d46fa4b9 | ||
|
ea930cc060 | ||
|
6b7c9941ef | ||
|
6e93443a3f | ||
|
9549761093 |
3
.ansible-lint
Normal file
3
.ansible-lint
Normal file
@ -0,0 +1,3 @@
|
||||
skip_list:
|
||||
- 'yaml'
|
||||
- 'role-name'
|
4
.github/FUNDING.yml
vendored
Normal file
4
.github/FUNDING.yml
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
# These are supported funding model platforms
|
||||
---
|
||||
github: geerlingguy
|
||||
patreon: geerlingguy
|
70
.github/workflows/ci.yml
vendored
Normal file
70
.github/workflows/ci.yml
vendored
Normal file
@ -0,0 +1,70 @@
|
||||
---
|
||||
name: CI
|
||||
'on':
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
schedule:
|
||||
- cron: "0 4 * * 5"
|
||||
|
||||
defaults:
|
||||
run:
|
||||
working-directory: 'geerlingguy.pip'
|
||||
|
||||
jobs:
|
||||
|
||||
lint:
|
||||
name: Lint
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check out the codebase.
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
path: 'geerlingguy.pip'
|
||||
|
||||
- name: Set up Python 3.
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: '3.x'
|
||||
|
||||
- name: Install test dependencies.
|
||||
run: pip3 install yamllint
|
||||
|
||||
- name: Lint code.
|
||||
run: |
|
||||
yamllint .
|
||||
|
||||
molecule:
|
||||
name: Molecule
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
distro:
|
||||
- rockylinux9
|
||||
- fedora39
|
||||
- ubuntu2204
|
||||
- ubuntu2004
|
||||
- debian12
|
||||
- debian11
|
||||
|
||||
steps:
|
||||
- name: Check out the codebase.
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
path: 'geerlingguy.pip'
|
||||
|
||||
- name: Set up Python 3.
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: '3.x'
|
||||
|
||||
- name: Install test dependencies.
|
||||
run: pip3 install ansible molecule molecule-plugins[docker] docker
|
||||
|
||||
- name: Run Molecule tests.
|
||||
run: molecule test
|
||||
env:
|
||||
PY_COLORS: '1'
|
||||
ANSIBLE_FORCE_COLOR: '1'
|
||||
MOLECULE_DISTRO: ${{ matrix.distro }}
|
40
.github/workflows/release.yml
vendored
Normal file
40
.github/workflows/release.yml
vendored
Normal file
@ -0,0 +1,40 @@
|
||||
---
|
||||
# This workflow requires a GALAXY_API_KEY secret present in the GitHub
|
||||
# repository or organization.
|
||||
#
|
||||
# See: https://github.com/marketplace/actions/publish-ansible-role-to-galaxy
|
||||
# See: https://github.com/ansible/galaxy/issues/46
|
||||
|
||||
name: Release
|
||||
'on':
|
||||
push:
|
||||
tags:
|
||||
- '*'
|
||||
|
||||
defaults:
|
||||
run:
|
||||
working-directory: 'geerlingguy.pip'
|
||||
|
||||
jobs:
|
||||
|
||||
release:
|
||||
name: Release
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check out the codebase.
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: 'geerlingguy.pip'
|
||||
|
||||
- name: Set up Python 3.
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.x'
|
||||
|
||||
- name: Install Ansible.
|
||||
run: pip3 install ansible-core
|
||||
|
||||
- name: Trigger a new import on Galaxy.
|
||||
run: >-
|
||||
ansible-galaxy role import --api-key ${{ secrets.GALAXY_API_KEY }}
|
||||
$(echo ${{ github.repository }} | cut -d/ -f1) $(echo ${{ github.repository }} | cut -d/ -f2)
|
34
.github/workflows/stale.yml
vendored
Normal file
34
.github/workflows/stale.yml
vendored
Normal file
@ -0,0 +1,34 @@
|
||||
---
|
||||
name: Close inactive issues
|
||||
'on':
|
||||
schedule:
|
||||
- cron: "55 21 * * 5" # semi-random time
|
||||
|
||||
jobs:
|
||||
close-issues:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
issues: write
|
||||
pull-requests: write
|
||||
steps:
|
||||
- uses: actions/stale@v8
|
||||
with:
|
||||
days-before-stale: 120
|
||||
days-before-close: 60
|
||||
exempt-issue-labels: bug,pinned,security,planned
|
||||
exempt-pr-labels: bug,pinned,security,planned
|
||||
stale-issue-label: "stale"
|
||||
stale-pr-label: "stale"
|
||||
stale-issue-message: |
|
||||
This issue has been marked 'stale' due to lack of recent activity. If there is no further activity, the issue will be closed in another 30 days. Thank you for your contribution!
|
||||
|
||||
Please read [this blog post](https://www.jeffgeerling.com/blog/2020/enabling-stale-issue-bot-on-my-github-repositories) to see the reasons why I mark issues as stale.
|
||||
close-issue-message: |
|
||||
This issue has been closed due to inactivity. If you feel this is in error, please reopen the issue or file a new issue with the relevant details.
|
||||
stale-pr-message: |
|
||||
This pr has been marked 'stale' due to lack of recent activity. If there is no further activity, the issue will be closed in another 30 days. Thank you for your contribution!
|
||||
|
||||
Please read [this blog post](https://www.jeffgeerling.com/blog/2020/enabling-stale-issue-bot-on-my-github-repositories) to see the reasons why I mark issues as stale.
|
||||
close-pr-message: |
|
||||
This pr has been closed due to inactivity. If you feel this is in error, please reopen the issue or file a new issue with the relevant details.
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,3 +1,5 @@
|
||||
*.retry
|
||||
*/__pycache__
|
||||
*.pyc
|
||||
.cache
|
||||
|
||||
|
29
.travis.yml
29
.travis.yml
@ -1,29 +0,0 @@
|
||||
---
|
||||
language: python
|
||||
services: docker
|
||||
|
||||
env:
|
||||
global:
|
||||
- ROLE_NAME: pip
|
||||
matrix:
|
||||
- MOLECULE_DISTRO: centos7
|
||||
- MOLECULE_DISTRO: fedora29
|
||||
- MOLECULE_DISTRO: ubuntu1804
|
||||
- MOLECULE_DISTRO: debian9
|
||||
|
||||
install:
|
||||
# Install test dependencies.
|
||||
- pip install molecule docker
|
||||
|
||||
before_script:
|
||||
# Use actual Ansible Galaxy role name for the project directory.
|
||||
- cd ../
|
||||
- mv ansible-role-$ROLE_NAME geerlingguy.$ROLE_NAME
|
||||
- cd geerlingguy.$ROLE_NAME
|
||||
|
||||
script:
|
||||
# Run tests.
|
||||
- molecule test
|
||||
|
||||
notifications:
|
||||
webhooks: https://galaxy.ansible.com/api/v1/notifications/
|
@ -1,6 +1,10 @@
|
||||
---
|
||||
extends: default
|
||||
|
||||
rules:
|
||||
line-length:
|
||||
max: 120
|
||||
level: warning
|
||||
|
||||
ignore: |
|
||||
.github/workflows/stale.yml
|
14
README.md
14
README.md
@ -1,6 +1,6 @@
|
||||
# Ansible Role: Pip (for Python)
|
||||
|
||||
[![Build Status](https://travis-ci.org/geerlingguy/ansible-role-pip.svg?branch=master)](https://travis-ci.org/geerlingguy/ansible-role-pip)
|
||||
[![CI](https://github.com/geerlingguy/ansible-role-pip/workflows/CI/badge.svg?event=push)](https://github.com/geerlingguy/ansible-role-pip/actions?query=workflow%3ACI)
|
||||
|
||||
An Ansible Role that installs [Pip](https://pip.pypa.io) on Linux.
|
||||
|
||||
@ -12,11 +12,11 @@ On RedHat/CentOS, you may need to have EPEL installed before running this role.
|
||||
|
||||
Available variables are listed below, along with default values (see `defaults/main.yml`):
|
||||
|
||||
pip_package: python-pip
|
||||
pip_package: python3-pip
|
||||
|
||||
The name of the packge to install to get `pip` on the system. You can set to `python3-pip`, for example, when using Python 3 on Ubuntu.
|
||||
The name of the package to install to get `pip` on the system. For older systems that don't have Python 3 available, you can set this to `python-pip`.
|
||||
|
||||
pip_executable: pip
|
||||
pip_executable: pip3
|
||||
|
||||
The role will try to autodetect the pip executable based on the `pip_package` (e.g. `pip` for Python 2 and `pip3` for Python 3). You can also override this explicitly, e.g. `pip_executable: pip3.6`.
|
||||
|
||||
@ -39,7 +39,7 @@ A list of packages to install with pip. Examples below:
|
||||
- name: docker
|
||||
state: absent
|
||||
|
||||
# Or update a package ot the latest version.
|
||||
# Or update a package to the latest version.
|
||||
- name: docker
|
||||
state: latest
|
||||
|
||||
@ -51,6 +51,10 @@ A list of packages to install with pip. Examples below:
|
||||
- name: docker
|
||||
virtualenv: /my_app/venv
|
||||
|
||||
# Or pass through any extra arguments.
|
||||
- name: my_special_package_from_my_special_repo
|
||||
extra_args: --extra-index-url https://my-domain/pypi/pypi-master/simple
|
||||
|
||||
## Dependencies
|
||||
|
||||
None.
|
||||
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
# For Python 3, use python3-pip.
|
||||
pip_package: python-pip
|
||||
pip_package: python3-pip
|
||||
pip_executable: "{{ 'pip3' if pip_package.startswith('python3') else 'pip' }}"
|
||||
|
||||
pip_install_packages: []
|
||||
|
@ -2,16 +2,14 @@
|
||||
dependencies: []
|
||||
|
||||
galaxy_info:
|
||||
role_name: pip
|
||||
author: geerlingguy
|
||||
description: Pip (Python package manager) for Linux.
|
||||
issue_tracker_url: https://github.com/geerlingguy/ansible-role-pip/issues
|
||||
company: "Midwestern Mac, LLC"
|
||||
license: "license (BSD, MIT)"
|
||||
min_ansible_version: 2.0
|
||||
license: "MIT"
|
||||
min_ansible_version: 2.10
|
||||
platforms:
|
||||
- name: EL
|
||||
versions:
|
||||
- all
|
||||
- name: Fedora
|
||||
versions:
|
||||
- all
|
||||
|
@ -16,5 +16,13 @@
|
||||
apt: update_cache=true cache_valid_time=600
|
||||
when: ansible_os_family == 'Debian'
|
||||
|
||||
- name: Set package name for older OSes.
|
||||
set_fact:
|
||||
pip_package: python-pip
|
||||
when: >
|
||||
(ansible_os_family == 'RedHat') and (ansible_distribution_major_version | int < 8)
|
||||
or (ansible_distribution == 'Debian') and (ansible_distribution_major_version | int < 10)
|
||||
or (ansible_distribution == 'Ubuntu') and (ansible_distribution_major_version | int < 18)
|
||||
|
||||
roles:
|
||||
- role: geerlingguy.pip
|
@ -1,29 +1,21 @@
|
||||
---
|
||||
role_name_check: 1
|
||||
dependency:
|
||||
name: galaxy
|
||||
options:
|
||||
ignore-errors: true
|
||||
driver:
|
||||
name: docker
|
||||
lint:
|
||||
name: yamllint
|
||||
options:
|
||||
config-file: molecule/default/yaml-lint.yml
|
||||
platforms:
|
||||
- name: instance
|
||||
image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest"
|
||||
image: "geerlingguy/docker-${MOLECULE_DISTRO:-rockylinux9}-ansible:latest"
|
||||
command: ${MOLECULE_DOCKER_COMMAND:-""}
|
||||
volumes:
|
||||
- /sys/fs/cgroup:/sys/fs/cgroup:ro
|
||||
- /sys/fs/cgroup:/sys/fs/cgroup:rw
|
||||
cgroupns_mode: host
|
||||
privileged: true
|
||||
pre_build_image: true
|
||||
provisioner:
|
||||
name: ansible
|
||||
lint:
|
||||
name: ansible-lint
|
||||
playbooks:
|
||||
converge: ${MOLECULE_PLAYBOOK:-playbook.yml}
|
||||
scenario:
|
||||
name: default
|
||||
verifier:
|
||||
name: testinfra
|
||||
lint:
|
||||
name: flake8
|
||||
converge: ${MOLECULE_PLAYBOOK:-converge.yml}
|
||||
|
@ -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('/etc/hosts')
|
||||
|
||||
assert f.exists
|
||||
assert f.user == 'root'
|
||||
assert f.group == 'root'
|
13
tasks/debian12.yml
Normal file
13
tasks/debian12.yml
Normal file
@ -0,0 +1,13 @@
|
||||
---
|
||||
# Remove EXTERNALLY-MANAGED file if we're on Debian12
|
||||
# Related issue: https://github.com/geerlingguy/ansible-role-pip/issues/57
|
||||
- name: Get python3 version installed
|
||||
ansible.builtin.command: python3 --version
|
||||
register: py3ver
|
||||
changed_when: false
|
||||
|
||||
- name: Remove EXTERNALLY-MANAGED
|
||||
ansible.builtin.file:
|
||||
path: /usr/lib/python3.11/EXTERNALLY-MANAGED
|
||||
state: absent
|
||||
when: py3ver is defined and py3ver.stdout.find("3.11") != -1
|
@ -1,4 +1,10 @@
|
||||
---
|
||||
- name: Remove externally managed from Debian 12
|
||||
ansible.builtin.import_tasks: debian12.yml
|
||||
when:
|
||||
- ansible_distribution == "Debian"
|
||||
- ansible_distribution_major_version|int >= 12
|
||||
|
||||
- name: Ensure Pip is installed.
|
||||
package:
|
||||
name: "{{ pip_package }}"
|
||||
@ -10,5 +16,6 @@
|
||||
version: "{{ item.version | default(omit) }}"
|
||||
virtualenv: "{{ item.virtualenv | default(omit) }}"
|
||||
state: "{{ item.state | default(omit) }}"
|
||||
executable: "{{ pip_executable }}"
|
||||
with_items: "{{ pip_install_packages }}"
|
||||
extra_args: "{{ item.extra_args | default(omit) }}"
|
||||
executable: "{{ item.virtualenv | default(false) | ternary(omit, pip_executable) }}"
|
||||
loop: "{{ pip_install_packages }}"
|
||||
|
Loading…
Reference in New Issue
Block a user