Skip to main content

A butler CLI for assistance in managing Ansible projects

Project description

ansible-butler

Butler CLI for Ansible projects

Functions

Object Action Description
directory init initialize an ansible directory
directory init cleanup an ansible directory
ee init initialize an execution environment directory for ansible-builder
role list list roles
role clean clean role directory structure (remove empty yml files & dirs)
role mk-readme auto generate readme based on role meta and basic yml info
playbook update map legacy module names to FCQNs
playbook list-collections[lc] list collections used in a playbook (following include_* directives)

Usage

Usage:
  ansible-butler directory init [<dir>] [--config=PATH]
  ansible-butler directory clean [<dir>] [--skip-roles]
  ansible-butler ee init [<dir>] [--config=PATH]
  ansible-butler role list [--roles-path=PATH] [<name> --recursive]
  ansible-butler role clean [--roles-path=PATH] [<name> --recursive]
  ansible-butler role mk-readme [--roles-path=PATH] [<name> --recursive]
  ansible-butler playbook update [--context=CONTEXT] [--config=PATH] [<name>] [--recursive] [--force]
  ansible-butler playbook [list-collections|lc] [--context=CONTEXT] [--config=PATH] [<name>] [--recursive] [--force]

Arguments:
  name    name of target (accepts glob patterns)
  dir     path to directory [default: ./]

Options:
  -h --help           Show this screen
  -r --recursive      Apply glob recursively [default: False]
  -f --force          Make file changes in place
  --config=PATH       Path to config file
  --roles-path=PATH   Path to roles directory [default: ./roles]
  --context=CONTEXT   Path to context directory [default: ./]
  --skip-roles        Flag to skip cleaning roles

Examples

  • Initialize Ansible Directory
    • ansible-butler directory init ./sandbox
    • ansible-butler directory init ./sandbox --config=~/configs/ansible-butler.yml
  • Clean an Ansible Directory
    • ansible-butler directory clean ./sandbox
    • ansible-butler directory clean ./sandbox --skip-roles
  • Initialize Execution Environment Directory
    • ansible-butler ee init ./ee-windows
    • ansible-butler ee init ./ee-windows --config=~/configs/ansible-butler.yml
  • Clean Roles
    • ansible-butler role clean my-role-1
    • ansible-butler role clean my-role-*
  • Generate README
    • ansible-butler role mk-readme my-role-1
    • ansible-butler role mk-readme my-role-*
  • Update Playbooks
    • ansible-butler playbook update --context=./playbooks -r
    • ansible-butler playbook update legacy-*.yml
    • ansible-butler playbook update -f
  • List Collections
    • ansible-butler playbook list-collections --context=./playbooks -r
    • ansible-butler playbook lc example-playbook.yml

Configuration

Create an .ansible-butler.yml in one or more of the following locations:

/etc/ansible-butler/    ## least precedence
~/
./                      ## highest precedence

You can also specify a specific path at runtime via the --config option.

# Configuration Schema
execution_environment:
  init:
    version: 2
    ansible_config: ansible.cfg
    ee_base_image: quay.io/ansible/ansible-runner:latest
    ee_builder_image: quay.io/ansible/ansible-builder:latest
    prepend_build_steps:
      - ...
    append_build_steps:
      - ...

directory:
  init:
    folders:
      - name: plugins
        folders:
          ...
        files:
          - README.md
    files:
      - playbook.yml

playbook:
  update:
    modules:
      smart_device:
        redirect: zjleblanc.kasa.smart_device
      custom_module:
        redirect: company.it.custom_module

🔗 Default configuration file
🔗 Example adding test plugins directory
🔗 Example adding module redirects

Troubleshooting

  • ansible-butler: command not found
    • check the $PATH environment variable and ensure that ~/.local/bin is included

License

GNU General Public License

Author Information

Zach LeBlanc

Red Hat

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ansible-butler-1.0.13.tar.gz (69.6 kB view details)

Uploaded Source

Built Distribution

ansible_butler-1.0.13-py3-none-any.whl (69.4 kB view details)

Uploaded Python 3

File details

Details for the file ansible-butler-1.0.13.tar.gz.

File metadata

  • Download URL: ansible-butler-1.0.13.tar.gz
  • Upload date:
  • Size: 69.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for ansible-butler-1.0.13.tar.gz
Algorithm Hash digest
SHA256 1f6d8fba647e5ed6ffa3e2807e0a011750b794efba1cea457834fbdedcd062fa
MD5 efa3469192fe30d79513f1d7b4ed7b22
BLAKE2b-256 b71601e9761275fa34fb0c03ef666efda01d1d59d990a78497e6ad5afe2f704e

See more details on using hashes here.

File details

Details for the file ansible_butler-1.0.13-py3-none-any.whl.

File metadata

File hashes

Hashes for ansible_butler-1.0.13-py3-none-any.whl
Algorithm Hash digest
SHA256 73579adc698e8c4a5787d2f61e76ebb0854c2e068ca33b18f434a4f745bbe059
MD5 6197fda1f4392b0c1f8c3cb9da890095
BLAKE2b-256 a03da353aa124b6c9d89d7662ad316afbb179ab0dfd90335e2d3ba693ba1561b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page