두 번째 인스턴스에서 무시 -요리사 - 어떻게 bash는 블록이 성공적으로 실행되었는지 확인하는 방법과 나는 다음과 같은 bash는 블록과 요리사의 조리법 데
bash "run_bash" do
user node[:value1][:user]
group node[:value1][:group]
cwd node[:value1][:install_dir] + '/tools/bin'
code <<-EOH
export MW_HOME=#{node[:value1][:mw_install_dir]}
export JAVA_HOME=#{node[:value1][:install_dir]}
export ORACLE_HOME=#{node[:value1][:install_dir]}
/usr/bin/expect -c 'spawn ./idmConfigTool.sh -configOAM input_file=#{Chef::Config[:file_cache_path]}/config.props
expect "Enter ID Store Bind DN password : "
send "#{OrcladminPassword}\r"
expect "Enter User Password for IDSTORE_PWD_SOFTWAREUSER: "
send "#{LDAPPassword }\r"
expect "Confirm User Password for IDSTORE_PWD_APPSOFTWAREUSER: "
send "#{AppLDAPPassword }\r"
expect "Enter User Password for IDSTORE_PWD_APP2ADMINUSER: "
send "#{App2AdminPassword }\r"
expect "Confirm User Password for IDSTORE_PWD_APP3ADMINUSER: "
send "#{App3AdminPassword}\r"
sleep 240
expect eof'
EOH
내가 chef-이 레시피를 실행하려고를 독점적으로이 조리법이 실행됩니다.
나는이 bash는 블록이 멱등 할 수 있도록하는 솔루션이 필요합니다. not_if, only_if 등의 보호 진술이 있습니다. 그러나 나는 그 경비원을 여기에서 구현할 방법을 찾지 못했습니다.
나는이 bash는 블록이 성공적으로 실행되면, 내가 타임 스탬프를 찾아 다음 실행이 일어나고있는 현재의 타임 스탬프와 비교 할 수 있습니다 하나 개의 솔루션 생각했다. 일치하지 않으면 나는 그것을 실행 무시할 수 있습니다. 이것은 내가 생각할 수있는 단순한 무력 작업입니다.이 시나리오에서 더 나은 최적의 솔루션을 제공하십시오.
내가 사용하는 거라고 [가드 not_if] (https://docs.chef.io/resource_common.html#not-if-examples) :: File.exists와 예제로? 설치 중에 작성된 파일을 대상으로 지정합니다. – Tensibai
@Tensibai : 내가 실행하려고하는 bash 블록은 '* .log'파일을 생성하지만 알 수없는 위치에 생성합니다. 내가 '* .log'를 주더라도 iam이 두 번째로 실행되는 상황이라면이 bash 블록을 건너 뛸 것입니다. 그러나 expect 블록에서 제공되는 암호가 다른 시간이 될 수도 있습니다. –
그런 다음 템플릿을 사용하여 스크립트를 만들고 템플릿 변경시 exécuté 리소스에 알립니다. – Tensibai