Kabuk komutunu Ansible'dan çalıştır


0

Ben sadece dizini değiştiren bir kabuk betiğim var (burada dizin yolu verilmiştir).

kabuk dosyası

#!/bin/bash
p="dir/file/create"
cd "$p"
exec bash

Ansible oyun kitabı

---
 - hosts: localhost
   gather_facts: true
   become: true
   become_user: oracle
   become_flags: 'content-ansible'
   tasks:
   - name: changing dir now..
     command: sh /dir/file/create/vars.sh

ANSIBLE'deki dizin yolunu değiştirmek için bir kabuk betiği çalıştırmak ve dizinde sonraki kabuk dosyasını (# 2) çalıştırmak istiyorum (yine kabuk betiği).

Ansible playbook tamamlandı, ancak bir dizine girip kabuk betiğini (# 2) yürütemiyorum.

Yanıtlar:


4

Neden chdirparametreyi kullanmıyorsun ?

chdir: komutu çalıştırmadan önce bu dizine cd

Gönderen belgeler :

- name: Change the working directory to somedir/ before executing the command.
  command: somescript.sh
  args:
    chdir: somedir/

0

Komut dosyanızda tam PATH girmelisiniz:

#!/bin/bash
p="/dir/file/create"
cd "$p" 

COMMAND modülünün önünde sh kullanmayın:

   - name: changing dir now..
     command: /dir/file/create/vars.sh  

ancak 'kabuk' modülü, sorununuz için 'komut' modülünden daha iyidir.


-2

Bu seçeneği denedim ve benim için iyi görünüyor:

pre_tasks:
 - include_vars: vars.yml
tasks:
 - name: Do task...
   shell: cd "{{v_dir}}" && sh shell2.sh

chdirParametresi de kabuk modülü için kullanılabilir.
kaliko

Biraz fazladan bir kesmek. Teknik olarak işe yarayabilir, ancak her şeyi bir bash betiğine yazmaktan çok uzak değildir. Ansible, @kaliko'nun belirttiği gibi, bunu tamamlamak için gereken araçlara sahip.
0xSheepdog
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.