ethpandaops / ansible-collection-general

Ansible collection with multiple reusable roles used by the EthPandaOps team
MIT License
26 stars 10 forks source link

Ansible Collection - ethpandaops.general

Lint Integration Integration (ethereum_node)

A collection of reusable ansible components used by the EthPandaOps team.

Roles

Ethereum tooling

Ethereum client pair

Ethereum execution clients

Ethereum consensus clients

Ethereum L2 clients

General purpose tooling

Prometheus exporters

Hetzner

Usage

Currently we're not publishing the collection to Ansible Galaxy. We'll do that once it grows bigger.

To install the collection directly from our git repository you can do the following:

ansible-galaxy collection install git+https://github.com/ethpandaops/ansible-collection-general.git,master

Or using a requirements.yml file that looks like:

collections:
  - name: ethpandaops.general
    source: https://github.com/ethpandaops/ansible-collection-general.git,master
    type: git

Then run the following command:

ansible-galaxy install -r requirements.yml

Local testing and development

Clone the repository. Make sure that you follow that directory structure, otherwise ansible test won't work:

git clone git@github.com:ethpandaops/ansible-collection-general.git ansible_collections/ethpandaops/general

If you want to test and develop on this ansible collection you'll need some tools. We're using asdf to commit to certain versions of those tools. Some additional python specific tools are defined in the requirements.txt.

Make sure you have asdf installed and then you can run the ./setup.sh script which will install all required tools.

For linting and sanity checks you can run the following commands:

ansible-lint
ansible-test sanity

Some roles have molecule tests inside. You can check this if a role has a molecule directory within. To run molecule ona given role you can do the following:

cd roles/blockscout
molecule test

If you want to test the ethereum_node role with molecule, you can pass it the specific execution and consensus clients via ENV vars:

cd roles/ethereum_node
EXECUTION_CLIENT=geth CONSENSUS_CLIENT=lighthouse molecule test

License

MIT License