2016-06-07 119 views
2

假設我想確保我的虛擬機具有devstack。只有先前沒有執行過使用puppet命令才能運行命令

exec{ "openstack": 
    command => "git clone https://git.openstack.org/openstack-dev/devstack", 
} 

這是我爲它編寫的傀儡代碼,它第一次正常工作。現在我想檢查一下。我只想在它尚未完成的情況下克隆存儲庫。如何做到這一點

回答

5

你說

exec{ 'openstack': 
    command => 'git clone https://git.openstack.org/openstack-dev/devstack', 
    cwd  => '/path/to/somewhere', 
    creates => '/path/to/somewhere/devstack', 
} 

現在,如果目錄/path/to/somewhere/devstack存在克隆命令將不會運行。

+0

我總是忘記'創造',但是,然後再次,我不經常使用exec或創建文件。 – ptierno

+0

非常感謝亞歷克斯! –

+0

你也可以在'git'上使用'-C'來移除'cwd'屬性。這是克隆到所需目錄的兩個答案中唯一的一個。 –

4
exec { "openstack": 
    command => 'git clone https://git.openstack.org/openstack-dev/devstack /path/to/devstack", 
    unless => 'test -d /path/to/devstack' 
} 

它是一個非常hacky的方式來處理這個。你應該看看vcsrepo木偶模塊https://github.com/puppetlabs/puppetlabs-vcsrepo

+0

感謝您的回答。你可以建議一些很好的教程,網站或書籍來學習木偶嗎?文件太混亂了。 –

+0

https://puppet.com/resources/books – ptierno

+0

說實話。當涉及到使用exec資源時,Alex Harvey對您的問題有更好的答案。不過我仍然覺得'vcsrepo'資源可能更適合。 – ptierno