Community.cip
Ansible Collection to automate Programmable Logic Controllers over Common Industrial Protocol (CIP)
Install / Use
/learn @ansible-collections/Community.cipREADME
IN ACTIVE DEVELOPMENT community.cip Collection for Ansible
<!-- Add CI and code coverage badges here. Samples included below. --> <!-- Describe the collection and why a user would want to use it. What does the collection do? -->Collection to manage Programmable Logic Controllers (PLC) via the Common Industrial Protocol (CIP). This utilizes the pycomm3 python library to communicate and manage devices. While this collection may provide functionality for any CIP device, it has only been tested against Allen Bradley PLCs at this time. This scope of this collection is limited to writing tags and verifying other properties of the PLC device limited to the capabilities of the pycomm3 Python library.
Development Environment
To use this while developing, run the following commands from within your local directory you pulled to this git repo to in order to symlink this git repo to the appropriate Ansible Collection path
mkdir -p ~/.ansible/collections/ansible_collections/community
ln -s $(pwd) ~/.ansible/collections/ansible_collections/community/cip
Execution Environment
Execution environments allow for a standardized and containerized environment to run Ansible in. This is used heavily in situations like Ansible Automation Platform. docs/execution-environment contains an example execution environment that can be used with the community.cip collection. For more information, refer to the ansible-builder documentation.
Code of Conduct
We follow the Ansible Code of Conduct in all our interactions within this project.
If you encounter abusive behavior, please refer to the policy violations section of the Code for information on how to raise a complaint.
Communication
<!--List available communication channels. In addition to channels specific to your collection, we also recommend to use the following ones.-->Join the Ansible forum to ask questions, get help, and interact with us.
- Get Help: get help or help others.
Please add appropriate tags if you start new discussions; for example,
use the
edgetag. - Social Spaces: meet and interact with fellow enthusiasts.
- News & Announcements: track project-wide announcements including social events.
We announce releases and important changes through Ansible's Bullhorn newsletter.
For more information about communication, refer to the Ansible Communication guide.
Contributing to this collection
<!--Describe how the community can contribute to your collection. At a minimum, fill up and include the CONTRIBUTING.md file containing how and where users can create issues to report problems or request features for this collection. List contribution requirements, including preferred workflows and necessary testing, so you can benefit from community PRs. If you are following general Ansible contributor guidelines, you can link to - [Ansible Community Guide](https://docs.ansible.com/ansible/devel/community/index.html). List the current maintainers (contributors with write or higher access to the repository). The following can be included:-->The content of this collection is made by people like you, a community of individuals collaborating on making the world better through developing automation software.
We are actively accepting new contributors.
Any kind of contribution is very welcome.
You don't know how to start? Refer to our contribution guide!
We use the following guidelines:
- CONTRIBUTING
- REVIEW_CHECKLIST
- Ansible Community Guide
- Ansible Development Guide
- Ansible Collection Development Guide
Collection maintenance
The current maintainers are listed in the MAINTAINERS file. If you have questions or need help, feel free to mention them in the proposals.
To learn how to maintain / become a maintainer of this collection, refer to the Maintainer guidelines.
Governance
<!--Describe how the collection is governed. Here can be the following text:-->The process of decision making in this collection is based on discussing and finding consensus among participants.
Every voice is important. If you have something on your mind, create an issue or dedicated discussion and let's discuss it!
Tested with Ansible
<!-- List the versions of Ansible the collection has been tested with. Must match what is in galaxy.yml. -->External requirements
<!-- List any external resources the collection depends on, for example minimum versions of an OS, libraries, or utilities. Do not list other Ansible collections here. -->Supported connections
<!-- Optional. If your collection supports only specific connection types (such as HTTPAPI, netconf, or others), list them here. -->Included content
<!-- Galaxy will eventually list the module docs within the UI, but until that is ready, you may need to either describe your plugins etc here, or point to an external docsite to cover that information. -->Using this collection
<!--Include some quick examples that cover the most common use cases for your collection content. It can include the following examples of installation and upgrade (change community.cip correspondingly):-->Gather CIP Facts
ansible-playbook playbooks/cip_facts.yml -i docs/example/inventory.ini
Verify CIP Identity
ansible-playbook playbooks/verify_cip_identity.yml -i docs/example/inventory.ini
Verify Tag Value
ansible-playbook playbooks/verify_valid_tag_value.yml -i docs/example/inventory.ini
Verify Firmware Version
ansible-playbook playbooks/verify_firmware_version.yml -i docs/example/inventory.ini
Ensure Tags are what we want them to be
ansible-playbook playbooks/ensure_tags.yml -i docs/example/inventory.ini
Do all above tasks
ansible-playbook playbooks/main.yml -i docs/example/inventory.ini
Installing the Collection from Ansible Galaxy
Before using this collection, you need to install it with the Ansible Galaxy command-line tool:
ansible-galaxy collection install community.cip
You can also include it in a requirements.yml file and install it with ansible-galaxy collection install -r requirements.yml, using the format:
---
collections:
- name: community.cip
Note that if you install the collection from Ansible Galaxy, it will not be upgraded automatically when you upgrade the ansible package. To upgrade the collection to the latest available version, run the following command:
ansible-galaxy collection install community.cip --upgrade
You can also install a specific version of the collection, for example, if you need to downgrade when something is broken in the latest version (please report an issue in this repository). Use the following syntax to install version 0.1.0:
ansible-galaxy collection install community.cip:==0.1.0
See Ansible Using collections for more details.
Release notes
See the changelog.
More information
- Ansible Collection overview
- Ansible User guide
- Ansible Developer guide
- Ansible Collections Checklist
- Ansible Community code of conduct
- News for Maintainers
Friendly Reminder
PLCs control real world objects that move, spin, and interact with humans. This collection can communicate with PLCs, thus, it can make changes that alter objects in the real world. It is highly recommended to develop and test in a controlled, safe place before atttempting to change or modify any control system running in a production capacity.
Licensing
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of th
Related Skills
node-connect
342.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
84.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
342.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
84.7kCommit, push, and open a PR
