Download the PHP package asm/php-ansible without Composer
On this page you can find all versions of the php package asm/php-ansible. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download asm/php-ansible
More information about asm/php-ansible
Files in asm/php-ansible
Package php-ansible
Short Description A PHP wrapper for Ansible.
License MIT
Homepage https://github.com/maschmann/php-ansible
Informations about the package php-ansible
php-ansible library
This library is a OOP-wrapper for the ansible provisioning tool.
I intend to use this library for a symfony2 bundle and also a deployment GUI, based on php/symfony2.
The current implementation is feature-complete for the ansible-playbook
and ansible-galaxy
commands.
Prerequisites
Your OS should be a flavor of linux and ansible has to be installed. It's easiest if ansible is in PATH :-) The library tries to find ansible-playbook and ansible-galaxy by itself or use the paths/executables you provide.
Usage
First instantiate the base object which works as a factory for the commands. Only the first parameter is mandatory, and provides the library with the path to your ansible deployment file structure.
Optionally, you can specify the path of your ansible-playbook
and ansible-galaxy
commands, just in case they are not in the PATH.
You can also pass any PSR compliant logging class to have further details logged. This is especially useful to have the actual run command logged.
Playbooks
Then you can use the object just like in your previous ansible deployment. If you don't specify an inventory file with , the wrapper tries to determine one, based on your playbook name:
This will create following ansible command:
For the execute command you can use a callback to get real-time output of the command:
If no callback is given, the method will return the ansible-playbook output as a string, so you can either or directly pipe it into a log/whatever.
You can also pass an external YML/JSON file as extraVars containing a complex data structure to be passed to Ansible:
You can have a Json output adding json() option that enable 'ANSIBLE_STDOUT_CALLBACK=json' env vars to make a json output in ansible.
Galaxy
The syntax follows ansible's syntax with one deviation: list is a reserved keyword in php (array context) and therefore I had to rename it to "modulelist()".
would generate:
You can access all galaxy commands:
init()
info()
install()
help()
modulelist()
remove()
You can combine the calls with their possible arguments, though I don't have any logic preventing e.g. from being applied to e.g. info().
Possible arguments/options:
initPath()
offline()
server()
force()
roleFile()
rolesPath()
ignoreErrors()
noDeps()
Process timeout
Default process timeout is set to 300 seconds. If you need more time to execute your processes: Adjust the timeout :-)
Development
You can use the provided docker image with which uses a default php-cli docker image and ansible 2.x. See the for more info.
Start the container with .
Composer install:
You can run code or the tests within the container:
Thank you for your contributions!
thank you for reviewing, bug reporting, suggestions and PRs :-) xabbuh, emielmolenaar, saverio, soupdiver, linaori, paveldanilin and many others!
Future features
The Next steps for implementation are:
- improve type handling and structure, due to overall complexity of the playbook at the moment
- scalar typehints all over the place
- provide docker support for development
- wrapping the library into a bundle -> maybe
- provide commandline-capabilities -> maybe
License
php-ansible is licensed under the MIT license. See the LICENSE for the full license text.
All versions of php-ansible with dependencies
psr/log Version ^2.0|^3.0
symfony/process Version ^5.3|^6.0|^7.0