
.::ACTUALIZACIÓN-SOLUCIONADO::.
Con la ayuda imprescindible de @wirap, ahora está funcionando. He vinculado simbólicamente el directorio del script /etc/salt/states/scripts
y usando esta test.sls
configuración ahora está funcionando.
/root/bin/updater/scripts/pam-setup-access:
file.managed:
- name: /tmp/pam-setup-access
- source: salt://scripts/pam-setup-access
- mode: 0700
run_script:
cmd.run:
- name: /tmp/pam-setup-access
file.absent:
- name: /tmp/pam-setup-access
Soy nuevo en salt-ssh y estoy buscando información.aquícon respecto a cómo ejecutar un script que reside en mi cuadro de administración ( /root/bin/updater/scripts/pam-setup-access
) en un nodo remoto al que también tengo acceso de root.
Creé un state
archivo (a continuación) pero no estoy seguro de dónde colocarlo. La sal-sshdocumentosSolo lo menciono /etc/salt/master
, así que lo busqué peroesos documentosParecen ser específicos para la instalación vagabunda y de paquetes.
add script:
file.managed:
- name: pam-setup-access
- source: /root/bin/updater/scripts/pam-setup-access
run script:
cmd.run:
- name: pam-setup-access
Por último, intenté simplemente ejecutar el archivo de estado desde el directorio actual como se muestra en el primer enlace, pero solo lo molesté. ¿Qué me estoy perdiendo?
# salt-ssh '*' state.apply test.sls
nod0:
[CRITICAL] Unable to import msgpack or msgpack_pure python modules
Function state.apply is not available
nod1:
[CRITICAL] Unable to import msgpack or msgpack_pure python modules
Function state.apply is not available
.:: ACTUALIZAR ::.
Necesito usar salt-ssh ya que varios "súbditos" residen en una red separada del maestro (DMZ). Según tengo entendido, la configuración tradicional de Salt requiere que los minions se conecten al Salt Master.
Desde la publicación, instalé salt-ssh desdeel repositorio de saltstackque parece haberse solucionado el msgpack
error anterior. También modifiqué algunos de los ejemplos del enlace específico de vagabundo anterior, agregando un master
archivo y states
un directorio en /etc/salt
. He colocado el archivo de estado (arriba) en /etc/salt/states/test.sls
. Los resultados están a continuación.
Agregué guiones bajos entre add script
y run script
, como lo sugiere @wirap. Esto me ha llevado más lejos como se muestra a continuación. Parece que hay algún error relacionado con la ruta del script en el cliente o servidor. No estoy seguro todavía. Parece que necesito llamar solo state.apply
con el nombre del .sls
archivo (sin la extensión .sls).
/etc/salt/master:
file_roots:
base:
- /etc/salt/states
Cuando ejecuto salt-ssh ahora, obtengo:
# salt-ssh '*' state.apply test
nod0:
----------
ID: add_script
Function: file.managed
Name: pam-setup-access
Result: False
Comment: Specified file pam-setup-access is not an absolute path
Started: 11:53:50.237379
Duration: 0.602 ms
Changes:
----------
ID: run_script
Function: cmd.run
Name: pam-setup-access
Result: False
Comment: Command "pam-setup-access" run
Started: 11:53:50.238629
Duration: 8.297 ms
Changes:
----------
pid:
1037
retcode:
127
stderr:
/bin/bash: pam-setup-access: command not found
stdout:
Summary for nod0
------------
Succeeded: 0 (changed=1)
Failed: 2
------------
Total states run: 2
Total run time: 8.899 ms
nod1:
----------
ID: add_script
Function: file.managed
Name: pam-setup-access
Result: False
Comment: Specified file pam-setup-access is not an absolute path
Started: 11:53:50.476743
Duration: 0.555 ms
Changes:
----------
ID: run_script
Function: cmd.run
Name: pam-setup-access
Result: False
Comment: Command "pam-setup-access" run
Started: 11:53:50.477906
Duration: 7.5 ms
Changes:
----------
pid:
30772
retcode:
127
stderr:
/bin/bash: pam-setup-access: command not found
stdout:
Summary for nod1
------------
Succeeded: 0 (changed=1)
Failed: 2
------------
Total states run: 2
Total run time: 8.055 ms
Respuesta1
- ¿Está seguro de que desea utilizar salt-ssh ("Ejecutar comandos y estados salt a través de ssh sin instalar un salt-minion"). Solo necesitas hacerlo de esta manera si no puedes instalar salt-minion en tus minions
- ¿Dónde pusiste tus estados? Normalmente en la configuración /etc/salt/master escribes elruta donde deberían estar sus archivos de estado
- No utilice el estado proporcionado en el ejemplo textualmente. Estoy bastante seguro de que no puedes tener un espacio en eldeclaración de identificación(
add script:
). - Su mensaje de error me es desconocido. este hiloaquíhace la siguiente sugerencia:"El error msgpack es muy engañoso, ya que no tiene ninguna relación. ¿Parece que uno de sus archivos server.conf tiene utf-8 no válido en un minion y el archivo no existe en el otro? "Sospecho firmemente que el espacio ('') en su identificación de estado. En mi experiencia, SaltStack puede generar mensajes de error bastante engañosos si tiene caracteres no válidos en sus archivos de estado o pilar.
Consejos adicionales:
- Miraraquípara obtener información sobre cómo configurar su árbol de estado.
- Tal vez use una instalación preinstalada de SaltStack (docker, Vagrant?) que ya funcione para aprender cómo funciona. Dado que UtahDave es bastante activo en SaltStack, elegiría sumanifestación(Descargo de responsabilidad: ¡No lo probé yo mismo!)
Actualizar: Cuando usas file.managed:
- el parámetro
source
defile.managed
es la ruta en su maestro (relativa a su ruta estatal), no el objetivo. - necesitas especificar la ruta en el destino, es por eso que recibes el error:"El archivo especificado pam-setup-access no es una ruta absoluta"
Ejemplo:
/root/bin/updater/scripts/pam-setup-access
file.managed:
- source: salt://files/pam-setup-access
es lo mismo que:
some-arbitrary-id
file.managed:
- name: /root/bin/updater/scripts/pam-setup-access
- source: salt://files/pam-setup-access
https://docs.saltstack.com/en/develop/ref/states/all/salt.states.file.html#module-salt.states.file
Lo mismo ocurre con cmd.run.
Leer elgeneralTutorial de SaltStack. Cuando diseñas estados, no importa si usas salt-ssh o salt. No dejes que esto te confunda.