1

我有一個Ansible劇本「運行all.yml」象下面這樣:加新創建的AWS EC2 IP到Ansible庫存在運行時

--- 
- include: aws-ec2-create-instance.yml 
- include: aws-ec2-install-software.yml 

第一.yml將創建EC2實例,第二.yml將爲這個新創建的實例安裝軟件。

如果我用兩個劇本分別運行其中的每個,它工作正常。

我的問題是,我希望把這兩個放在一個劇本「運行all.yml」,這樣我可以運行Ansible一次完成的,而不是兩個獨立運行的全過程。

那麼 「AWS-EC2創建-instance.yml」 創建EC2實例,不添加到在運行時Ansible庫存,那麼的IP地址的」 AWS-EC2安裝,software.yml 「將被跳過,因爲沒有找到主機。

我正在嘗試使用Ansible「add_host」模塊將IP添加到實例創建後,但它有點難看。有沒有更好的方式將EC2實例IP優雅地添加到庫存中?

非常感謝。

回答

1

這是可行的,我通過使用模塊「add_host」,它可以動態地添加主機到庫存已經加載到內存中庫存達到它,關鍵是要確保組名是正確的。

- name: add new instance to host group at runtime 
    add_host: hostname={{ ec2.instances[0].public_ip }} groupname=tag_{{ item.key }}_{{ item.value }} 
    with_dict: dict 
+0

請問你可以分享一下你在'dict'裏有什麼想法嗎?由於 –

+0

只是一些鍵值對,「item.key」和「item.value」這個字典在我的命令使用 – keypoint

+0

@keypoint你能幫我如何給這些主機本地寫入文件 –