374d4ecd98
* doc: avoid mix of single and double quotes (#70115) Avoid mix of single and double quotes in the `ternary`, this way we can copy/past the example without any surprise. (cherry picked from commitb491f776b9
) * document FQCN for M() and :seealso: in DOCUMENTATION blocks (#70245) * document FQCN for M() in DOCUMENTATION blocks * add note about c (cherry picked from commit83f6e4850b
) * Fix bullet points in intro_getting_started.rst. (#70365) The layout was jumbled due to issues with whitespace. (cherry picked from commitdc6f4b6502
) * Add steps for how to create changelog.rst for a collection (#70262) * Update docs/docsite/rst/dev_guide/developing_collections.rst * add steps to create changelogs, add sentence about not using the tool * add note for rerunning the command Co-authored-by: Felix Fontein <felix@fontein.de> (cherry picked from commit5a28b2b86c
) * ansible-doc: avoid problems with YAML anchors when formatting man page (#70045) * Avoid problems with YAML anchors when formatting man page. * Add changelog. (cherry picked from commit5e4f708241
) * Minor grammatical fix (#70405) 'you' -> 'your' (cherry picked from commita1ac595d42
) * incorporate minimalism feedback on filters page (#70366) Co-authored-by: Alicia Cozine <acozine@users.noreply.github.com> (cherry picked from commitc89f3cda9e
) * more correct info about role main.yml (#70326) fixes #40496 (cherry picked from commit5d3d097de3
) * Fix a small typo in cache plugin description @ `config/base.yml` PR #70420 (cherry picked from commit626df08d9d
) * with_sequence: example using vars (#69369) Added an example for using vars in with_sequence. Fixes: #68836 Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com> (cherry picked from commit5709173c32
) * Update pull.py (#70393) (cherry picked from commit46ad3c1162
) * Update playbooks.rst (#70317) (cherry picked from commit7c90a2d2a6
) * Add documentation for ipaddr filters (#70343) (cherry picked from commit9eb904ea61
) * update platform table with links to collections (#70373) (cherry picked from commitaa59c23aed
) * Add description of collections and become_exe keywords (#68055) * Add description of collections keyword * Update based on feedback. - Add link to become plugins. - Add note about how the collections keyword works with roles. (cherry picked from commit5833af9e2a
) Co-authored-by: Gonéri Le Bouder <goneri@lebouder.net> Co-authored-by: Mark Sanders <ziplokk.mark.sanders@gmail.com> Co-authored-by: Felix Fontein <felix@fontein.de> Co-authored-by: Sir Mobus Gochfulshigan Dorphin Esquire XXIII <celestialtuba@gmail.com> Co-authored-by: Alicia Cozine <879121+acozine@users.noreply.github.com> Co-authored-by: Brian Coca <bcoca@users.noreply.github.com> Co-authored-by: Michael Scherer <mscherer@users.noreply.github.com> Co-authored-by: Abhijeet Kasurde <akasurde@redhat.com> Co-authored-by: Ethan <smithe2413@gmail.com> Co-authored-by: jafiala <56597272+jafiala@users.noreply.github.com> Co-authored-by: Baptiste Mille-Mathias <baptiste.millemathias@gmail.com> Co-authored-by: Sam Doran <sdoran@redhat.com>
130 lines
5.4 KiB
ReStructuredText
130 lines
5.4 KiB
ReStructuredText
.. _intro_getting_started:
|
|
|
|
***************
|
|
Getting Started
|
|
***************
|
|
|
|
Now that you have read the :ref:`installation guide<installation_guide>` and installed Ansible on a control node, you are ready to learn how Ansible works. A basic Ansible command or playbook:
|
|
|
|
* selects machines to execute against from inventory
|
|
* connects to those machines (or network devices, or other managed nodes), usually over SSH
|
|
* copies one or more modules to the remote machines and starts execution there
|
|
|
|
Ansible can do much more, but you should understand the most common use case before exploring all the powerful configuration, deployment, and orchestration features of Ansible. This page illustrates the basic process with a simple inventory and an ad-hoc command. Once you understand how Ansible works, you can read more details about :ref:`ad-hoc commands<intro_adhoc>`, organize your infrastructure with :ref:`inventory<intro_inventory>`, and harness the full power of Ansible with :ref:`playbooks<playbooks_intro>`.
|
|
|
|
.. contents::
|
|
:local:
|
|
|
|
Selecting machines from inventory
|
|
=================================
|
|
|
|
Ansible reads information about which machines you want to manage from your inventory. Although you can pass an IP address to an ad-hoc command, you need inventory to take advantage of the full flexibility and repeatability of Ansible.
|
|
|
|
Action: create a basic inventory
|
|
--------------------------------
|
|
For this basic inventory, edit (or create) ``/etc/ansible/hosts`` and add a few remote systems to it. For this example, use either IP addresses or FQDNs:
|
|
|
|
.. code-block:: text
|
|
|
|
192.0.2.50
|
|
aserver.example.org
|
|
bserver.example.org
|
|
|
|
Beyond the basics
|
|
-----------------
|
|
Your inventory can store much more than IPs and FQDNs. You can create :ref:`aliases<inventory_aliases>`, set variable values for a single host with :ref:`host vars<host_variables>`, or set variable values for multiple hosts with :ref:`group vars<group_variables>`.
|
|
|
|
.. _remote_connection_information:
|
|
|
|
Connecting to remote nodes
|
|
==========================
|
|
|
|
Ansible communicates with remote machines over the `SSH protocol <https://www.ssh.com/ssh/protocol/>`_. By default, Ansible uses native OpenSSH and connects to remote machines using your current user name, just as SSH does.
|
|
|
|
Action: check your SSH connections
|
|
----------------------------------
|
|
Confirm that you can connect using SSH to all the nodes in your inventory using the same username. If necessary, add your public SSH key to the ``authorized_keys`` file on those systems.
|
|
|
|
Beyond the basics
|
|
-----------------
|
|
You can override the default remote user name in several ways, including:
|
|
|
|
* passing the ``-u`` parameter at the command line
|
|
|
|
* setting user information in your inventory file
|
|
|
|
* setting user information in your configuration file
|
|
|
|
* setting environment variables
|
|
|
|
See :ref:`general_precedence_rules` for details on the (sometimes unintuitive) precedence of each method of passing user information. You can read more about connections in :ref:`connections`.
|
|
|
|
Copying and executing modules
|
|
=============================
|
|
|
|
Once it has connected, Ansible transfers the modules required by your command or playbook to the remote machine(s) for execution.
|
|
|
|
Action: run your first Ansible commands
|
|
---------------------------------------
|
|
Use the ping module to ping all the nodes in your inventory:
|
|
|
|
.. code-block:: bash
|
|
|
|
$ ansible all -m ping
|
|
|
|
Now run a live command on all of your nodes:
|
|
|
|
.. code-block:: bash
|
|
|
|
$ ansible all -a "/bin/echo hello"
|
|
|
|
You should see output for each host in your inventory, similar to this:
|
|
|
|
.. code-block:: ansible-output
|
|
|
|
aserver.example.org | SUCCESS => {
|
|
"ansible_facts": {
|
|
"discovered_interpreter_python": "/usr/bin/python"
|
|
},
|
|
"changed": false,
|
|
"ping": "pong"
|
|
}
|
|
|
|
Beyond the basics
|
|
-----------------
|
|
By default Ansible uses SFTP to transfer files. If the machine or device you want to manage does not support SFTP, you can switch to SCP mode in :ref:`intro_configuration`. The files are placed in a temporary directory and executed from there.
|
|
|
|
If you need privilege escalation (sudo and similar) to run a command, pass the ``become`` flags:
|
|
|
|
.. code-block:: bash
|
|
|
|
# as bruce
|
|
$ ansible all -m ping -u bruce
|
|
# as bruce, sudoing to root (sudo is default method)
|
|
$ ansible all -m ping -u bruce --become
|
|
# as bruce, sudoing to batman
|
|
$ ansible all -m ping -u bruce --become --become-user batman
|
|
|
|
You can read more about privilege escalation in :ref:`become`.
|
|
|
|
Congratulations! You have contacted your nodes using Ansible. You used a basic inventory file and an ad-hoc command to direct Ansible to connect to specific remote nodes, copy a module file there and execute it, and return output. You have a fully working infrastructure.
|
|
|
|
Next steps
|
|
==========
|
|
Next you can read about more real-world cases in :ref:`intro_adhoc`,
|
|
explore what you can do with different modules, or read about the Ansible
|
|
:ref:`working_with_playbooks` language. Ansible is not just about running commands, it
|
|
also has powerful configuration management and deployment features.
|
|
|
|
.. seealso::
|
|
|
|
:ref:`intro_inventory`
|
|
More information about inventory
|
|
:ref:`intro_adhoc`
|
|
Examples of basic commands
|
|
:ref:`working_with_playbooks`
|
|
Learning Ansible's configuration management language
|
|
`Mailing List <https://groups.google.com/group/ansible-project>`_
|
|
Questions? Help? Ideas? Stop by the list on Google Groups
|
|
`irc.freenode.net <http://irc.freenode.net>`_
|
|
#ansible IRC chat channel
|