Ansible에서 셸 명령 실행

Ansible에서 셸 명령 실행

디렉토리만 변경하는 쉘 스크립트가 있습니다(디렉토리 경로는 여기에 제공됩니다).

쉘 파일

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

앤서블 매뉴얼

---
 - 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에서 디렉토리 경로를 변경하기 위해 쉘 스크립트를 실행하고 디렉토리에서 후속 쉘 파일(#2)을 실행하고 싶습니다(다시 쉘 스크립트).

Ansible 플레이북이 완료되었지만 디렉터리에 들어가 쉘 스크립트를 실행할 수 없습니다(#2).

답변1

왜 사용하지 않니?chdir범위?

chdir: 명령을 실행하기 전에 디렉토리로 cd

~에서문서:

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

답변2

스크립트에 전체 경로를 입력해야 합니다.

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

COMMAND 모듈 앞에 sh를 사용하지 마십시오:

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

그러나 문제의 경우 "shell" 모듈이 "command" 모듈보다 낫습니다.

답변3

이 옵션을 시도해 보았는데 괜찮은 것 같습니다.

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

관련 정보