diff --git a/docsite/rst/developing.rst b/docsite/rst/developing.rst index c5a1dca0611..8b423d58d0f 100644 --- a/docsite/rst/developing.rst +++ b/docsite/rst/developing.rst @@ -10,6 +10,7 @@ Learn how to build modules of your own in any language, and also how to extend A developing_inventory developing_modules developing_plugins + developing_core developing_test_pr developing_releases diff --git a/docsite/rst/developing_program_flow_modules.rst b/docsite/rst/developing_program_flow_modules.rst new file mode 100644 index 00000000000..554bbc28521 --- /dev/null +++ b/docsite/rst/developing_program_flow_modules.rst @@ -0,0 +1,401 @@ +.. _flow_modules: + +======= +Modules +======= + +This in-depth dive helps you understand Ansible's program flow to execute +modules. It is written for people working on the portions of the Core Ansible +Engine that execute a module. Those writing Ansible Modules may also find this +in-depth dive to be of interest, but individuals simply using Ansible Modules +will not likely find this to be helpful. + +.. _flow_types_of_modules: + +Types of Modules +================ + +Ansible supports several different types of modules in its code base. Some of +these are for backwards compatibility and others are to enable flexibility. + +.. _flow_action_plugins: + +Action Plugins +-------------- + +Action Plugins look like modules to end users who are writing :term:`playbooks` but +they're distinct entities for the purposes of this paper. Action Plugins +always execute on the controller and are sometimes able to do all work there +(for instance, the debug Action Plugin which prints some text for the user to +see or the assert Action Plugin which can test whether several values in +a playbook satisfy certain criteria.) + +More often, Action Plugins set up some values on the controller, then invoke an +actual module on the managed node that does something with these values. An +easy to understand version of this is the :ref:`template Action Plugin +