2016-08-10 3 views
0

최근에는 Ansible을 사용하기 시작했으며 무언가에 대한 도움이 필요합니다. 쉘 명령을 실행하기 위해 장치 세부 정보를 매개 변수로 가져오고 그 다음에 별표를 연결하려고합니다. 예를 들어, 장치가 /etc/sda 이면 셸 명령은 ls -l /dev/sda*이됩니다.Ansible 무비의 별표 표시

{ 
    "changed": true, 
    "cmd": "ls -l \"0\"* | wc -l", 
    "delta": "0:00:00.027338", 
    "end": "2016-08-10 14:15:12.200415", 
    "failed": true, 
    "failed_when_result": true, 
    "rc": 0, 
    "start": "2016-08-10 14:15:12.173077", 
    "stderr": "ls: cannot access 0*: No such file or directory", 
    "stdout": "0", 
    "stdout_lines": [ 
    "0" 
    ], 
    "warnings": [] 
} 

어느 하나가 문제가 무엇인지 그리고 내가 그것을 어떻게 해결할 수 있습니다 : 여기

- name: Get Hitachi Devices device details 
    shell: lsscsi | grep HITACHI | awk '{print $6}' 
    register: hitachiDevice 

    - name: Check if the volume is partitioned 
    shell: ls -l "{{ hitachiDevice.rc }}"* | wc -l 
    failed_when: hitachiDevice.rc != 1 

은 내가 스크립트를 실행 한 후 얻을 오류가 무엇입니까?

답변

2

hitachiDevice.rc에는 이전 명령의 결과 코드가 들어 있습니다.
grep이 성공하면 항상 0이 될 것입니다. * 0에 액세스 할 수 없습니다 :
는 그래서 다음 명령은 거의 항상 당신에게 오류

LS를 제공 ls -l 0* | wc -l 될 것입니다 것 내가 생각하는 그런 파일이나 디렉토리

하면, hitachiDevice.stdout 같은 것을 필요로하지 따라 당신이 성취하고자하는 바를

+0

장치의 파티션 ('/ etc/sda,/etc/sda1,'/ etc/sda1 ')이 첫 번째 명령에서 나에게 장치 이름/etc/sda2') 그리고 출력 라인 수를 계산하고 싶습니다. 행 수가 0이 아닌 경우 오류로 인해 장부 시작이 중지되어야합니다. – Omri

+0

첫 번째 작업 후에 변수의 내용을'- debug : var = hitachiDevice'로 검사하십시오 - 라인이 아닌 복잡한 변수입니다. –

+0

완료. ["/ dev/sdg" – Omri