나는 가능성있는 플레이 북을 만들고 있는데 아직 설치되지 않은 경우에만 루비 보석 (jekyll
)을 설치해야합니다. 나를 위해이 작업 대상 호스트의 명령 줄에서 실행 (우분투 14.04는) : 보석이 이미 설치되어있을 경우Ansible에서 복잡한 셸 표현식을 실행하는 방법?
gem list | grep "jekyll " > /dev/null || gem install jekyll
(gem list | grep "jekyll " > /dev/null) || gem install jekyll
, 그것은 다시 설치되지 않습니다. 그러나이 명령을 Aniable 게임 판에 넣으면 보석은 항상 설치됩니다.
- name: Install Jekyll only if not yet installed
shell: (gem list | grep "jekyll " > /dev/null) || gem install jekyll
이 기능을 사용하려면 어떻게해야합니까? 어떤 종류의 탈출이 필요한가요?
[gem] (http://docs.ansible.com/ansible/gem_module.html) 모듈을 사용하지 않는 이유가 있습니까? – Theo
글쎄 지금은 정말 바보 같아요, 보석 모듈이 있다는 것을 잊어 버렸습니다 ... 그러나, 나는 아직도 표현이 효과가 없었던 이유를 알고 싶습니다. –
내 추측은 도망 치기 쉬우 며 'continue if false'('||') 일 수 있습니다. 그러나 쉘 스크립트에 명령을 입력하고 쉘 스크립트를 전송하여 해당 이론을 테스트 할 수 있습니다. 또 다른 옵션은 수표를 제거하고'shell : gem install jekyll'을'creates :'인자와 함께 사용하여 보석이 라이브러리에 존재하는지 확인하는 것입니다. – Theo