Skip to main content

A simple configuration management tool designed for performing administrative actions on Linux servers

Project description

Configurator

Welcome to the Configurator! Configurator is a Python-based command line interface (CLI) which issues commands based on user-defined "tasks" to "hosts" over SSH.

Installation

Option 1: Install from TestPyPI

  1. Install the configurator: pip install atkinsonm-configurator

Option 2: Install from Source

  1. Clone this package.
  2. cd part-two.
  3. sudo python3 setup.py.
  4. Run atkinsonm-configurator --help to confirm the install.

Using the Configurator

atkinsonm-configurator --help is your friend.

Configuring Hosts

atkinsonm-configurator host --help lists commands for managing hosts. You can also manage the hosts file by hand. See samples/hosts.yaml for examples.

At this time we support password authentication only and assume the password is for the root user. We only support specifying hosts by IP address at this time.

The hosts must have a root user, must allow logins to the root user using password authentication, and must be accessible over SSH. No other dependencies are required for installation on target hosts (and therefore no bootstrap.sh is provided with this package).

Configuring Tasks

Modify the hosts file (YAML format, default location /home/$USER/configurator-tasks.yaml) by hand using the supported task types below. The format of the file is a top-level key called tasks which is a list of task definitions.

See samples/tasks.yaml for examples.

Tasks are executed in the order they are defined. Define related task dependencies before successors.

Shared Properties

All tasks have these properties.

  • name: str

Tasks which support specifying a service to restart have these additional properties:

  • restart_service (str): the name of a service to restart with service <service-name> restart

Supported Task Types

File

Create files, set content and metadata

This will replace any files/contents already present at specified locations. Use with caution.

  • type: file
  • path (str): absolute path or relative path (from the root user's home directory) of the file to create
  • contents (str): the file contents
  • owner (str) the file owner (user)
  • group (str) the file owner (group)
  • mode (int) the file mode
tasks:
- name: hello
  type: file
  path: /root/hello
  contents: hello!
  owner: root
  group: root
  mode: 644

Escape single quotes in contents.

File Remove

Removes a file at the specified path.

  • type: file_remove
  • path (str): absolute path or relative path (from the root user's home directory) of the file to remove
- name: remove default index
  type: file_remove
  path: /var/www/html/index.html
Package

Installs and uninstalls packages (apt support only)

  • type: package
  • install (bool): True or False. True means install, False means uninstall
  • package_name (str): the name of the package

Running Commands

Use atkinsonm-configurator task run to run all tasks on all hosts in sequence.

Configuring an Ubuntu Server with Apache and PHP

samples/webserver-tasks.yaml has tasks to set up an Ubuntu server to install Apache and PHP and run a Hello World program in PHP. To run it:

  1. Install atkinsonm-configurator (command above)
  2. Copy the contents of samples/webserver-tasks.yaml to a local file (e.g. /home/$USER/webserver-config.yaml)
  3. Configure hosts per instructions above (hosts file not included here for security reasons)
  4. Run atkinsonm-configurator task run -t /home/$USER/webserver-config.yaml
  5. Test your new webserver with curl -sv "http://ADDRESS"

Future Improvements

There are a number of improvements I would make to this application given more time. Many TODOs are called out in code comments. I will highlight a few significant ones here:

  • Support authentication other than root user
    • Privilege escalation (sudo) where necessary for non-root users
  • SSH key-based authentication
  • Support for other package managers
  • General code cleanliness

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

atkinsonm-configurator-0.0.4.tar.gz (7.2 kB view details)

Uploaded Source

Built Distribution

atkinsonm_configurator-0.0.4-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file atkinsonm-configurator-0.0.4.tar.gz.

File metadata

File hashes

Hashes for atkinsonm-configurator-0.0.4.tar.gz
Algorithm Hash digest
SHA256 9e3943dea62e2d1b7fdc5f82598eac5be4f917d0c5d94246f9742ce1c3fbcb0c
MD5 e9991323c4a63abf8fbb79a003d77bf5
BLAKE2b-256 acc4aa3a9aca0d3377188bf93ca717775dc7a85346ed1bb0e1d49fa6e9c45986

See more details on using hashes here.

File details

Details for the file atkinsonm_configurator-0.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for atkinsonm_configurator-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 0e4c51da059a36f8f84c9a0e15bd79850ef1900e5d80205f3f352ab2a10c4767
MD5 52be314ffba337fbfcedb93f5659a62b
BLAKE2b-256 c22d149d37811d2f781925099e30144524770773cf60a8529c16919299e8988e

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