给定:
- 10 个计算机课程,包含 +/- 10 台计算机。
- 每个类都有一个 100Mbps 的上行链路。在地板上 - 千兆。
- CloneZilla 格式的 180 GB 图像。
- 主机名是已知的,在
inventory.ini.- 每个班级在其自己的组中:
[1403]等[1405]。
- 每个班级在其自己的组中:
需要什么:
- 将图像分散在每台计算机上。
- 通过 ansible (v2.7.6 + ubuntu 16.04) 管理部署。
- 每个类不得同时运行多个实时部署。其余机器正在等待确认。
什么不起作用:
- 提示
serial: 1没有帮助。只部署了一台计算机inventory.ini。 - 提示
serial: 10没有帮助。列表中的前 10 辆汽车已部署,就好像它没有按组划分一样。
一本不能按照您想要的方式工作的剧本:
---
- name: Run CloneZilla
hosts: all
strategy: linear
serial:
- 1
vars:
filename_rx_end: end-of-rx-label
tasks:
- name: Run CloneZilla deploy (send "yes" + Enter)
when: ansible_system == 'Linux'
block:
- command: sudo screen -x -X stuff 'y^M'
- local_action:
module: uri
url: 'http://{{ inventory_hostname }}/{{ filename_rx_end }}'
register: result
until: result.status == 200
retries: 10000
delay: 10
主要问题:
如何确保同时sudo screen -x -X stuff 'y^M'发送只有1403-01,1405-01等?1407-01然后打开1403-02,1405-02等1407-02。
可能的拐杖:
启动一个单独的会话tmux,创建 10 个终端并启动一个带有单独库存的剧本。但我不想。
和以前一样:
一切同时开始,慢慢地拖了好几天。在某些阶段,无法预测特定计算机是否运行良好或是否需要重做。
或者
在第一个版本中丢失一台计算机意味着整个楼层的重新启动。
这不能通过琐碎的手段来完成。
如果可以给Ansible打补丁或者不同组的主机数量相同,有解决办法:https ://stackoverflow.com/a/44670007/2795592
一切都归结为形式上的拐杖
tmux。原则上,您可以单独观看每个组,而不考虑整个过程。虽然这一切的第一次发射时间有点长。我已经克服了这个问题。从技术上讲,它看起来很笨拙,但 2 次大规模部署已经开始工作。当然,这可以更漂亮地表达出来,但现在至少是一个概念证明。所以:
亮点:我们
serial在清单文件中结合了主机的顺序。有 1 个清单文件,其中包含计算机列表和 3 个受众:
有一个 bash 脚本可以计算我们有多少第一台计算机,多少第二台计算机,等等。然后 - 它形成一列必须以相同序列写入的数字:
结果,我们得到:
该列表对应:我们有 3 台第一台计算机,2 台第二台计算机(发现损坏/被盗/蒸发的计算机),3 台第三台计算机。我们将排气写在 中
serial:,即 手动编辑剧本。库存本身(可以放在原始库存旁边)也必须通过
sort -t - -k 2 "$INI_FILE_4_CALC" | grep -E -v -i '(#|\[|^$)'.在所有这些神奇之后,该电路在 120 多台机器上完美运行了 3 次(我在上面写了 2。第 3 次 - 处理错误)次。
备注 1.重要的是要了解计算算法代码是钉在主机命名方式上的,并且要预先知道要处理的最大机器数。如果您的方案有所不同,那么愚蠢的示例复制粘贴将不起作用。
备注 2。
方案
不起作用。Ansible 立即想知道按什么顺序运行多少个。在里面,任务轨道也没有推。
PS大家都NG!