{"id":21326,"date":"2025-10-27T11:45:41","date_gmt":"2025-10-27T17:45:41","guid":{"rendered":"https:\/\/sada.services\/?p=21326"},"modified":"2025-10-31T13:35:00","modified_gmt":"2025-10-31T19:35:00","slug":"2-semaphore-crear-estructura-de-directorios","status":"publish","type":"post","link":"https:\/\/sada.services\/?p=21326","title":{"rendered":"2. Semaphore: Crear Estructura de Directorios"},"content":{"rendered":"\n<ul class=\"wp-block-list\">\n<li>Se crea la siguiente estructura de directorios<\/li>\n\n\n\n<li>Para los ambientes de desarrollo y producci\u00f3n de la aplicaci\u00f3n SIGESA<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>tree \/home\/cgi\/semaphore<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Estructura para almacenar playbook gen\u00e9ricos<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"710\" height=\"397\" src=\"https:\/\/sada.services\/wp-content\/uploads\/2025\/10\/Seleccion_1851.png\" alt=\"\" class=\"wp-image-21408\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2025\/10\/Seleccion_1851.png 710w, https:\/\/sada.services\/wp-content\/uploads\/2025\/10\/Seleccion_1851-300x168.png 300w\" sizes=\"(max-width: 710px) 100vw, 710px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Comandos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>###################################################################\n# Semaphore\n###################################################################\nmkdir -p \/home\/cgi\/semaphore\/logs\nmkdir -p \/home\/cgi\/semaphore\/tmp\n\n\n\n\n###################################################################\n# Generico\n###################################################################\nmkdir -p \/home\/cgi\/semaphore\/generico\/linux\nmkdir -p \/home\/cgi\/semaphore\/generico\/linux\/playbooks\/\n\nmkdir -p \/home\/cgi\/semaphore\/generico\/linux\/playbooks\/files\nmkdir -p \/home\/cgi\/semaphore\/generico\/linux\/playbooks\/templates\nmkdir -p \/home\/cgi\/semaphore\/generico\/linux\/playbooks\/roles\nmkdir -p \/home\/cgi\/semaphore\/generico\/linux\/playbooks\/inventories\nmkdir -p \/home\/cgi\/semaphore\/generico\/linux\/playbooks\/group_vars\nmkdir -p \/home\/cgi\/semaphore\/generico\/linux\/playbooks\/host_vars\nmkdir -p \/home\/cgi\/semaphore\/generico\/linux\/playbooks\/keys\nmkdir -p \/home\/cgi\/semaphore\/generico\/linux\/playbooks\/vault\nmkdir -p \/home\/cgi\/semaphore\/generico\/linux\/playbooks\/vars\n\n\nchown -R cgi:cgi \/home\/cgi\/semaphore<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Explicaci\u00f3n:\n<ul class=\"wp-block-list\">\n<li>files: Permite almacenar archivos utilizados por los playbooks<\/li>\n\n\n\n<li>templates: permite almacenar plantillas <\/li>\n\n\n\n<li>roles: creaci\u00f3n de roles<\/li>\n\n\n\n<li>inventariories: almacenar inventarios<\/li>\n\n\n\n<li>group_vars: variables por grupos de roles<\/li>\n\n\n\n<li>host_vars: variables espec\u00edficas de un host<\/li>\n\n\n\n<li>keys: llaves ssh necesarias<\/li>\n\n\n\n<li>vault: si se usa Ansible vault<\/li>\n\n\n\n<li>logs: logs del sistema<\/li>\n\n\n\n<li>tmp: archivos temporales<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Estructura Producci\u00f3n y desarrollo SIGESA<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>###################################################################\n# Ambiente: Producci\u00f3n | Aplicaci\u00f3n: SIGESA\n###################################################################\nmkdir -p \/home\/cgi\/semaphore\/produccion\n\nmkdir -p \/home\/cgi\/semaphore\/produccion\/sigesa\nmkdir -p \/home\/cgi\/semaphore\/produccion\/sigesa\/playbooks\nmkdir -p \/home\/cgi\/semaphore\/produccion\/sigesa\/playbooks\/files\nmkdir -p \/home\/cgi\/semaphore\/produccion\/sigesa\/playbooks\/templates\nmkdir -p \/home\/cgi\/semaphore\/produccion\/sigesa\/playbooks\/roles\nmkdir -p \/home\/cgi\/semaphore\/produccion\/sigesa\/playbooks\/inventories\nmkdir -p \/home\/cgi\/semaphore\/produccion\/sigesa\/playbooks\/group_vars\nmkdir -p \/home\/cgi\/semaphore\/produccion\/sigesa\/playbooks\/host_vars\nmkdir -p \/home\/cgi\/semaphore\/produccion\/sigesa\/playbooks\/keys\nmkdir -p \/home\/cgi\/semaphore\/produccion\/sigesa\/playbooks\/vault\nmkdir -p \/home\/cgi\/semaphore\/produccion\/sigesa\/playbooks\/vars\n\n\n\n###################################################################\n# Ambiente: Desarrollo | Aplicaci\u00f3n: SIGESA\n###################################################################\nmkdir -p \/home\/cgi\/semaphore\/desarrollo\nmkdir -p \/home\/cgi\/semaphore\/desarrollo\/sigesa\nmkdir -p \/home\/cgi\/semaphore\/desarrollo\/sigesa\/playbooks\n\nmkdir -p \/home\/cgi\/semaphore\/desarrollo\/sigesa\/playbooks\/files\nmkdir -p \/home\/cgi\/semaphore\/desarrollo\/sigesa\/playbooks\/templates\nmkdir -p \/home\/cgi\/semaphore\/desarrollo\/sigesa\/playbooks\/roles\nmkdir -p \/home\/cgi\/semaphore\/desarrollo\/sigesa\/playbooks\/inventories\nmkdir -p \/home\/cgi\/semaphore\/desarrollo\/sigesa\/playbooks\/group_vars\nmkdir -p \/home\/cgi\/semaphore\/desarrollo\/sigesa\/playbooks\/host_vars\nmkdir -p \/home\/cgi\/semaphore\/desarrollo\/sigesa\/playbooks\/keys\nmkdir -p \/home\/cgi\/semaphore\/desarrollo\/sigesa\/playbooks\/vault\nmkdir -p \/home\/cgi\/semaphore\/desarrollo\/sigesa\/playbooks\/vars\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Desarrollo<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"566\" height=\"335\" src=\"https:\/\/sada.services\/wp-content\/uploads\/2025\/10\/Seleccion_1852.png\" alt=\"\" class=\"wp-image-21410\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2025\/10\/Seleccion_1852.png 566w, https:\/\/sada.services\/wp-content\/uploads\/2025\/10\/Seleccion_1852-300x178.png 300w\" sizes=\"(max-width: 566px) 100vw, 566px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Producci\u00f3n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"355\" height=\"372\" src=\"https:\/\/sada.services\/wp-content\/uploads\/2025\/10\/Seleccion_1853.png\" alt=\"\" class=\"wp-image-21411\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2025\/10\/Seleccion_1853.png 355w, https:\/\/sada.services\/wp-content\/uploads\/2025\/10\/Seleccion_1853-286x300.png 286w\" sizes=\"(max-width: 355px) 100vw, 355px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Galaxy<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Por defecto semaphore utiliza galaxy (tema pendiente)<\/li>\n\n\n\n<li>Y genera los siguientes warnnigs<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>1:09:27 PM\nNo \/home\/cgi\/semaphore\/generico\/linux\/playbooks\/collections\/requirements.yml file found. Skip galaxy install process.\n1:09:27 PM\nNo \/home\/cgi\/semaphore\/generico\/linux\/playbooks\/requirements.yml file found. Skip galaxy install process.\n1:09:27 PM\nNo \/home\/cgi\/semaphore\/generico\/linux\/playbooks\/collections\/requirements.yml file found. Skip galaxy install process.\n1:09:27 PM\nNo \/home\/cgi\/semaphore\/generico\/linux\/playbooks\/requirements.yml file found. Skip galaxy install process.\n1:09:27 PM\nNo \/home\/cgi\/semaphore\/generico\/linux\/playbooks\/roles\/requirements.yml file found. Skip galaxy install process.\n1:09:27 PM\nNo \/home\/cgi\/semaphore\/generico\/linux\/playbooks\/requirements.yml file found. Skip galaxy install process.\n1:09:27 PM\nNo \/home\/cgi\/semaphore\/generico\/linux\/playbooks\/roles\/requirements.yml file found. Skip galaxy install process.\n1:09:27 PM\nNo \/home\/cgi\/semaphore\/generico\/linux\/playbooks\/requirements.yml file found. Skip galaxy install process.<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"991\" height=\"578\" src=\"https:\/\/sada.services\/wp-content\/uploads\/2025\/10\/Seleccion_1850.png\" alt=\"\" class=\"wp-image-21406\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2025\/10\/Seleccion_1850.png 991w, https:\/\/sada.services\/wp-content\/uploads\/2025\/10\/Seleccion_1850-300x175.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2025\/10\/Seleccion_1850-768x448.png 768w\" sizes=\"(max-width: 991px) 100vw, 991px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para evitar estas advertencias dentro de cualquier  directorio que contenga playbook debemos crear el archivo <\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/home\/cgi\/semaphore\/generico\/linux\/playbooks\/requirements.yml<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Crear el directorio<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -p \/home\/cgi\/semaphore\/generico\/linux\/playbooks\/collections<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ejecutar<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>tee \/home\/cgi\/semaphore\/generico\/linux\/playbooks\/collections\/requirements.yml > \/dev\/null &lt;&lt;'EOF'\n---\ncollections: &#91;]\nEOF\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Resumen \/ Plantilla<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nano directorio_playbooks\/requirements.yml\n\nmkdir -p directorio_playbooks\/collections\n\ntee directorio_playbooks\/collections\/requirements.yml > \/dev\/null &lt;&lt;'EOF'\n---\ncollections: &#91;]\nEOF<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ejemplo<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/home\/cgi\/semaphore\/generico\/linux\/playbooks\/requirements.yml\n\nmkdir -p \/home\/cgi\/semaphore\/generico\/linux\/playbooks\/collections\n\ntee \/home\/cgi\/semaphore\/generico\/linux\/playbooks\/collections\/requirements.yml > \/dev\/null &lt;&lt;'EOF'\n---\ncollections: &#91;]\nEOF<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Galaxy<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-21326","post","type-post","status-publish","format-standard","hentry","category-sin-categoria"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/21326","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=21326"}],"version-history":[{"count":13,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/21326\/revisions"}],"predecessor-version":[{"id":21412,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/21326\/revisions\/21412"}],"wp:attachment":[{"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=21326"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=21326"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=21326"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}