{"id":2951,"date":"2025-02-21T18:34:57","date_gmt":"2025-02-21T17:34:57","guid":{"rendered":"https:\/\/djimn.com\/?p=2951"},"modified":"2025-02-21T18:34:57","modified_gmt":"2025-02-21T17:34:57","slug":"primeros-pasos-con-ansible","status":"publish","type":"post","link":"https:\/\/djimn.com\/index.php\/2025\/02\/21\/primeros-pasos-con-ansible\/","title":{"rendered":"Primeros Pasos con Ansible"},"content":{"rendered":"<p>tiene como finalidad suministrar los pasos necesarios para la instalaci\u00f3n y configuraci\u00f3n b\u00e1sica de la aplicaci\u00f3n Ansible en equipo con la distribuci\u00f3n GNU\/Linux Debian.<\/p>\n<p><strong>Requisitos:<\/strong><\/p>\n<ul>\n<li>Se debe contar con suficiente privilegios para la configuraci\u00f3n de aplicativos<\/li>\n<li>Se debe contar con (02) equipos con ssh instalado<\/li>\n<\/ul>\n<p><strong>Plataforma:<\/strong><\/p>\n<ul>\n<li>Equipos de arquitectura 64 bits<\/li>\n<li>Sistema operativo \u2018GNU\/Linux\u2019 Debian versi\u00f3n 9.1 (actualmente estable)<\/li>\n<\/ul>\n<p><strong>Aplicaciones:<\/strong><\/p>\n<ul>\n<li>Ansible -&gt; 2.2.1.0-2<\/li>\n<li>openssh-server -&gt; 1:7.4p1-10+deb9u1<\/li>\n<li>openssh-client -&gt; 1:7.4p1-10+deb9u1<\/li>\n<\/ul>\n<p><strong>Para la configuraci\u00f3n de la soluci\u00f3n se utilizar\u00e1n dos (02) maquinas con debian 9.1:<\/strong><\/p>\n<p>\u2013 Un (01) Equipo para instalaci\u00f3n y configuraci\u00f3n de la maquina de administraci\u00f3n:<\/p>\n<ul>\n<li>Hostname: admin<\/li>\n<li>IP Interna: 192.168.1.2<\/li>\n<\/ul>\n<p>\u2013 Un (01) equipos para la instalaci\u00f3n y configuraci\u00f3n de nodo<\/p>\n<ul>\n<li>Hostname: nodo1<\/li>\n<li>IP Interna: 192.168.1.3<\/li>\n<\/ul>\n<p>\u2013 Usuario a utilizar: operador<br \/>\n<span id=\"more-1946\"><\/span><\/p>\n<p><strong>INSTALACION DE APLICATIVOS: Maquina Administraci\u00f3n (ADMIN)<\/strong><\/p>\n<pre>operador@admin:\/# aptitude install ansible openssh-client<\/pre>\n<p><strong>Configuraci\u00f3n Equipo: Maquina Administraci\u00f3n (ADMIN)<\/strong><\/p>\n<p>1. Generar llave conexi\u00f3n ssh con el usuario a utilizar para administrar Ansible, en nuestro caso \u00aboperador\u00bb<\/p>\n<pre>operador@admin:~$ ssh-keygen -t rsa<\/pre>\n<pre>Generating public\/private rsa key pair.\r\nEnter file in which to save the key (\/home\/operador\/.ssh\/id_rsa):\r\nEnter passphrase (empty for no passphrase):\r\nEnter same passphrase again:\r\nYour identification has been saved in \/home\/operador\/.ssh\/id_rsa.\r\nYour public key has been saved in \/home\/operador\/.ssh\/id_rsa.pub.\r\nThe key fingerprint is:\r\nSHA256:VR3vrpIWy0MqZqPlF8knGAUemjlQmNWsh9YKgEBd6Oo operador@admin\r\nThe key's randomart image is:\r\n+---[RSA 2048]----+\r\n|+o. +*ooo.  .... |\r\n|. .oo. =o...  .. |\r\n|  ..  =+...     .|\r\n|   .. +.+.     . |\r\n|  .  o oS+ .    .|\r\n| .    . . = +  . |\r\n|.       .  B +  .|\r\n| E     o= o B  . |\r\n|      .+.+ . o.  |\r\n+----[SHA256]-----+\r\noperador@admin:~$ \r\n<\/pre>\n<p>2. Copia la llave p\u00fablica generada, al nodo que desea administrar con Ansible<\/p>\n<pre>operador@admin:~$ scp \/home\/operador\/.ssh\/id_rsa.pub operador@192.168.1.3:\/tmp<\/pre>\n<p><strong>CONFIGURACION EQUIPO: NODO<\/strong><br \/>\n3. Entrar al nodo y copiar la llave p\u00fablica del servidor ansible, en la carpeta del usuario root<\/p>\n<pre>operador@nodo1:\/# cat \/tmp\/id_rsa.pub &gt;&gt; \/root\/.ssh\/authorized_keys<\/pre>\n<p><strong>Nota: si el nodo no tiene creado el archivo autorized_key, siga los siguientes pasos:<\/strong><\/p>\n<p>3.1 Crear la carpeta .ssh<\/p>\n<pre>operador@nodo1:\/# mkdir -p \/root\/.ssh<\/pre>\n<p>3.2 Ajustar los permisos:<\/p>\n<pre>operador@nodo1:\/# chmod 0700 \/root\/.ssh<\/pre>\n<p>3.2 Copiar la llave<\/p>\n<pre>operador@nodo1:\/# cat \/tmp\/id_rsa.pub &gt; \/root\/.ssh\/authorized_keys<\/pre>\n<p>3.3 Colocar los permiso correspondiente al archivo<\/p>\n<pre>operador@nodo1:\/# chmod 0600 \/root\/.ssh\/authorized_keys<\/pre>\n<p>4. verificar la configuraci\u00f3n del servicio ssh<\/p>\n<pre>operador@nodo1:\/# vim \/etc\/ssh\/sshd_config<\/pre>\n<p>4.1 Descomentar las siguientes opciones:<\/p>\n<pre>PubkeyAuthentication yes\r\nAuthorizedKeysFile %home\/.ssh\/authorized_keys .ssh\/authorized_keys .ssh\/authorized_keys2\r\nUseDNS no\r\n<\/pre>\n<p>4.2 Reiniciar el servicio ssh<\/p>\n<pre>operador@nodo1:\/# \/etc\/init.d\/ssh restart<\/pre>\n<p><strong>DESDE LA Maquina Administraci\u00f3n (ADMIN)<\/strong><\/p>\n<p>5. Incorporar en el archivo de inventario de Ansible el nodo que ser\u00e1n gestionado por Ansible<\/p>\n<pre>operador@admin:~$ sudo vim \/etc\/ansible\/hosts<\/pre>\n<p><strong>Efectuar los siguientes cambios:<\/strong><\/p>\n<pre>[webserver]\r\n192.168.1.3\r\n<\/pre>\n<p><strong>donde:<\/strong><br \/>\n\u2013 [webserver] -&gt; Nombres de grupos, que se utilizan en la clasificaci\u00f3n de los sistemas<br \/>\n\u2013 192.168.1.3 -&gt; direcci\u00f3n ip del Nodo a administrar con Ansible<\/p>\n<p><strong>Nota: Es recomendable crear varios grupos, dependiendo de la funcionalidad de los sistemas (web, base de datos, archivos, \u2026), pero no es buena idea poner los sistemas en m\u00e1s de un grupo<\/strong><\/p>\n<p>6. Efectuar pruebas de conexi\u00f3n, ping a todo los nodos:<\/p>\n<pre>operador@admin:~$ ansible all -m ping -u usuario<\/pre>\n<pre>192.168.1.3 | SUCCESS =&gt; {\r\n    \"changed\": false, \r\n    \"ping\": \"pong\"\r\n}\r\n<\/pre>\n<p><strong>donde:<\/strong><\/p>\n<ul>\n<li>all -&gt; host al que va dirigido la ejecuci\u00f3n de la sentencia, se puede utilizar comodin \u00aball\u00bb, nombre de grupo, direcci\u00f3n ip, o combinaciones separados por \u00ab,\u00bb<\/li>\n<li>-m -&gt; nombre del m\u00f3dulo ha ajecutar, en \u00e9ste caso \u00abping\u00bb<\/li>\n<li>-u -&gt; usuario con que se conectar\u00e1 por ssh (debe ser un usuario v\u00e1lido en el host remoto, puede ser root siempre y cuando se permita la conexi\u00f3n por SSH)<\/li>\n<\/ul>\n<p><strong>NOTA: Si existe alg\u00fan problema para ejecutar el comando, es necesario depurar la conexi\u00f3n, para ello se puede utilizar la opci\u00f3n \u00ab-vvvv\u00bb, la cual permite obtener la salida de depuraci\u00f3n. ejemplo: $ ansible all -m ping -u usuario -vvv<\/strong><\/p>\n<p>7. Ping a todo los nodos del grupo webserver:<\/p>\n<pre>operador@admin:~$ ansible -m ping webserver<\/pre>\n<pre>192.168.1.3 | SUCCESS =&gt; {\r\n    \"changed\": false, \r\n    \"ping\": \"pong\"\r\n}\r\n<\/pre>\n<p>8. Verificar el consumo de memoria del nodo:<\/p>\n<pre>operador@admin:~$ ansible -m shell -a 'free -m' 192.168.1.3<\/pre>\n<pre>161.196.181.52 | SUCCESS | rc=0 &gt;&gt;\r\n              total        used        free      shared  buff\/cache   available\r\nMem:            996          66         564          11         365         785\r\nSwap:          1021           0        1021\r\n<\/pre>\n<p><strong>Hasta ac\u00e1 Ansible se encuentra en funcionamiento. El archivo de inventario de Ansible (\/etc\/ansible\/host) es flexible y soporta varias formas de configuraci\u00f3n, como por ejemplo:<\/strong><\/p>\n<p><strong>Ejemplo #1: Configurar Alias al nodo<\/strong><\/p>\n<p>1. Editar archivo de inventario de Ansible<\/p>\n<pre>operador@admin:~$ sudo vim \/etc\/ansible\/hosts<\/pre>\n<p><strong>Efectuar los siguientes cambios:<\/strong><\/p>\n<pre>[webserver]\r\nnodo1 ansible_host=192.168.1.3\r\n<\/pre>\n<p><strong>donde:<\/strong><br \/>\n\u2013 [webserver] -&gt; Nombres de grupos, que se utilizan en la clasificaci\u00f3n de los sistemas<br \/>\n\u2013 nodo1 -&gt; alias del equipo (no es necesario que sea el verdadero nombre del host)<br \/>\n\u2013 ansible_host -&gt; host a conectar<br \/>\n\u2013 192.168.1.3 -&gt; direcci\u00f3n ip del host a administrar con Ansible<\/p>\n<p>2. Ping al alias del nodo1:<\/p>\n<pre>operador@admin:~$ ansible -m ping nodo1<\/pre>\n<pre>nodo1 | SUCCESS =&gt; {\r\n    \"changed\": false, \r\n    \"ping\": \"pong\"\r\n}\r\n<\/pre>\n<p><strong>Ejemplo #2: Configurar Tipo de conexi\u00f3n y puerto<\/strong><\/p>\n<p>3. Editar archivo de inventario de Ansible<\/p>\n<pre>operador@admin:~$ sudo vim \/etc\/ansible\/hosts<\/pre>\n<p><strong>Efectuar los siguientes cambios:<\/strong><\/p>\n<pre>[webserver]\r\nnodo1 ansible_connection=ssh ansible_host=192.168.1.3 ansible_port=22\r\n<\/pre>\n<p><strong>donde:<\/strong><br \/>\n\u2013 [webserver] -&gt; Nombres de grupos, que se utilizan en la clasificaci\u00f3n de los sistemas<br \/>\n\u2013 nodo1 -&gt; alias del equipo (no es necesario que sea el verdadero nombre del host)<br \/>\n\u2013 ansible_connection -&gt; tipo de conexi\u00f3n, \u00e9ste puede ser el nombre de cualquiera de los plugins de conexi\u00f3n de ansible(local, docker, \u2026), en nuestro caso SSH.<br \/>\n\u2013 ansible_host -&gt; host a conectar, en nuestro caso la ip 192.168.1.3<br \/>\n\u2013 ansible_port -&gt; puerto de conexi\u00f3n (en caso de ssh tener otro puerto), en nuestro caso 22<\/p>\n<p>4. Ping al alias del nodo1:<\/p>\n<pre>operador@admin:~$ ansible -m ping nodo1<\/pre>\n<pre>nodo1 | SUCCESS =&gt; {\r\n    \"changed\": false, \r\n    \"ping\": \"pong\"\r\n}\r\n<\/pre>\n<p><strong>Ejemplo 3#: Las conexi\u00f3n deben efectuarse desde el usuario al cual se le configura la relaci\u00f3n de confianza con la conexi\u00f3n SSH (punto 1), en el caso operar con un usuario distinto al usuario administrador de ansible, se puede configurar la conexi\u00f3n de la siguiente forma:<\/strong><\/p>\n<p>5. Editar archivo de inventario de Ansible<\/p>\n<pre>operador@admin:~$ sudo vim \/etc\/ansible\/hosts<\/pre>\n<p><strong>Efectuar los siguientes cambios:<\/strong><\/p>\n<p>[webserver]<br \/>\nnodo1 ansible_connection=ssh ansible_host=192.168.1.3 ansible_port=22 ansible_user=root ansible_ssh_private_key_file=\/root\/.ssh\/id_rsa<\/p>\n<p><strong>donde:<\/strong><br \/>\n\u2013 [webserver] -&gt; Nombres de grupos, que se utilizan en la clasificaci\u00f3n de los sistemas<br \/>\n\u2013 nodo1 -&gt; alias del equipo (no es necesario que sea el verdadero nombre del host)<br \/>\n\u2013 ansible_connection -&gt; tipo de conexi\u00f3n<br \/>\n\u2013 ansible_host -&gt; host a conectar, en nuestro caso la ip 192.168.1.3<br \/>\n\u2013 ansible_port -&gt; puerto de conexi\u00f3n (en caso de ssh tener otro puerto), en nuestro caso 22<br \/>\n\u2013 ansible_user -&gt; usuario con el cual se efectuar\u00e1n las acciones dentro del nodo, en nuestro caso root<br \/>\n\u2013 ansible_ssh_private_key_file -&gt; la ruta de la llave privada de ssh<\/p>\n","protected":false},"excerpt":{"rendered":"<p>tiene como finalidad suministrar los pasos necesarios para la instalaci\u00f3n y configuraci\u00f3n b\u00e1sica de la aplicaci\u00f3n Ansible en equipo con la distribuci\u00f3n GNU\/Linux Debian. Requisitos: Se debe contar con suficiente privilegios para la configuraci\u00f3n de aplicativos Se debe contar con (02) equipos con ssh instalado Plataforma: Equipos de arquitectura 64 bits Sistema operativo \u2018GNU\/Linux\u2019 Debian&hellip; <\/p>\n","protected":false},"author":1,"featured_media":3059,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"_joinchat":[],"footnotes":""},"categories":[5],"tags":[48,51,50,52,49],"class_list":["post-2951","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tech","tag-ansible","tag-infraestructure","tag-platform","tag-playbook","tag-redhat"],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/djimn.com\/wp-content\/uploads\/2024\/10\/red-hat-ansible-automation-platform-kalyan-it-hub-1600x900-1.jpg?fit=1600%2C900&ssl=1","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/djimn.com\/index.php\/wp-json\/wp\/v2\/posts\/2951","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/djimn.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/djimn.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/djimn.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/djimn.com\/index.php\/wp-json\/wp\/v2\/comments?post=2951"}],"version-history":[{"count":1,"href":"https:\/\/djimn.com\/index.php\/wp-json\/wp\/v2\/posts\/2951\/revisions"}],"predecessor-version":[{"id":2952,"href":"https:\/\/djimn.com\/index.php\/wp-json\/wp\/v2\/posts\/2951\/revisions\/2952"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/djimn.com\/index.php\/wp-json\/wp\/v2\/media\/3059"}],"wp:attachment":[{"href":"https:\/\/djimn.com\/index.php\/wp-json\/wp\/v2\/media?parent=2951"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/djimn.com\/index.php\/wp-json\/wp\/v2\/categories?post=2951"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/djimn.com\/index.php\/wp-json\/wp\/v2\/tags?post=2951"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}