如何在嵌套的for循环中使用ansible-playbook ?



我正在尝试编写一个脚本,将自动重新启动服务器在我们的环境。我们正在使用ansible-playbook -i rebootlist reboot。我们有大约400多台服务器,需要按顺序重新启动。所以,我想出了这个:

for j in $(cat rebootlist); do for k in $(cat $j); do ansible-playbook -i $k reboot.yml  >> $output; done; done

,

rebootlist有4个100个服务器列表

$ cat rebootlist
reboot00
reboot02
reboot03
reboot04

我在

下面得到这个警告

[WARNING]: No inventory was parsed, only implicit localhost is available

[WARNING]:如果主机列表为空,则只有localhost可用。注意,隐式localhost不匹配'all'

谢谢RaalK

让我们稍微简化一下数据。例如,给定文件

shell> cat rebootlist 
reboot00
reboot02
shell> cat reboot00
host000
host099
shell> cat reboot02
host100
host199

在下面的剧本中,在第一个剧本中创建一个动态组,并在第二个剧本中使用它,例如

shell> cat reboot.yml
- hosts: localhost
gather_facts: false
tasks:
- add_host:
name: "{{ item }}"
groups: "{{ group }}"
loop: "{{ lookup('file', group).splitlines() }}"
- hosts: "{{ group }}"
gather_facts: false
tasks:
- debug:
msg: "Reboot {{ inventory_hostname }}"

然后遍历文件rebootlist.e.g.

shell> for j in $(cat rebootlist); do ansible-playbook -e group=$j reboot.yml; done

给(简略)

PLAY [localhost] ***********************
TASK [add_host] ************************
ok: [localhost] => (item=host000)
ok: [localhost] => (item=host099)
PLAY [reboot00] ************************
TASK [debug] ***************************
ok: [host000] => 
msg: Reboot host000
ok: [host099] => 
msg: Reboot host099
PLAY RECAP *****************************
host000: ok=1    changed=0    unreachable=0
host099: ok=1    changed=0    unreachable=0
localhost: ok=1    changed=0    unreachable=0

PLAY [localhost] ***********************
TASK [add_host] ************************
ok: [localhost] => (item=host100)
ok: [localhost] => (item=host199)
PLAY [reboot02] ************************
TASK [debug] ***************************
ok: [host100] => 
msg: Reboot host100
ok: [host199] => 
msg: Reboot host199
PLAY RECAP *****************************
host100: ok=1    changed=0    unreachable=0
host199: ok=1    changed=0    unreachable=0
localhost: ok=1    changed=0    unreachable=0

我想建议一个好的应用程序,以更好的方式学习和理解unix和linux。在这个应用程序中,你可以找到一个很好的解释概念和图表。

[Link] - https://play.google.com/store/apps/details?id=com.kanha.unixlinuxpocketbook

最新更新